]> git.proxmox.com Git - pve-common.git/blobdiff - src/PVE/CLIHandler.pm
rename splitted out systemd module to 'Systemd'
[pve-common.git] / src / PVE / CLIHandler.pm
index 9bbc15627bff5a385d4198fc80b77e643b3b81d4..acdeffed29f994df66ad6b111292d58e7d5d24a5 100644 (file)
@@ -54,7 +54,9 @@ my $expand_command_name = sub {
 
     return $cmd if exists $def->{$cmd}; # command is already complete
 
-    my @expanded = grep { /^\Q$cmd\E/ } keys %$def;
+    my $is_alias = sub { ref($_[0]) eq 'HASH' && exists($_[0]->{alias}) };
+    my @expanded = grep { /^\Q$cmd\E/ && !$is_alias->($def->{$_}) } keys %$def;
+
     return $expanded[0] if scalar(@expanded) == 1; # enforce exact match
 
     return undef;
@@ -314,7 +316,7 @@ my $print_bash_completion = sub {
     shift @$args; # no need for program name
     my $print_result = sub {
        foreach my $p (@_) {
-           print "$p\n" if $p =~ m/^$cur/;
+           print "$p\n" if $p =~ m/^\Q$cur\E/;
        }
     };
 
@@ -489,7 +491,7 @@ my $handle_cmd  = sub {
     }
 
     # checked special commands, if def is still a hash we got an incomplete sub command
-    $abort->("incomplete command '$cmd_str'") if ref($def) eq 'HASH';
+    $abort->("incomplete command '$cmd_str'", $args) if ref($def) eq 'HASH';
 
     &$preparefunc() if $preparefunc;