UNPKG

@lark-project/cli

Version:

飞书项目插件开发工具

51 lines (50 loc) 2.3 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.initDraft = void 0; const path_1 = __importDefault(require("path")); const fs_extra_1 = require("fs-extra"); const get_project_directory_1 = require("../../../utils/get-project-directory"); const workspace_1 = require("../../../v2/utils/workspace"); /** * Initialize a draft from the remote snapshot in one atomic command. * * Why this shape: * - The critical mistake weak AI makes is "直接改 remote.json 或忘了 cp 就 patch"。 * 把 `cp remote.json draft-<ts>.json` 合成一条 CLI,让这步不再是 shell 判断题。 * - Output the draft path on stdout so the next peek / patch-json call can pipe it in. */ function initDraft(opts) { const projectDir = (0, get_project_directory_1.getProjectDirectory)(); (0, workspace_1.assertPluginRoot)(projectDir); const p = (0, workspace_1.workspacePaths)(projectDir); const src = opts.from || path_1.default.join(p.configDir, 'remote.json'); if (!(0, fs_extra_1.existsSync)(src)) { process.stderr.write(`Remote snapshot not found: ${src}\n` + 'Run `lpm local-config get --remote` first to fetch the remote config.\n'); process.exit(1); } const timestamp = new Date() .toISOString() .replace(/[:.]/g, '-') .replace(/Z$/, ''); const dst = opts.to || path_1.default.join(p.configDir, `draft-${timestamp}.json`); const base = path_1.default.basename(dst); if (!base.startsWith('draft-')) { process.stderr.write(`Refusing to create draft at "${dst}" — draft file name must start with "draft-" ` + '(this guard prevents AI from accidentally overwriting remote.json / point.config.local.json).\n'); process.exit(1); } (0, fs_extra_1.ensureDirSync)(path_1.default.dirname(dst)); (0, fs_extra_1.copyFileSync)(src, dst); if (opts.format === 'json') { process.stdout.write(JSON.stringify({ from: src, to: dst }) + '\n'); } else { process.stdout.write(dst + '\n'); process.stderr.write(`ok: copied ${src}${dst}\n`); } } exports.initDraft = initDraft;