@lark-project/cli
Version:
飞书项目插件开发工具
67 lines (66 loc) • 3.38 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.setLocalPluginConfig = exports.getLocalPluginConfig = exports.isValidPluginConfig = void 0;
const path_1 = __importDefault(require("path"));
const fs_extra_1 = require("fs-extra");
const logger_1 = require("./utils/logger");
const get_project_directory_1 = require("./utils/get-project-directory");
const validate_tools_1 = require("./utils/validate-tools");
const utils_1 = require("./v1/utils");
const PLUGIN_CONFIG_FILE = 'plugin.config.json';
function isValidPluginConfig(config) {
const errMsgs = [];
if (!(0, validate_tools_1.isValidPluginId)(config.pluginId)) {
errMsgs.push(`The pluginId "${config.pluginId}" is not valid, please check and retry.`);
}
if (!config.pluginSecret) {
errMsgs.push(`The pluginSecret is not valid, please check and retry.`);
}
if (!(0, validate_tools_1.isValidURL)(config.siteDomain)) {
errMsgs.push(`The siteDomain "${config.siteDomain}" is not valid, please check and retry.`);
}
if (!Array.isArray(config.resources) ||
config.resources.some(resource => !(0, validate_tools_1.isValidPluginResource)(resource))) {
errMsgs.push(`The resources is not valid, please check and retry.`);
}
return [errMsgs.length === 0, errMsgs];
}
exports.isValidPluginConfig = isValidPluginConfig;
function getLocalPluginConfig() {
const pluginConfigPath = path_1.default.resolve((0, get_project_directory_1.getProjectDirectory)(), PLUGIN_CONFIG_FILE);
if (!(0, fs_extra_1.existsSync)(pluginConfigPath)) {
logger_1.logger.debug(`Not found the plugin config file, ${pluginConfigPath}`);
return undefined;
}
logger_1.logger.debug(`Read the plugin config file, ${pluginConfigPath}`);
const pluginConfig = require(pluginConfigPath);
let originPluginSecret = pluginConfig.pluginSecret;
try {
originPluginSecret = (0, utils_1.decrypt)(pluginConfig.pluginSecret);
}
catch (e) {
// 如果尝试进行解密失败,说明是未加密的
logger_1.logger.warn('The pluginSecret is original and will be automatically encrypted into "plugin.config.json": ', pluginConfig.pluginSecret);
setLocalPluginConfig({ pluginSecret: (0, utils_1.encrypt)(pluginConfig.pluginSecret) });
}
const [isValid, errMsgs] = isValidPluginConfig(pluginConfig);
if (!isValid) {
throw new Error(errMsgs.join(' /n'));
}
return Object.assign(Object.assign({}, pluginConfig), { pluginSecret: originPluginSecret });
}
exports.getLocalPluginConfig = getLocalPluginConfig;
function setLocalPluginConfig(config) {
const pluginConfigPath = path_1.default.resolve((0, get_project_directory_1.getProjectDirectory)(), PLUGIN_CONFIG_FILE);
if (!(0, fs_extra_1.existsSync)(pluginConfigPath)) {
logger_1.logger.debug(`Not found the plugin config file, ${pluginConfigPath}`);
return undefined;
}
const pluginConfig = require(pluginConfigPath);
const nextPluginConfig = Object.assign(Object.assign({}, pluginConfig), config);
(0, fs_extra_1.writeJSONSync)(pluginConfigPath, nextPluginConfig, { spaces: 2 });
}
exports.setLocalPluginConfig = setLocalPluginConfig;