From: Dietmar Maurer Date: Thu, 3 Sep 2015 13:12:03 +0000 (+0200) Subject: add helpers to verify API without starting the binary X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=commitdiff_plain;h=1f130ba6410638eec2ba5bf7b7c0ac3ccacd5615 add helpers to verify API without starting the binary In future, we want to have a separate PVE::CLI::$binname class for each binary. We can then simply load that class to verify the API: use PVE::CLI::pct; PVE::CLI::pct->verify_api(); or to generate the docs: PVE::CLI::pct->generate_pod_manpage(); --- diff --git a/src/PVE/CLIHandler.pm b/src/PVE/CLIHandler.pm index 6d3f69d..6ccfcd2 100644 --- a/src/PVE/CLIHandler.pm +++ b/src/PVE/CLIHandler.pm @@ -261,6 +261,39 @@ my $print_bash_completion = sub { &$print_result(@option_list); }; +sub verify_api { + my ($class) = @_; + + # simply verify all registered methods + PVE::RESTHandler::validate_method_schemas(); +} + +sub generate_pod_manpage { + my ($class, $podfn) = @_; + + no strict 'refs'; + $cmddef = ${"${class}::cmddef"}; + + $exename = $class; + $exename =~ s/^.*:://; + + if (!defined($podfn)) { + my $cpath = "$class.pm"; + $cpath =~ s/::/\//g; + foreach my $p (@INC) { + my $testfn = "$p/$cpath"; + if (-f $testfn) { + $podfn = $testfn; + last; + } + } + } + + die "unable to find source for class '$class'" if !$podfn; + + print_pod_manpage($podfn); +} + sub handle_cmd { my ($def, $cmdname, $cmd, $args, $pwcallback, $podfn, $preparefunc) = @_;