my $cmdline = substr($ENV{COMP_LINE}, 0, $ENV{COMP_POINT});
print STDERR "\nCMDLINE: $ENV{COMP_LINE}\n" if $debug;
- # fixme: shell quoting??
- my @args = split(/\s+/, $cmdline);
+ my @args = PVE::Tools::split_args($cmdline);
my $pos = scalar(@args) - 2;
$pos += 1 if $cmdline =~ m/\s+$/;
PVE::RESTHandler::validate_method_schemas();
}
+my $get_exe_name = sub {
+ my ($class) = @_;
+
+ my $name = $class;
+ $name =~ s/^.*:://;
+ $name =~ s/_/-/g;
+
+ return $name;
+};
+
sub generate_bash_completions {
my ($class) = @_;
# generate bash completion config
- $exename = $class;
- $exename =~ s/^.*:://;
+ $exename = &$get_exe_name($class);
print <<__EOD__;
# $exename bash completion
}
sub find_cli_class_source {
- my ($exename) = @_;
+ my ($name) = @_;
my $filename;
- my $cpath = "PVE/CLI/${exename}.pm";
- my $spath = "PVE/Service/${exename}.pm";
+ $name =~ s/-/_/g;
+
+ my $cpath = "PVE/CLI/${name}.pm";
+ my $spath = "PVE/Service/${name}.pm";
foreach my $p (@INC) {
foreach my $s (($cpath, $spath)) {
my $testfn = "$p/$s";
sub generate_pod_manpage {
my ($class, $podfn) = @_;
- $exename = $class;
- $exename =~ s/^.*:://;
+ $exename = &$get_exe_name($class);
$podfn = find_cli_class_source($exename) if !defined($podfn);
$ENV{'PATH'} = '/sbin:/bin:/usr/sbin:/usr/bin';
- $exename = $class;
- $exename =~ s/^.*:://;
+ $exename = &$get_exe_name($class);
initlog($exename);