mirror of
https://github.com/certd/certd.git
synced 2026-04-24 04:17:25 +08:00
chore: 文档增加插件列表
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
import "./dist/plugins/index.js";
|
||||
import { accessRegistry, notificationRegistry, pluginGroups, pluginRegistry } from "@certd/pipeline";
|
||||
import { dnsProviderRegistry } from "@certd/plugin-cert";
|
||||
import fs from "fs";
|
||||
|
||||
function genPluginMd() {
|
||||
const plugins = {
|
||||
access: [],
|
||||
deploy: [],
|
||||
dnsProvider: [],
|
||||
notification: []
|
||||
};
|
||||
|
||||
plugins.access = accessRegistry.getDefineList();
|
||||
plugins.deploy = pluginRegistry.getDefineList();
|
||||
plugins.dnsProvider = dnsProviderRegistry.getDefineList();
|
||||
plugins.notification = notificationRegistry.getDefineList();
|
||||
|
||||
|
||||
function genMd(list) {
|
||||
let mdContent = `
|
||||
| 序号 | 名称 | 说明 |
|
||||
|-----|-----|-----|
|
||||
`;
|
||||
let i = 0;
|
||||
for (const x of list) {
|
||||
i++
|
||||
mdContent += `| ${i}.| **${x.title}** | ${x.desc||''} | \n`;
|
||||
}
|
||||
return mdContent;
|
||||
}
|
||||
|
||||
let mdContent = "";
|
||||
mdContent = "# 授权列表\n";
|
||||
mdContent += genMd(plugins.access);
|
||||
fs.writeFileSync("../../../docs/guide/plugins/access.md", mdContent);
|
||||
|
||||
mdContent = "# DNS提供商\n";
|
||||
mdContent += genMd(plugins.dnsProvider);
|
||||
fs.writeFileSync("../../../docs/guide/plugins/dns-provider.md", mdContent);
|
||||
|
||||
|
||||
mdContent = "# 通知插件\n";
|
||||
mdContent += genMd(plugins.notification);
|
||||
fs.writeFileSync("../../../docs/guide/plugins/notification.md", mdContent);
|
||||
|
||||
|
||||
mdContent = "# 任务插件\n";
|
||||
mdContent += `共 \`${plugins.deploy.length}\` 款任务插件 \n`
|
||||
let index =0
|
||||
for (const key in pluginGroups) {
|
||||
index++
|
||||
const group = pluginGroups[key];
|
||||
mdContent += `## ${index}. ${group.title}\n`;
|
||||
mdContent += genMd(group.plugins);
|
||||
fs.writeFileSync("../../../docs/guide/plugins/deploy.md", mdContent);
|
||||
}
|
||||
|
||||
|
||||
process.exit()
|
||||
}
|
||||
|
||||
genPluginMd()
|
||||
@@ -50,49 +50,52 @@ export default async function loadModules(dir) {
|
||||
function isPrototypeOf(value,cls){
|
||||
return cls.prototype.isPrototypeOf(value.prototype)
|
||||
}
|
||||
async function genMetadata(){
|
||||
const modules = await loadModules('./dist/plugins');
|
||||
|
||||
const modules = await loadModules('./dist/plugins');
|
||||
fs.rmSync("./metadata", { recursive: true });
|
||||
fs.mkdirSync("./metadata", { recursive: true });
|
||||
for (const key in modules) {
|
||||
console.log(key)
|
||||
const module = modules[key]
|
||||
const entry = Object.entries(module)
|
||||
for (const [name, value] of entry) {
|
||||
//如果有define属性
|
||||
if(value.define){
|
||||
//那么就是插件
|
||||
let location = key.substring(4)
|
||||
location = location.substring(0, location.length - 3)
|
||||
location = location.replaceAll("\\","/")
|
||||
location += ".js"
|
||||
location = `../../..${location}` // 从modules/plugin/plugin-service 加载 ../../plugins目录下的文件
|
||||
|
||||
fs.rmSync("./metadata", { recursive: true });
|
||||
fs.mkdirSync("./metadata", { recursive: true });
|
||||
for (const key in modules) {
|
||||
console.log(key)
|
||||
const module = modules[key]
|
||||
const entry = Object.entries(module)
|
||||
for (const [name, value] of entry) {
|
||||
//如果有define属性
|
||||
if(value.define){
|
||||
//那么就是插件
|
||||
let location = key.substring(4)
|
||||
location = location.substring(0, location.length - 3)
|
||||
location = location.replaceAll("\\","/")
|
||||
location += ".js"
|
||||
location = `../../..${location}` // 从modules/plugin/plugin-service 加载 ../../plugins目录下的文件
|
||||
const pluginDefine = {
|
||||
...value.define
|
||||
}
|
||||
pluginDefine.type = "builtIn"
|
||||
if(pluginDefine.accessType){
|
||||
pluginDefine.pluginType = "dnsProvider"
|
||||
}else if(isPrototypeOf(value,AbstractTaskPlugin)){
|
||||
pluginDefine.pluginType = "deploy"
|
||||
}else if(isPrototypeOf(value,BaseNotification)){
|
||||
pluginDefine.pluginType = "notification"
|
||||
}else if(isPrototypeOf(value,BaseAccess)){
|
||||
pluginDefine.pluginType = "access"
|
||||
}else{
|
||||
console.log(`[warning] 未知的插件类型:${pluginDefine.name}`)
|
||||
}
|
||||
|
||||
const pluginDefine = {
|
||||
...value.define
|
||||
const filePath = path.join(`./metadata/${pluginDefine.pluginType}_${pluginDefine.name}.yaml`)
|
||||
|
||||
pluginDefine.scriptFilePath = location
|
||||
const data = yaml.dump(pluginDefine)
|
||||
fs.writeFileSync(filePath,data ,'utf8')
|
||||
}
|
||||
pluginDefine.type = "builtIn"
|
||||
if(pluginDefine.accessType){
|
||||
pluginDefine.pluginType = "dnsProvider"
|
||||
}else if(isPrototypeOf(value,AbstractTaskPlugin)){
|
||||
pluginDefine.pluginType = "deploy"
|
||||
}else if(isPrototypeOf(value,BaseNotification)){
|
||||
pluginDefine.pluginType = "notification"
|
||||
}else if(isPrototypeOf(value,BaseAccess)){
|
||||
pluginDefine.pluginType = "access"
|
||||
}else{
|
||||
console.log(`[warning] 未知的插件类型:${pluginDefine.name}`)
|
||||
}
|
||||
const filePath = path.join(`./metadata/${pluginDefine.pluginType}_${pluginDefine.name}.yaml`)
|
||||
|
||||
pluginDefine.scriptFilePath = location
|
||||
const data = yaml.dump(pluginDefine)
|
||||
fs.writeFileSync(filePath,data ,'utf8')
|
||||
}
|
||||
}
|
||||
process.exit()
|
||||
}
|
||||
// import why from 'why-is-node-running'
|
||||
// setTimeout(() => why(), 100); // 延迟打印原因
|
||||
genMetadata()
|
||||
|
||||
process.exit()
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
"ci": "npm run cov",
|
||||
"build": "mwtsc --cleanOutDir --skipLibCheck",
|
||||
"export-metadata": "node export-plugin-yaml.js",
|
||||
"export-md": "node export-plugin-md.js",
|
||||
"dev-build": "echo 1",
|
||||
"build-on-docker": "node ./before-build.js && npm run build",
|
||||
"up-mw-deps": "npx midway-version -u -w",
|
||||
|
||||
Reference in New Issue
Block a user