Files

20 lines
905 B
JavaScript

import {readFileSync} from "node:fs";
import {cloudflareRuleFromSpec, syncCloudflareRule} from "./controller.mjs";
const command = process.argv[2] || "plan";
const specPath = process.env.CLOUDFLARE_SPEC_PATH || "/state/cloudflare-cache-rules.json";
const tokenPath = process.env.CLOUDFLARE_API_TOKEN_FILE || "/run/secrets/cloudflare_cache_api_token";
const zoneId = process.env.CLOUDFLARE_ZONE_ID || "";
const spec = JSON.parse(readFileSync(specPath, "utf8"));
if (command === "plan") {
console.log(JSON.stringify(cloudflareRuleFromSpec(spec), null, 2));
} else if (["check", "apply"].includes(command)) {
const token = readFileSync(tokenPath, "utf8").trim();
const result = await syncCloudflareRule(spec, {zoneId, token, dryRun: command === "check"});
console.log(JSON.stringify(result, null, 2));
} else {
console.error("Usage: node cloudflare.mjs [plan|check|apply]");
process.exit(2);
}