1

Merged getopt branch

This commit is contained in:
eleksir
2019-01-05 03:02:54 +03:00
2 changed files with 29 additions and 18 deletions

1
TODO
View File

@@ -1,6 +1,5 @@
Технический долг и планируемые доработки. Технический долг и планируемые доработки.
* внедрить GetOpt, чтобы корректно парсить аргументы ком.строки стандартными средствами. Для этого нужно будет использовать внешние по отношению к Perl модули, GetOpt и GetOpt::Long
* XML::Simple умеет работать не только с деревом, но и с потоком xml, в случае с потоком должно потребляться меньше памяти, но работать с ним сложнее * XML::Simple умеет работать не только с деревом, но и с потоком xml, в случае с потоком должно потребляться меньше памяти, но работать с ним сложнее
* добавить возможность работы с sqlite-метаданными и перейти на этот метод по-умолчанию * добавить возможность работы с sqlite-метаданными и перейти на этот метод по-умолчанию
* добавить пример spec-файла * добавить пример spec-файла

46
rrclone
View File

@@ -15,6 +15,7 @@ use URI::URL;
use Data::Dumper; use Data::Dumper;
use HTTP::Tiny; use HTTP::Tiny;
use IO::Socket::SSL; # implicit requirement in order to HTTP::Tiny work with https use IO::Socket::SSL; # implicit requirement in order to HTTP::Tiny work with https
use Getopt::Long;
sub mythread(); sub mythread();
sub dlfunc(@); sub dlfunc(@);
@@ -25,29 +26,31 @@ sub path_normalize_by_string_manipulation($);
sub getfilenames($); sub getfilenames($);
sub noslash($); sub noslash($);
sub dbg($); sub dbg($);
sub version();
help(0) unless (defined $ARGV[0]); my ($help, $verbose, $noclean, $version);
help(1) unless (defined $ARGV[1]);
help(0) if ($ARGV[0] eq '--help'); GetOptions(
help(0) if ($ARGV[0] eq '-h'); "help" => \$help,
"verbose" => \$verbose,
"noclean" => \$noclean,
"version" => \$version
);
version() if ($version);
help(0) if ($help);
my $noclean = 0;
my $DEBUG = 0; my $DEBUG = 0;
$DEBUG = 1 if ($verbose);
$noclean = 1 if ($noclean);
if (defined($ARGV[0]) and $ARGV[0] eq '--noclean') { my $BASEURL = $ARGV[0] // '';
$noclean = 1; my $BASEDIR = $ARGV[1] // '';
}
my $BASEURL = $ARGV[0]; help(0) unless ($BASEURL);
my $BASEDIR = $ARGV[1]; help(1) unless ($BASEDIR);
if ($noclean == 1) {
help(1) unless (defined $ARGV[2]);
$BASEURL = $ARGV[1];
$BASEDIR = $ARGV[2];
}
# check if there is trailing slash at the end of url and path
noslash($BASEURL); noslash($BASEURL);
noslash($BASEDIR); noslash($BASEDIR);
@@ -173,7 +176,7 @@ exit 0;
sub help($) { sub help($) {
my $rc = shift; my $rc = shift;
my $help = <<'HELP'; my $help = <<'HELP';
Usage: cr.pl [--noclean] http://source/url/ /destination/dir/ Usage: rrclone.pl [--noclean] http://source/url/ /destination/dir/
Where Where
--noclean is optional argument, if it specified, no cleanup operation will --noclean is optional argument, if it specified, no cleanup operation will
@@ -188,6 +191,11 @@ Destination is the folder where all files and metadata will be downloaded, if
folder does not exist it will be created. Must contain trailng slash char. folder does not exist it will be created. Must contain trailng slash char.
For example: For example:
/var/www/htdocs/repo/ /var/www/htdocs/repo/
Other options:
--help - show this message
--verbose - increases output verbosity
--version - show version number and quit
HELP HELP
syswrite STDOUT, $help; syswrite STDOUT, $help;
@@ -390,4 +398,8 @@ sub dbg($) {
} }
} }
sub version() {
syswrite STDOUT, "rrclone 1.1\n";
exit 0;
}
__END__ __END__