git-remote-mediawiki: put long code into a subroutine

Signed-off-by: Célestin Matte <celestin.matte@ensimag.fr>
Signed-off-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Célestin Matte 2013-06-14 15:50:29 +02:00 коммит произвёл Junio C Hamano
Родитель 42e91929ae
Коммит 6a316beeee
1 изменённых файлов: 32 добавлений и 24 удалений

Просмотреть файл

@ -122,32 +122,10 @@ $wiki_name =~ s{[^/]*://}{};
$wiki_name =~ s/^.*@//;
# Commands parser
my @cmd;
while (<STDIN>) {
chomp;
@cmd = split(/ /);
if (defined($cmd[0])) {
# Line not blank
if ($cmd[0] eq "capabilities") {
die("Too many arguments for capabilities\n") if (defined($cmd[1]));
mw_capabilities();
} elsif ($cmd[0] eq "list") {
die("Too many arguments for list\n") if (defined($cmd[2]));
mw_list($cmd[1]);
} elsif ($cmd[0] eq "import") {
die("Invalid arguments for import\n") if ($cmd[1] eq "" || defined($cmd[2]));
mw_import($cmd[1]);
} elsif ($cmd[0] eq "option") {
die("Too many arguments for option\n") if ($cmd[1] eq "" || $cmd[2] eq "" || defined($cmd[3]));
mw_option($cmd[1],$cmd[2]);
} elsif ($cmd[0] eq "push") {
mw_push($cmd[1]);
} else {
print STDERR "Unknown command. Aborting...\n";
last;
}
} else {
# blank line: we should terminate
if (!parse_command($_)) {
last;
}
@ -157,6 +135,36 @@ while (<STDIN>) {
########################## Functions ##############################
sub parse_command {
my ($line) = @_;
my @cmd = split(/ /, $line);
if (!defined $cmd[0]) {
return 0;
}
if ($cmd[0] eq "capabilities") {
die("Too many arguments for capabilities\n")
if (defined($cmd[1]));
mw_capabilities();
} elsif ($cmd[0] eq "list") {
die("Too many arguments for list\n") if (defined($cmd[2]));
mw_list($cmd[1]);
} elsif ($cmd[0] eq "import") {
die("Invalid arguments for import\n")
if ($cmd[1] eq "" || defined($cmd[2]));
mw_import($cmd[1]);
} elsif ($cmd[0] eq "option") {
die("Too many arguments for option\n")
if ($cmd[1] eq "" || $cmd[2] eq "" || defined($cmd[3]));
mw_option($cmd[1],$cmd[2]);
} elsif ($cmd[0] eq "push") {
mw_push($cmd[1]);
} else {
print STDERR "Unknown command. Aborting...\n";
return 0;
}
return 1;
}
# MediaWiki API instance, created lazily.
my $mediawiki;