// eslint-disable-next-line import/no-extraneous-dependencies const path = require('path') const fs = require('fs-extra') const chalk = require('chalk') const { came } = require('./util') // 验证是否是插件 function isPlugin(source) { let result = true if (!fs.lstatSync(source).isDirectory()) { return false } const configPath = path.resolve(source, './stage-config.js') const packagePath = path.resolve(source, './package.json') if (result && !fs.existsSync(configPath)) { result = false } if (result && !fs.existsSync(packagePath)) { result = false } if (!result) { console.log(chalk.yellow(`${source} 不符合 Lin-CMS 插件规范`)) } return result } function getPlugins(source) { if (!fs.existsSync(source)) { console.log(chalk.yellow(`目录不存在: ${source}`)) return [] } const folders = fs.readdirSync(source) const pluginsList = [] folders.forEach(item => { const itemPath = path.join(source, item) if (!isPlugin(itemPath)) { return } const config = {} config.name = item config.camelCaseName = came(item) config.path = path.resolve(__dirname, `../src/plugins/${item}/`) config.packageCtx = JSON.parse(fs.readFileSync(path.resolve(itemPath, './package.json'), 'utf8')) pluginsList.push(config) }) return pluginsList } module.exports = getPlugins