@lark-project/cli
Version:
飞书项目插件开发工具
51 lines (50 loc) • 2.3 kB
JavaScript
;
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;