#!/usr/bin/env node "use strict"; const path = require("node:path"); const { extractZipToTemp, importWolaiExport } = require("./lib/wolai-export-importer"); function parseArgs(argv) { const args = {}; for (let i = 0; i < argv.length; i += 1) { const arg = argv[i]; if (!arg.startsWith("--")) continue; const key = arg.slice(2); if (["clear-target", "allow-unsafe-clear"].includes(key)) { args[key] = true; } else { args[key] = argv[i + 1]; i += 1; } } return args; } function usage() { console.error([ "用法:", " node scripts/import-wolai-export.js --source-dir <解包后的Gidnxc目录> --target-root <用户空间目录> --owner-id <用户ID> [--workspace-id ] [--clear-target] [--copy-mode link|copy]", " node scripts/import-wolai-export.js --zip --target-root <用户空间目录> --owner-id <用户ID> [--root-md ] [--clear-target]", ].join("\n")); } function main() { const args = parseArgs(process.argv.slice(2)); const targetRoot = args["target-root"]; const ownerId = args["owner-id"]; if (!targetRoot || !ownerId || (!args["source-dir"] && !args.zip)) { usage(); process.exit(2); } let sourceRoot = args["source-dir"]; if (args.zip) { const tempRoot = extractZipToTemp(path.resolve(args.zip)); sourceRoot = tempRoot; } const result = importWolaiExport({ sourceRoot, targetRoot, ownerId, workspaceId: args["workspace-id"], rootMd: args["root-md"], clearTarget: Boolean(args["clear-target"]), allowUnsafeClear: Boolean(args["allow-unsafe-clear"]), copyMode: args["copy-mode"] === "copy" ? "copy" : "link", }); console.log(JSON.stringify(result, null, 2)); } main();