Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package perl-MooseX-App for openSUSE:Factory checked in at 2024-08-14 14:16:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-MooseX-App (Old) and /work/SRC/openSUSE:Factory/.perl-MooseX-App.new.7232 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "perl-MooseX-App" Wed Aug 14 14:16:10 2024 rev:8 rq:1193826 version:1.430.1 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-MooseX-App/perl-MooseX-App.changes 2024-03-09 20:56:27.862497879 +0100 +++ /work/SRC/openSUSE:Factory/.perl-MooseX-App.new.7232/perl-MooseX-App.changes 2024-08-14 14:16:54.637705181 +0200 @@ -1,0 +2,7 @@ +Fri Aug 9 18:26:30 UTC 2024 - Frank Schreiner <FSchreiner@suse.com> + +- Add 0001_fix_bashcompletion_with_subcommands.patch + * Fixes: (#72) https://github.com/maros/MooseX-App/issues/72 + * UPSTREAM PR: https://github.com/maros/MooseX-App/pull/73 + +------------------------------------------------------------------- New: ---- 0001_fix_bashcompletion_with_subcommands.patch BETA DEBUG BEGIN: New: - Add 0001_fix_bashcompletion_with_subcommands.patch * Fixes: (#72) https://github.com/maros/MooseX-App/issues/72 BETA DEBUG END: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-MooseX-App.spec ++++++ --- /var/tmp/diff_new_pack.SeptXg/_old 2024-08-14 14:16:55.601745481 +0200 +++ /var/tmp/diff_new_pack.SeptXg/_new 2024-08-14 14:16:55.605745648 +0200 @@ -18,7 +18,7 @@ %define cpan_name MooseX-App Name: perl-MooseX-App -Version: 1.430.0 +Version: 1.430.1 Release: 0 %define cpan_version 1.43 License: Artistic-1.0 OR GPL-1.0-or-later @@ -26,6 +26,8 @@ URL: https://metacpan.org/release/%{cpan_name} Source0: https://cpan.metacpan.org/authors/id/M/MA/MAROS/%{cpan_name}-%{cpan_version}.tar.gz Source1: cpanspec.yml +# PATCH-FIX-UPSTREAM M0ses https://github.com/maros/MooseX-App/issues/72 +Patch0: 0001_fix_bashcompletion_with_subcommands.patch BuildArch: noarch BuildRequires: perl BuildRequires: perl-macros @@ -111,7 +113,7 @@ keywords respectively. %prep -%autosetup -n %{cpan_name}-%{cpan_version} +%autosetup -n %{cpan_name}-%{cpan_version} -p 1 find . -type f ! -path "*/t/*" ! -name "*.pl" ! -path "*/bin/*" ! -path "*/script/*" ! -path "*/scripts/*" ! -name "configure" -print0 | xargs -0 chmod 644 ++++++ 0001_fix_bashcompletion_with_subcommands.patch ++++++ diff --git a/lib/MooseX/App/Plugin/BashCompletion/Command.pm b/lib/MooseX/App/Plugin/BashCompletion/Command.pm index afe5c66..cdc1bc2 100644 --- a/lib/MooseX/App/Plugin/BashCompletion/Command.pm +++ b/lib/MooseX/App/Plugin/BashCompletion/Command.pm @@ -17,8 +17,10 @@ sub bash_completion { my %command_map; my $app_meta = $app->meta; my $commands = $app_meta->app_commands; - my @commands_to_complete = grep { $_ ne 'bash_completion' } sort keys %{$commands}; - my $command_list = join (' ', @commands_to_complete); + my @filtered_cmds = grep { $_ ne 'bash_completion' } keys %{$commands}; + my %unique_cmds = map { my @c = split ' ', $_; ($c[0], 1); } @filtered_cmds; + my @cmds2complete = sort(@filtered_cmds); + my $command_list = join (' ', sort(keys(%unique_cmds))); my $package = __PACKAGE__; my $prefix = $app_meta->app_base; @@ -29,14 +31,17 @@ sub bash_completion { $prefix =~ tr/./_/; - foreach my $command (@commands_to_complete) { + foreach my $command (@cmds2complete) { my $command_class = $commands->{$command}; Class::Load::load_class($command_class); - #my @parameters = $app_meta->command_usage_attributes($command_class->meta,'parameter'); - my @options = $app_meta->command_usage_attributes($command_class->meta,[qw(option proto)]); + my @sub_map = map { $_ =~ /^${command} (\w+)/; $1; } sort(@filtered_cmds); + my @sub_cmds = grep { defined $_ } @sub_map; + my @options = $app_meta->command_usage_attributes( + $command_class->meta, + [qw(option proto)], + ); $command_map{$command} = { - #parameters => [ map { $_->is_required } @parameters ], - options => [ map { $_->cmd_usage_name } @options ], + options => [@sub_cmds, sort(map { $_->cmd_usage_name } @options)], }; } @@ -60,9 +65,11 @@ _${prefix}_macc_help() { EOT foreach my $command (sort keys %command_map) { - $syntax .= "_${prefix}_macc_${command}() {\n _${prefix}_compreply \""; + my $fn_suffix = $command; + $fn_suffix =~ s/ /_/g; + $syntax .= "_${prefix}_macc_${fn_suffix}() {\n _${prefix}_compreply \""; #$syntax .= join(" ", @{$data->{parameters}}); - $syntax .= join(" ", sort @{$command_map{$command}->{options}}); + $syntax .= join(" ", @{$command_map{$command}->{options}}); $syntax .= "\"\n}\n\n"; } diff --git a/t/08_plugin_various.t b/t/08_plugin_various.t index d84ad23..179431e 100644 --- a/t/08_plugin_various.t +++ b/t/08_plugin_various.t @@ -19,6 +19,10 @@ subtest 'Bash completion' => sub { like($bash_completion,qr/_test03_macc_somecommand\(\)\s\{/,'some_command present'); like($bash_completion,qr/--global_option/,'global_option present'); like($bash_completion,qr/--roleattr/,'roleattr present'); + like($bash_completion,qr/_test03_macc_cmdwithsubcommands_subb/,'subcommand B present'); + like($bash_completion,qr/_test03_macc_cmdwithsubcommands_subb/,'subcommand B present'); + unlike($bash_completion,qr/_test03_macc_cmdwithsubcommands subb/,'subcommand B present'); + unlike($bash_completion,qr/_test03_macc_cmdwithsubcommands subb/,'subcommand B present'); unlike($bash_completion,qr/bash_completion/,'bash_completion is not included'); }; diff --git a/t/testlib/Test03/CmdWithSubCommands/SubA.pm b/t/testlib/Test03/CmdWithSubCommands/SubA.pm new file mode 100644 index 0000000..bf62c43 --- /dev/null +++ b/t/testlib/Test03/CmdWithSubCommands/SubA.pm @@ -0,0 +1,14 @@ +package Test03::CmdWithSubCommands::SubA; + +use MooseX::App::Command; + +sub run { + my ($self) = @_; + use Data::Dumper; + { + local $Data::Dumper::Maxdepth = 2; + warn __FILE__.':line'.__LINE__.':'.Dumper($self); + } +} + +1; diff --git a/t/testlib/Test03/CmdWithSubCommands/SubB.pm b/t/testlib/Test03/CmdWithSubCommands/SubB.pm new file mode 100644 index 0000000..bb2678f --- /dev/null +++ b/t/testlib/Test03/CmdWithSubCommands/SubB.pm @@ -0,0 +1,14 @@ +package Test03::CmdWithSubCommands::SubB; + +use MooseX::App::Command; + +sub run { + my ($self) = @_; + use Data::Dumper; + { + local $Data::Dumper::Maxdepth = 2; + warn __FILE__.':line'.__LINE__.':'.Dumper($self); + } +} + +1; ++++++ cpanspec.yml ++++++ --- /var/tmp/diff_new_pack.SeptXg/_old 2024-08-14 14:16:55.649747487 +0200 +++ /var/tmp/diff_new_pack.SeptXg/_new 2024-08-14 14:16:55.653747655 +0200 @@ -7,8 +7,8 @@ #sources: # - source1 # - source2 -#patches: -# bar.patch: +patches: + 0001_fix_bashcompletion_with_subcommands.patch: -p1 PATCH-FIX-UPSTREAM M0ses https://github.com/maros/MooseX-App/issues/72 preamble: |- BuildRequires: perl(Config::Any) #post_prep: |-