feat: Add script to generate plugin registry and documentation, including initial Mivo Theme plugin data and its mirrored documentation.

This commit is contained in:
dyzulk
2026-01-18 16:18:40 +07:00
parent 6089caec31
commit 57734d56ef
3 changed files with 86 additions and 23 deletions

View File

@@ -0,0 +1,30 @@
---
layout: doc
title: "Mivo Theme Downloader"
description: "Allows downloading the Captive Portal theme with auto-configuration."
---
# Mivo Theme Downloader
**Category:** Hotspot Tools
**Author:** DyzulkDev
**Version:** 1.0.0
The **Mivo Theme Downloader** allows you to easily download and install the latest Captive Portal themes directly from the Mivo settings panel.
## Features
- **One-Click Download**: Fetch the latest themes from the official repository.
- **Auto-Extraction**: Automatically extracts and places theme files in the correct directory.
- **Updates**: Keeps your hotspot login page up to date with new designs.
## Installation
1. Download the plugin ZIP file.
2. Go to **Mivo > Settings > Plugins**.
3. Click **Upload Plugin** and select the ZIP file.
4. The plugin will appear in your installed list.
## Usage
Navigate to the **Theme Manager** in the sidebar (under Hotspot Tools) to browse and download available themes.
---
*This documentation is automatically mirrored from the [source repository](https://github.com/mivodev/plugin-mivo-theme).*

View File

@@ -3,10 +3,9 @@
"id": "plugin-mivo-theme",
"name": "Mivo Theme Downloader",
"description": "Allows downloading the Captive Portal theme with auto-configuration.",
"version": "1.0.0",
"author": "DyzulkDev",
"version": "1.0.0",
"category": "Hotspot Tools",
"scope": "Session",
"tags": [
"theme",
"downloader",
@@ -15,23 +14,7 @@
],
"repo": "https://github.com/mivodev/plugin-mivo-theme",
"download": "https://github.com/mivodev/plugin-mivo-theme/archive/refs/heads/main.zip",
"readme": "https://raw.githubusercontent.com/mivodev/plugin-mivo-theme/main/README.md"
},
{
"id": "plugin-backup-manager",
"name": "Backup Manager (Demo)",
"description": "Automated daily backups to Google Drive.",
"version": "2.1.0",
"author": "MivoTeam",
"category": "System Tools",
"scope": "Global",
"tags": [
"backup",
"security",
"cloud"
],
"repo": "#",
"download": "#",
"readme": "#"
"readme": "/plugins/plugin-mivo-theme",
"updated_at": "2026-01-18T09:01:34Z"
}
]

View File

@@ -84,8 +84,8 @@ foreach ($repos as $repo) {
'category' => $metadata['category'] ?? 'Uncategorized',
'tags' => array_map('trim', explode(',', $metadata['tags'] ?? '')),
'repo' => $repo['html_url'],
'download' => $repo['html_url'] . '/archive/refs/heads/' . $repo['default_branch'] . '.zip', // Default to main/master zip
'readme' => $repo['html_url'] . '#readme', // Link to GitHub readme for now
'download' => $repo['html_url'] . '/archive/refs/heads/' . $repo['default_branch'] . '.zip',
'readme' => '/plugins/' . $repo['name'], // Link to local mirrored doc
'updated_at' => $repo['updated_at']
];
@@ -100,4 +100,54 @@ foreach ($repos as $repo) {
$json = json_encode($plugins, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
file_put_contents($outputFile, $json);
echo "Done! Generated " . count($plugins) . " plugins.\n";
echo "Done! Generated " . count($plugins) . " plugins in JSON.\n";
// 5. Generate Documentation Pages (Mirroring)
echo "Starting Documentation Mirroring...\n";
$docsDir = __DIR__ . '/../plugins'; // Target directory
foreach ($plugins as $plugin) {
echo "Mirroring docs for: " . $plugin['name'] . "\n";
// Fetch README
$readmeUrl = "https://raw.githubusercontent.com/$orgName/{$plugin['id']}/{$repo['default_branch']}/README.md";
$readmeContent = fetchUrl($readmeUrl, $githubToken);
if (!$readmeContent) {
// Try master/main if default branch fetch failed
$readmeContent = fetchUrl("https://raw.githubusercontent.com/$orgName/{$plugin['id']}/main/README.md", $githubToken);
}
if ($readmeContent) {
// Sanitize & Prepend Frontmatter
$title = $plugin['name'];
$desc = $plugin['description'];
// Remove the first # H1 if it matches the title (or any H1) to avoid duplication
// This removes the first line if it starts with #
$readmeContent = preg_replace('/^#\s+.+\n/', '', $readmeContent, 1);
$readmeContent = trim($readmeContent);
$mdContent = <<<EOT
---
layout: doc
title: "$title"
description: "$desc"
---
# $title
$readmeContent
---
*This documentation is automatically mirrored from the [source repository]({$plugin['repo']}).*
EOT;
// Save to plugins/[id].md
file_put_contents("$docsDir/{$plugin['id']}.md", $mdContent);
echo " + Created: plugins/{$plugin['id']}.md\n";
} else {
echo " - Warning: README not found for {$plugin['id']}\n";
}
}