20 lines
905 B
JavaScript
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);
|
|
}
|