App-RepoSync
view release on metacpan or search on metacpan
lib/App/RepoSync/Command/Export.pm view on Meta::CPAN
my ($export_file,@dirs) = @args;
my $cwd = getcwd();
$export_file ||= 'repos.yml';
@dirs = getcwd() unless @dirs;
my @data = ();
for( @dirs ) {
say "scanning $_";
chdir $cwd;
my @repos = App::RepoSync::Export->run( $_ );
push @data, @repos;
}
chdir $cwd;
say "writing $export_file...";
YAML::DumpFile( $export_file , {
version => 0.1,
repos => \@data,
});
say "done. @{[ scalar @data ]} repositories exported.";
}
1;
lib/App/RepoSync/Export.pm view on Meta::CPAN
use File::Find::Rule;
use File::Basename;
use Config::Tiny;
use App::RepoSync::SystemUtil qw(system_or_die chdir_qx);
use Term::ANSIColor;
sub parse_svn_info {
my $cmd = shift || 'svn info';
my $info;
unless( $info = qx(LC_ALL=C $cmd 2> /dev/null ) ) {
say 'svn: info failed: ' . getcwd;
# if uprade is needed,
my $ret = qx(LC_ALL=C $cmd 2>&1);
if ($cmd eq 'svn info' && $ret =~ /svn upgrade/) {
say "svn: try upgrading: " . getcwd;
system_or_die('svn upgrade 2>&1 > /dev/null');
}
}
unless( $info = qx(LC_ALL=C $cmd 2> /dev/null ) ) {
say "svn: info still failed: " . getcwd;
return;
}
my ($url) = ($info =~ m{URL: (\S+)});
my ($revision) = ($info =~ m{Revision: (\S+)});
return {
url => $url,
revision => $revision,
};
}
( run in 0.574 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )