Skip to content

Commit 89afb72

Browse files
underaclaude
andcommitted
Slim PWE to only serve /repo/, merge repo JSON at build time
- Strip out.xml to just /repo/ route - PluginsRepository reads single pre-merged repo.json - prepare-upload.sh merges dat/repo/*.json into repo.json Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 22c4903 commit 89afb72

3 files changed

Lines changed: 20 additions & 85 deletions

File tree

prepare-upload.sh

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,17 @@ cp -r site/build/* upload/
1616
# Examples
1717
cp -r examples upload/img/
1818

19+
# Merge repo JSON files into single file
20+
python -c "
21+
import json, os
22+
plugins = []
23+
for f in sorted(os.listdir('site/dat/repo')):
24+
if f.endswith('.json'):
25+
plugins.extend(json.load(open('site/dat/repo/' + f)))
26+
os.makedirs('upload/dat/repo', exist_ok=True)
27+
json.dump(plugins, open('upload/dat/repo/repo.json', 'w'))
28+
"
29+
1930
# PHP for /repo/ endpoint (stays dynamic)
2031
cp site/index.php upload/
2132
cp site/cfg.php upload/

site/JPGC/PluginsRepository.php

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,27 +39,16 @@ public function process()
3939

4040
private function getRepoData($readFiles = false)
4141
{
42-
$node = $this->PWE->getNode();
43-
$configsDir = $node['!a']['configs'];
44-
if (!$configsDir || !is_dir($configsDir)) {
45-
throw new HTTP5xxException("Configs dir don't exist: " . realpath($configsDir));
42+
$repoFile = 'dat/repo/repo.json';
43+
if (!is_file($repoFile)) {
44+
throw new HTTP5xxException("Repo file not found: " . realpath($repoFile));
4645
}
4746

48-
$plugins = [];
49-
$oldest = 0;
50-
foreach (scandir($configsDir) as $fname) {
51-
if ($fname[0] == '.') {
52-
continue;
53-
}
54-
$full_name = $configsDir . '/' . $fname;
55-
$oldest = max($oldest, filemtime($full_name));
56-
if ($readFiles) {
57-
$set = json_decode(file_get_contents($full_name), true);
58-
$plugins = array_merge($plugins, $set);
59-
}
60-
}
47+
$this->PWE->sendHTTPHeader('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($repoFile)) . ' GMT', true);
6148

62-
$this->PWE->sendHTTPHeader('Last-Modified: ' . gmdate('D, d M Y H:i:s', $oldest) . ' GMT', true);
63-
return $plugins;
49+
if ($readFiles) {
50+
return json_decode(file_get_contents($repoFile), true);
51+
}
52+
return [];
6453
}
6554
}

site/dat/out.xml

Lines changed: 1 addition & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,68 +1,3 @@
1-
<url title="JMeter Plugins" template="dat/plugins.tpl"
2-
keywords="jmeter, plugins, load, performance, analysis, graphs, hadoop, webdriver, selenium"
3-
description="A custom set of plugins for Apache JMeter, not affiliated with Apache Software Foundation, graphs, load shapers, new functions."
4-
class="PWE\Modules\HTMLPage\HTMLPage" src="catalogue.html">
5-
6-
<url link="get" class="PWE\Modules\RedirectAccepted\RedirectAccepted"
7-
base="https://search.maven.org/remotecontent?filepath=kg/apc/jmeter-plugins-manager/1.12/jmeter-plugins-manager-1.12.jar"
8-
no_final_slash="1"/>
9-
10-
<url link="install" title="Install" menu="1" ico="fa-download"
11-
class="PWE\Modules\SimpleWiki\SimpleWiki" wiki_dir="wiki" single_page="Install" accept="1"
12-
syntax="PWE\Modules\SimpleWiki\GitHubMarkdownSyntax\Config" wiki_file_ext="md"
13-
/>
14-
15-
<url link="catalogue" title="Browse Plugins" menu="1" ico="fa-search"
16-
class="PWE\Modules\RedirectAccepted\RedirectAccepted" accept="1" base=""
17-
/>
18-
19-
<url link="downloads" title="Download" menu="0" class="PWE\Modules\SimpleWiki\SimpleWiki" wiki_dir="dl"
20-
start_page="all" files_base="files" download_link="../file" accept="1" ico="fa-download">
21-
<url link="file" files_base="files" class="PWE\Modules\FileDownloads\FileDownloads" accept="2"/>
22-
<url link="all" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
23-
base="/install/Install/"/>
24-
</url>
25-
26-
<url link="wiki" class="PWE\Modules\SimpleWiki\SimpleWiki" wiki_dir="wiki" start_page="Start" ico="fa-book"
27-
files_base="files" download_link="../../downloads/file"
28-
syntax="PWE\Modules\SimpleWiki\GitHubMarkdownSyntax\Config" wiki_file_ext="md"
29-
accept="1" menu="1" title="Documentation">
30-
<url link="WeightedSwitchController" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
31-
base="https://github.com/Blazemeter/jmeter-bzm-plugins/blob/master/wsc/WeightedSwitchController.md"/>
32-
33-
<url link="RotatingListener" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
34-
base="https://github.com/Blazemeter/jmeter-bzm-plugins/blob/master/rotating-listener/RotatingListener.md"/>
35-
36-
<url link="XMPPSampler" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
37-
base="https://github.com/Blazemeter/jmeter-bzm-plugins/blob/master/xmpp/XMPPSampler.md"/>
38-
39-
<url link="XMPPConnection" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
40-
base="https://github.com/Blazemeter/jmeter-bzm-plugins/blob/master/xmpp/XMPPConnection.md"/>
41-
42-
<url link="DirectoryListing" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
43-
base="https://github.com/Blazemeter/jmeter-bzm-plugins/blob/master/directory-listing/DirectoryListing.md"/>
44-
45-
<url link="LoadosophiaUploader" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
46-
base="https://github.com/Blazemeter/jmeter-bzm-plugins/blob/master/sense-uploader/LoadosophiaUploader.md"/>
47-
48-
<url link="PerfMonAgent" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
49-
base="https://github.com/undera/perfmon-agent"/>
50-
51-
<url link="HadoopSet" class="PWE\Modules\RedirectAccepted\RedirectAccepted" no_final_slash="1"
52-
base="https://github.com/undera/jmeter-hadoop"/>
53-
</url>
54-
55-
<url link="stats" title="Usage Statistics" menu="1" ico="fa-bar-chart"
56-
class="PWE\Modules\HTMLPage\HTMLPage" src="stats.html"/>
57-
58-
<url link="support" menu="1" title="Support Forums" class="PWE\Modules\RedirectAccepted\RedirectAccepted"
59-
base="http://groups.google.com/forum/#!forum/jmeter-plugins" accept="1" ico="fa-support"/>
60-
61-
<url link="editor" menu="1" title="JMX Editor" class="PWE\Modules\RedirectAccepted\RedirectAccepted"
62-
base="/editor/?utm_source=jpgc&amp;utm_medium=banner&amp;utm_campaign=menu" accept="1" ico="fa-pencil-square-o"/>
63-
64-
<url link="sources" title="Source Code" menu="0" ico="fa-github-alt"
65-
class="PWE\Modules\RedirectAccepted\RedirectAccepted" base="https://github.com/undera/jmeter-plugins"/>
66-
1+
<url title="JMeter Plugins">
672
<url link="repo" class="JPGC\PluginsRepository" configs="dat/repo" template="empty.tpl"/>
683
</url>

0 commit comments

Comments
 (0)