]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/CLIHandler.pm
CLIHandler: remove spurious abort()
[pve-common.git] / src / PVE / CLIHandler.pm
index 13904e22b239878068f7d27213e496df4926646f..802ce87aa0c5d7224255319fcc06db407eca6b03 100644 (file)
@@ -190,7 +190,6 @@ sub generate_usage_str {
     my $param_cb = $gen_param_mapping_func->($cli_handler_class);
 
     my ($subcmd, $def, undef, undef, $cmdstr) = resolve_cmd($cmd);
-    $abort->("unknown command '$cmdstr'") if !defined($def) && ref($cmd) eq 'ARRAY';
 
     my $generate;
     $generate = sub {
@@ -337,7 +336,7 @@ sub print_usage_short {
     print $fd "ERROR: $msg\n" if $msg;
     print $fd "USAGE: $exename <COMMAND> [ARGS] [OPTIONS]\n\n";
 
-    print {$fd} generate_usage_str('short', $cmd, ' ' x 7, "\n", sub {
+    print {$fd} generate_usage_str('short', $cmd, ' ' x 7, $cmd ? '' : "\n", sub {
        my ($h) = @_;
        return sort {
            if (ref($h->{$a}) eq 'ARRAY' && ref($h->{$b}) eq 'ARRAY') {
@@ -490,6 +489,30 @@ complete -o default -C '$exename bashcomplete' $exename
 __EOD__
 }
 
+sub generate_zsh_completions {
+    my ($class) = @_;
+
+    # generate zsh completion config
+
+    $exename = &$get_exe_name($class);
+
+    print <<__EOD__;
+#compdef _$exename $exename
+
+function _$exename() {
+    local cwords line point cmd curr prev
+    cwords=\${#words[@]}
+    line=\$words
+    point=\${#line}
+    cmd=\${words[1]}
+    curr=\${words[cwords]}
+    prev=\${words[cwords-1]}
+    compadd \$(COMP_CWORD="\$cwords" COMP_LINE="\$line" COMP_POINT="\$point" \\
+       $exename bashcomplete "\$cmd" "\$curr" "\$prev")
+}
+__EOD__
+}
+
 sub generate_asciidoc_synopsys {
     my ($class) = @_;
     $class->generate_asciidoc_synopsis();