File-RsyBak
view release on metacpan or search on metacpan
script/rsybak view on Meta::CPAN
#
# my @help;
#
# my $progname = $args{program_name};
# {
# my $sum = $args{program_summary} // $meta->{summary};
# last unless $sum;
# push @help, $progname, " - ", $sum, "\n\n";
# }
#
# my $clidocdata;
#
# push @help, "Usage:\n";
# {
# for (sort {
# ($common_opts->{$a}{order} // 99) <=>
# ($common_opts->{$b}{order} // 99) ||
# $a cmp $b
# } keys %$common_opts) {
# my $co = $common_opts->{$_};
# next unless $co->{usage};
script/rsybak view on Meta::CPAN
# require Perinci::Sub::To::CLIDocData;
# my $res = Perinci::Sub::To::CLIDocData::gen_cli_doc_data_from_meta(
# meta => $meta, meta_is_normalized => 1,
# common_opts => $common_opts,
# per_arg_json => $args{per_arg_json},
# per_arg_yaml => $args{per_arg_yaml},
# (ggls_res => $args{ggls_res}) x defined($args{ggls_res}),
# );
# die [500, "gen_cli_doc_data_from_meta failed: ".
# "$res->[0] - $res->[1]"] unless $res->[0] == 200;
# $clidocdata = $res->[2];
# my $usage = $clidocdata->{usage_line};
# $usage =~ s/\[\[prog\]\]/$progname/;
# push @help, " $usage\n";
# }
#
# {
# my $subcommands = $args{subcommands} or last;
# push @help, "\nSubcommands:\n";
# if (keys(%$subcommands) >= 12) {
# push @help, Text::Wrap::wrap(
# " ", " ", join(", ", sort keys %$subcommands)), "\n";
# } else {
# for my $sc_name (sort keys %$subcommands) {
# my $sc_spec = $subcommands->{$sc_name};
# next unless $sc_spec->{show_in_help} //1;
# push @help, " $sc_name\n";
# }
# }
# }
#
# {
# last unless @{ $clidocdata->{examples} };
# push @help, "\nExamples:\n";
# my $i = 0;
# my $egs = $clidocdata->{examples};
# for my $eg (@$egs) {
# $i++;
# my $cmdline = $eg->{cmdline};
# $cmdline =~ s/\[\[prog\]\]/$progname/;
# push @help, "\n" if $eg->{summary} && $i > 1;
# if ($eg->{summary}) {
# push @help, " $eg->{summary}:\n";
# } else {
# push @help, "\n";
# }
script/rsybak view on Meta::CPAN
# $meta->{'description.alt.env.cmdline'} // $meta->{description};
# last unless $desc;
# $desc =~ s/\A\n+//;
# $desc =~ s/\n+\z//;
# push @help, "\n", $desc, "\n" if $desc =~ /\S/;
# }
#
# {
# require Data::Dmp;
#
# my $opts = $clidocdata->{opts};
# last unless keys %$opts;
#
# my %options_by_cat;
# for my $optkey (keys %$opts) {
# for my $cat (@{ $opts->{$optkey}{categories} }) {
# push @{ $options_by_cat{$cat} }, $optkey;
# }
# }
#
# my $cats_spec = $clidocdata->{option_categories};
# for my $cat (sort {
# ($cats_spec->{$a}{order} // 50) <=> ($cats_spec->{$b}{order} // 50)
# || $a cmp $b }
# keys %options_by_cat) {
# my @opts = sort {length($b)<=>length($a)}
# @{ $options_by_cat{$cat} };
# my $len = length($opts[0]);
# @opts = sort {
# (my $a_without_dash = $a) =~ s/^-+//;
# (my $b_without_dash = $b) =~ s/^-+//;
script/rsybak view on Meta::CPAN
# require Perinci::Sub::GetArgs::Argv;
# Perinci::Sub::GetArgs::Argv::gen_getopt_long_spec_from_meta(
# meta=>$meta, meta_is_normalized=>1, common_opts=>$common_opts,
# per_arg_json => $args{per_arg_json},
# per_arg_yaml => $args{per_arg_yaml},
# );
# };
# $ggls_res->[0] == 200 or return $ggls_res;
#
# my $args_prop = $meta->{args} // {};
# my $clidocdata = {
# option_categories => {},
# example_categories => {},
# };
#
# {
# my @args;
# my %args_prop = %$args_prop;
# my $max_pos = -1;
# for (values %args_prop) {
# $max_pos = $_->{pos}
script/rsybak view on Meta::CPAN
# }
# if ($arg_spec->{req}) {
# push @args, "<$arg>";
# } else {
# push @args, "[$arg]";
# }
# $args[-1] .= " ..." if $arg_spec->{greedy};
# delete $args_prop{$arg};
# }
# unshift @args, "[options]" if keys(%args_prop) || keys(%$common_opts);
# $clidocdata->{usage_line} = "[[prog]]".
# (@args ? " ".join(" ", @args) : "");
# }
#
# my %opts;
# {
# my $ospecs = $ggls_res->[3]{'func.specmeta'};
# my (@k, @k_aliases);
# OSPEC1:
# for (sort keys %$ospecs) {
# my $ospec = $ospecs->{$_};
script/rsybak view on Meta::CPAN
# $opt->{$_} = $ospec->{$_} if defined $ospec->{$_};
# }
#
# for (qw/req pos greedy is_password links tags/) {
# $opt->{$_} = $arg_spec->{$_} if defined $arg_spec->{$_};
# }
#
# {
# local $arg_spec->{tags} = ['category0:main']
# if !$arg_spec->{tags} || !@{$arg_spec->{tags}};
# _add_category_from_spec($clidocdata->{option_categories},
# $opt, $arg_spec, "options", 1);
# }
# _add_default_from_arg_spec($opt, $arg_spec);
#
# } else {
#
# my $spec = $common_opts->{$ospec->{common_opt}};
#
# my $show_neg = $ospec->{parsed}{is_neg} && $spec->{default};
#
script/rsybak view on Meta::CPAN
# $rimeta->langprop({lang=>$lang}, 'summary.alt.bool.not') :
# $rimeta->langprop({lang=>$lang}, 'summary'),
# (schema => $spec->{schema}) x !!$spec->{schema},
# ('x.schema.entity' => $spec->{'x.schema.entity'}) x !!$spec->{'x.schema.entity'},
# ('x.schema.element_entity' => $spec->{'x.schema.element_entity'}) x !!$spec->{'x.schema.element_entity'},
# description =>
# $rimeta->langprop({lang=>$lang}, 'description'),
# (default => $spec->{default}) x !!(exists($spec->{default}) && !$show_neg),
# };
#
# _add_category_from_spec($clidocdata->{option_categories},
# $opt, $spec, "options", 1);
#
# }
#
# $opts{$optkey} = $opt;
# }
#
# OPT1:
# for my $k (keys %opts) {
# my $opt = $opts{$k};
script/rsybak view on Meta::CPAN
# next if $arg_opt->{is_alias} || $arg_opt->{is_base64} ||
# $arg_opt->{is_json} || $arg_opt->{is_yaml};
# next unless defined($arg_opt->{arg}) &&
# $arg_opt->{arg} eq $opt->{arg};
# $opt->{main_opt} = $k2;
# next OPT1;
# }
# }
#
# }
# $clidocdata->{opts} = \%opts;
#
# my @examples;
# {
# my $examples = $meta->{examples} // [];
# my $has_cats = _has_cats($examples);
#
# for my $eg (@$examples) {
# my $rimeta = rimeta($eg);
# my $argv;
# my $cmdline;
script/rsybak view on Meta::CPAN
# my $qarg = String::ShellQuote::shell_quote($arg);
# $cmdline .= " $qarg";
# }
# }
# my $egdata = {
# cmdline => $cmdline,
# summary => $rimeta->langprop({lang=>$lang}, 'summary'),
# description => $rimeta->langprop({lang=>$lang}, 'description'),
# example_spec => $eg,
# };
# _add_category_from_spec($clidocdata->{example_categories},
# $egdata, $eg, "examples", $has_cats);
# push @examples, $egdata;
# }
# }
# $clidocdata->{examples} = \@examples;
#
# [200, "OK", $clidocdata];
#}
#
#1;
#
#__END__
#
### Perinci/Sub/Util.pm ###
#package Perinci::Sub::Util;
#
#our $DATE = '2017-01-31';
( run in 0.317 second using v1.01-cache-2.11-cpan-454fe037f31 )