complete_api_path: minimize completions
authorDietmar Maurer <dietmar@proxmox.com>
Tue, 24 Jul 2018 09:29:22 +0000 (11:29 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 25 Jul 2018 08:22:35 +0000 (10:22 +0200)
PVE/APIClient/Helpers.pm

index 106e497..7e4447d 100644 (file)
@@ -203,21 +203,20 @@ sub complete_api_path {
        if (my $children = $info->{children}) {
            foreach my $c (@$children) {
                my $ctext = $c->{text};
+               push @$res, "${prefix}$ctext" if $ctext =~ m/^\Q$rest/;
                if ($ctext =~ m/^\{(\S+)\}$/) {
-                   push @$res, "$prefix$ctext";
-                   push @$res, "$prefix$ctext/";
-                   if (length($rest)) {
+                   if (length($rest) && $rest ne $ctext) {
                        push @$res, "$prefix$rest";
-                       push @$res, "$prefix$rest/";
                    }
-               } elsif ($ctext =~ m/^\Q$rest/) {
-                   push @$res, "$prefix$ctext";
-                   push @$res, "$prefix$ctext/" if $c->{children};
                }
            }
        }
     }
 
+    if (scalar(@$res) == 1) {
+       $res = [$res->[0], "$res->[0]/"];
+    }
+
     return $res;
 }