Skip to content

Commit

Permalink
added external plugin support
Browse files Browse the repository at this point in the history
  • Loading branch information
yseto committed Dec 16, 2022
1 parent aa73122 commit 79c4390
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 8 deletions.
2 changes: 2 additions & 0 deletions packaging/config.json
Expand Up @@ -53,6 +53,8 @@
"uptime",
"inode",
"h2o"
],
"external-plugins": [
]
}

9 changes: 9 additions & 0 deletions t/plugins.t
Expand Up @@ -19,4 +19,13 @@ for my $plug (@$plugins_to_be_packaged) {
ok $plugins{$plug}, "$plug ok";
}

my $external_plugins_to_be_packaged = $config->{'external-plugins'};
isa_ok $external_plugins_to_be_packaged, 'ARRAY';

for my $plug (@$external_plugins_to_be_packaged) {
ok $plug->{name}, "name ok";
my $name = $plug->{name};
like $plug->{repository}, qr|^github[.]com/mackerelio/|, "$name repository ok";
}

done_testing;
42 changes: 34 additions & 8 deletions tool/gen_mackerel_plugin.pl
Expand Up @@ -27,16 +27,28 @@ sub retrieve_plugins {
}

sub update_readme {
my @plugins = @_;
my $plugins = shift;
my $external_plugins = shift;

my $doc_links = '';
for my $plug (@plugins) {
$doc_links .= "* [$PLUGIN_PREFIX$plug](./$PLUGIN_PREFIX$plug/README.md)\n"
my %doc_links_lines;
for my $plug (@$plugins) {
$doc_links_lines{$plug} = "* [$PLUGIN_PREFIX$plug](./$PLUGIN_PREFIX$plug/README.md)\n"
}
for my $plug (@$external_plugins) {
my $link = sprintf "https://%s/blob/main/README.md", $plug->{'repository'};
$doc_links_lines{$plug->{name}} = "* [$PLUGIN_PREFIX$plug->{name}]($link)\n"
}

for my $key (sort keys %doc_links_lines) {
$doc_links .= $doc_links_lines{$key};
}

replace 'README.md' => sub {
my $readme = shift;
my $plu_reg = qr/$PLUGIN_PREFIX[-0-9a-zA-Z_]+/;
$readme =~ s!(?:\* \[$plu_reg\]\(\./$plu_reg/README\.md\)\n)+!$doc_links!ms;
my $plu_reg_readme = qr/\.\/$PLUGIN_PREFIX[-0-9a-zA-Z_]+|https:\/\/github\.com\/mackerelio\/[-0-0a-zA-Z_]+\/blob\/main/;
$readme =~ s!(?:\* \[$plu_reg\]\($plu_reg_readme/README\.md\)\n)+!$doc_links!ms;
$readme;
};
}
Expand Down Expand Up @@ -100,11 +112,16 @@ sub load_packaging_confg {
####

sub subtask {
my @plugins = retrieve_plugins;
update_readme(@plugins);
my $config = load_packaging_confg;
update_packaging_specs(sort @{ $config->{plugins} });
update_packaging_binaries_list(sort @{ $config->{plugins} });
my @plugins = retrieve_plugins;
update_readme(\@plugins, $config->{'external-plugins'});

my @all_plugins = (
@{ $config->{plugins} },
map { $_->{name} } @{ $config->{'external-plugins'} },
);
update_packaging_specs(sort @all_plugins);
update_packaging_binaries_list(sort @all_plugins);
}

subtask();
Expand All @@ -114,6 +131,7 @@ sub subtask {
####

my @plugins = sort @{ load_packaging_confg()->{plugins}};
my @external_plugins = sort @{ load_packaging_confg()->{'external-plugins'}};

sub resolve_package {
my $plug = shift;
Expand All @@ -131,6 +149,14 @@ sub resolve_package {
$case .= sprintf qq[\tcase "%s":\n\t\t%s.Do()\n], $plug, $pkg;
$plugs .= sprintf qq[\t"%s",\n], $plug;
}
for my $pluginfo (@external_plugins) {
my $plug = $pluginfo->{name};
my $pkg = "mp$plug";
$pkg =~ s/-//g;
$imports .= sprintf qq[\t"%s/lib"\n], $pluginfo->{repository};
$case .= sprintf qq[\tcase "%s":\n\t\t%s.Do()\n], $plug, $pkg;
$plugs .= sprintf qq[\t"%s",\n], $plug;
}

my $mackerel_plugin_gen = qq!// Code generated by "tool/gen_mackerel_plugin.pl"; DO NOT EDIT
package main
Expand Down

0 comments on commit 79c4390

Please sign in to comment.