10 use PVE
::Tools
qw(dir_glob_foreach file_get_contents);
12 my $dnsapi_path = '../acme.sh/dnsapi';
14 die "cannot find dnsapi path '$dnsapi_path'!\n" if ! -d
$dnsapi_path;
16 my $acmesh_plugins = [];
17 dir_glob_foreach
($dnsapi_path, qr/dns_(\S+)\.sh/, sub {
18 my ($file, $provider) = @_;
19 push @$acmesh_plugins, $provider;
22 my $DNS_API_CHALLENGE_SCHEMA_FN = '../dns-challenge-schema.json';
23 my $defined_plugins = from_json
(PVE
::Tools
::file_get_contents
($DNS_API_CHALLENGE_SCHEMA_FN));
25 my ($missing_json_proposal, $missing_makefile_proposal) = ('', '');
28 # first check for missing ones, delete from hash so we can easily see if a plug got removed/renamed
29 for my $provider (sort @$acmesh_plugins) {
30 my $schema = delete $defined_plugins->{$provider};
31 if (!defined($schema)) {
32 $missing_json_proposal .= " \"$provider\": {},\n";
33 $missing_makefile_proposal .= "\tdnsapi
/dns_
${provider
}.sh
\\\n";
39 print STDERR "\nmissing plugins
, add the following to the JSON schema
:\n";
40 print STDERR $missing_json_proposal;
42 print STDERR "\nand to the Makefile
:\n";
43 print STDERR $missing_makefile_proposal;
46 my $printed_extra = 0;
47 for my $provider (sort keys %$defined_plugins) {
48 print STDERR "\nplugins that got removed
or renamed upstream
:\n" if !$printed_extra;
49 print STDERR " $provider\n";
54 die "\nERROR
: schema
not in sync with available plugins
!\n\n" if !$ok;
56 print STDERR "OK
: DNS challenge schema
in sync with available plugins
.\n";