]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/CLIHandler.pm
followup: use defined to check if a hash element can be accessed
[pve-common.git] / src / PVE / CLIHandler.pm
index 5c0671f5e53ff388b5a4f36977938548eb2c0727..2f607cd2a59dce7f4dd7771884b25712d753beed 100644 (file)
@@ -217,7 +217,7 @@ sub generate_usage_str {
                } else {
                    next if $def->{$cmd}->{alias};
 
-                   my $substr = $generate->($indent, $separator, $def->{$cmd}, "$prefix $cmd");
+                   my $substr = $generate->($indent, '', $def->{$cmd}, "$prefix $cmd");
                    if ($substr) {
                        $substr .= $separator if $substr !~ /\Q$separator\E{2}/;
                        $str .= $substr;
@@ -335,9 +335,9 @@ sub print_usage_short {
     $assert_initialized->();
 
     print $fd "ERROR: $msg\n" if $msg;
-    print $fd "USAGE: $exename <COMMAND> [ARGS] [OPTIONS]\n";
+    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 +490,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();