Changeset 3179


Ignore:
Timestamp:
03/04/09 10:54:32 (3 years ago)
Author:
szabgab
Message:

SVK: allot to see the status of a directory or of a project

Location:
trunk/Padre-Plugin-SVK
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Padre-Plugin-SVK/Changes

    r3153 r3179  
    11Revision history for Padre-Plugin-SVK 
    22 
    3 0.01     
     30.02 
     4        Add Padre and SVK as dependency 
     5        Add status of this directory and this project. 
     6 
     70.01    2009.03.03  
    48        First version, released on an unsuspecting world. 
    59 
  • trunk/Padre-Plugin-SVK/lib/Padre/Plugin/SVK.pm

    r3153 r3179  
    99use Padre::Plugin (); 
    1010 
    11 use Capture::Tiny qw(capture_merged); 
     11use Capture::Tiny  qw(capture_merged); 
     12use File::Basename (); 
     13use File::Spec; 
    1214 
    1315our $VERSION = '0.01'; 
     
    6971        'About' => sub { $self->show_about }, 
    7072        'Commit' => sub { $self->svk_commit }, 
    71         'Status' => sub { $self->svk_status }, 
     73        'Status of File' => sub { $self->svk_status_of_file }, 
     74        'Status of Dir' => sub { $self->svk_status_of_dir }, 
     75        'Status of Project' => sub { $self->svk_status_of_project }, 
    7276    ]; 
    7377} 
     
    115119 
    116120sub svk_status { 
     121    my ($self, $path) = @_; 
     122     
     123    my $main = Padre->ide->wx->main; 
     124    my $out = capture_merged(sub { system "svk status $path" }); 
     125    $main->message($out, "SVK Status of $path"); 
     126    return; 
     127} 
     128sub svk_status_of_file { 
    117129    my ($self) = @_; 
    118130     
    119131    my $main = Padre->ide->wx->main; 
    120132    my $doc = $main->current->document; 
    121     my $filename = $doc->filename; 
    122     my $out = capture_merged(sub { system "svk status $filename" }); 
    123     $main->message($out, "SVK Status of $filename"); 
     133    return $main->error("No document found") if not $doc; 
     134    $self->svk_status($doc->filename); 
    124135    return; 
    125136} 
     137sub svk_status_of_dir { 
     138    my ($self) = @_; 
     139     
     140    my $main = Padre->ide->wx->main; 
     141    my $doc = $main->current->document; 
     142    return $main->error("No document found") if not $doc; 
     143    my $filename = $doc->filename; 
     144    $self->svk_status(File::Basename::dirname($filename)); 
     145 
     146    return; 
     147} 
     148 
     149# TODO guess current project 
     150sub svk_status_of_project { 
     151    my ($self) = @_; 
     152     
     153    my $main = Padre->ide->wx->main; 
     154    my $doc = $main->current->document; 
     155    return $main->error("No document found") if not $doc; 
     156    my $filename = $doc->filename; 
     157    return $main->error("File type not yet supported") if not $filename =~ /\.pm$/; 
     158    my $olddir = File::Basename::dirname($filename); 
     159    my $dir    = File::Basename::dirname($olddir); 
     160    print "DIR: $olddir\n     $dir\n"; 
     161    while (1) { 
     162        last if $olddir eq $dir; 
     163        last if -e File::Spec->catfile($dir, 'Makefile.PL'); 
     164        last if -e File::Spec->catfile($dir, 'Build.PL'); 
     165        print "trying $dir\n"; 
     166        $olddir = $dir; 
     167        $dir = File::Basename::dirname($dir); 
     168    } 
     169    return $main->error("Could not find project root") if $dir eq $olddir;   
     170    $self->svk_status($dir); 
     171 
     172    return; 
     173} 
     174 
    126175 
    1271761; 
Note: See TracChangeset for help on using the changeset viewer.