ph
view release on metacpan or search on metacpan
}
}
sub CMD_import {
my $remote = 'origin';
my $homepage = '';
my $description = '';
my $private = 0;
GetOptions(
'remote=s' => \$remote,
'homepage=s' => \$homepage,
'description=s' => \$description,
'private' => \$private,
);
if (`git config --local --get remote.$remote.fetch`) {
Carp::croak "Remote [$remote] already exists. Try specifying another one using --remote.";
}
my $pwd = Cwd::getcwd();
my $name = File::Basename::basename($pwd);
exit unless prompt("Can I import $pwd to $name in github? [y/N] ", -yes);
my $res = $pithub->repos->create(
data => {
name => $name,
homepage => $homepage,
description => $description,
public => $private ? 0 : 1,
}
);
$res->success or die dump_content($res->content);
dump_content($res->content);
my $ssh_url = $res->content->{ssh_url} // die "Missing ssh_url";
print "Adding GitHub repo $name as remote [$remote].\n";
system(qw(git remote add), $remote, $ssh_url);
if (!`git config --get branch.master.remote`) {
print "Setting up remote [$remote] for master branch.\n";
system(qw(git config branch.master.remote), $remote);
system(qw(git config branch.master.merge refs/heads/master));
my $rebase = `git config --get branch.autosetuprebase`;
chomp $rebase;
if ($rebase && ($rebase eq 'remote' || $rebase eq 'always')) {
system(qw(git config branch.master.rebase true));
}
}
print "Pushing to remote [$remote]\n";
system(qw(git push), $remote, qw(master));
print "Done.\n";
}
# -------------------------------------------------------------------------
sub _get_user_repo_simple() {
my ($repo, $user);
if (@ARGV==2) {
($user, $repo) = @ARGV;
} elsif (@ARGV==1) {
if ($ARGV[0] =~ m{/}) {
($user, $repo) = split m{/}, $ARGV[0];
}
else {
($user, $repo) = ($me, $ARGV[0]);
}
}
return ($user, $repo);
}
sub _get_user_repo {
my ($cmd) = @_;
my ($user, $repo) = _get_user_repo_simple();
$user // die "Usage: $0 $cmd miyagawa/Plack\n";
return ($user, $repo);
}
sub _get_user_repo_with_current_repo {
my ($cmd) = @_;
my ($user, $repo) = _get_user_repo_simple();
unless ($user && $repo) {
my $remote = `git remote -v`;
if ($remote =~ m{git://github\.com\/([^/ ]+)\/([^/ ]+)\.git}) {
($user, $repo) = ($1, $2);
} elsif ($remote =~ m{git\@github\.com:([^/]+)/([^/]+)\.git}) {
($user, $repo) = ($1, $2);
} else {
die "Usage: $0 $cmd plack/Plack\n";
}
}
return ($user, $repo);
}
our $DUMP_DEPTH = 0;
sub dump_content {
local $DUMP_DEPTH = 0;
my $c = shift;
_dump_content($c);
}
sub _dump_content {
my $c = shift;
if (ref $c eq 'HASH') {
for my $key (sort keys %$c) {
print(' ' x ($DUMP_DEPTH*2));
print($key . ': ');
if (ref $c->{$key} eq 'HASH') {
print("\n");
local $DUMP_DEPTH = $DUMP_DEPTH + 1;
_dump_content($c->{$key});
} else {
print("$c->{$key}");
print("\n");
}
}
}
}
# -------------------------------------------------------------------------
sub save_auth_result {
my $res = shift;
( run in 1.290 second using v1.01-cache-2.11-cpan-71847e10f99 )