42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
// scripts/deploy-workflow.js
|
|
const fs = require("node:fs");
|
|
const path = require("node:path");
|
|
const { request } = require("./n8n-api");
|
|
|
|
async function main() {
|
|
const [, , filePath, ...rest] = process.argv;
|
|
if (!filePath) {
|
|
console.error("使い方: node scripts/deploy-workflow.js <workflows/xxx.json> [--id=<既存workflowId>]");
|
|
process.exit(1);
|
|
}
|
|
|
|
const idArg = rest.find((a) => a.startsWith("--id="));
|
|
const existingId = idArg ? idArg.slice("--id=".length) : null;
|
|
|
|
const fullPath = path.resolve(filePath);
|
|
const definition = JSON.parse(fs.readFileSync(fullPath, "utf8"));
|
|
const body = {
|
|
name: definition.name,
|
|
nodes: definition.nodes,
|
|
connections: definition.connections,
|
|
settings: definition.settings || {},
|
|
};
|
|
|
|
const { status, body: result } = existingId
|
|
? await request("PUT", `/workflows/${existingId}`, body)
|
|
: await request("POST", "/workflows", body);
|
|
|
|
console.log("HTTP status:", status);
|
|
console.log(JSON.stringify(result, null, 2));
|
|
|
|
if (status >= 200 && status < 300 && result.id) {
|
|
console.log(`\nワークフローID: ${result.id}`);
|
|
console.log("README.mdの「n8nリソースID一覧」へ記録すること。");
|
|
}
|
|
}
|
|
|
|
main().catch((err) => {
|
|
console.error(err);
|
|
process.exit(1);
|
|
});
|