@intentic/cli 1.32.2 → 1.38.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/add-app/add-app.command.d.ts +3 -0
- package/dist/add-app/add-app.command.d.ts.map +1 -0
- package/dist/add-app/add-app.command.js +20 -0
- package/dist/add-app/add-app.command.js.map +1 -0
- package/dist/add-app/add-app.d.ts +4 -0
- package/dist/add-app/add-app.d.ts.map +1 -0
- package/dist/add-app/add-app.js +13 -0
- package/dist/add-app/add-app.js.map +1 -0
- package/dist/adopt/adopt.command.d.ts +3 -0
- package/dist/adopt/adopt.command.d.ts.map +1 -0
- package/dist/adopt/adopt.command.js +82 -0
- package/dist/adopt/adopt.command.js.map +1 -0
- package/dist/adopt/adopt.d.ts.map +1 -0
- package/dist/adopt/adopt.js.map +1 -0
- package/dist/app.d.ts +1 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +26 -441
- package/dist/app.js.map +1 -1
- package/dist/apply/access.d.ts.map +1 -0
- package/dist/{access.js → apply/access.js} +7 -21
- package/dist/apply/access.js.map +1 -0
- package/dist/apply/apply-lock.d.ts.map +1 -0
- package/dist/apply/apply-lock.js.map +1 -0
- package/dist/apply/apply.command.d.ts +3 -0
- package/dist/apply/apply.command.d.ts.map +1 -0
- package/dist/apply/apply.command.js +142 -0
- package/dist/apply/apply.command.js.map +1 -0
- package/dist/apply/migrate.d.ts.map +1 -0
- package/dist/apply/migrate.js.map +1 -0
- package/dist/demo.js +14 -42
- package/dist/demo.js.map +1 -1
- package/dist/deployments/deployments.command.d.ts +3 -0
- package/dist/deployments/deployments.command.d.ts.map +1 -0
- package/dist/deployments/deployments.command.js +18 -0
- package/dist/deployments/deployments.command.js.map +1 -0
- package/dist/deployments/deployments.d.ts.map +1 -0
- package/dist/{deployments.js → deployments/deployments.js} +32 -32
- package/dist/deployments/deployments.js.map +1 -0
- package/dist/env.config.d.ts +23 -0
- package/dist/env.config.d.ts.map +1 -0
- package/dist/env.config.js +27 -0
- package/dist/env.config.js.map +1 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.command.d.ts +3 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.command.d.ts.map +1 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.command.js +35 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.command.js.map +1 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.d.ts +13 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.d.ts.map +1 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.js +21 -0
- package/dist/host-ssh-tunnel/host-ssh-tunnel.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/init/init.command.d.ts +3 -0
- package/dist/init/init.command.d.ts.map +1 -0
- package/dist/init/init.command.js +45 -0
- package/dist/init/init.command.js.map +1 -0
- package/dist/{init.d.ts → init/init.d.ts} +2 -2
- package/dist/init/init.d.ts.map +1 -0
- package/dist/init/init.js +39 -0
- package/dist/init/init.js.map +1 -0
- package/dist/init/scaffold-app.d.ts +2 -0
- package/dist/init/scaffold-app.d.ts.map +1 -0
- package/dist/init/scaffold-app.js +27 -0
- package/dist/init/scaffold-app.js.map +1 -0
- package/dist/lib/artifact.d.ts.map +1 -0
- package/dist/lib/artifact.js.map +1 -0
- package/dist/lib/cf-tunnel.d.ts +11 -0
- package/dist/lib/cf-tunnel.d.ts.map +1 -0
- package/dist/lib/cf-tunnel.js +30 -0
- package/dist/lib/cf-tunnel.js.map +1 -0
- package/dist/lib/known-hosts.d.ts.map +1 -0
- package/dist/lib/known-hosts.js.map +1 -0
- package/dist/{output.d.ts → lib/output.d.ts} +0 -1
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/{output.js → lib/output.js} +0 -4
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/templates.d.ts +2 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +6 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +3 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/pipelines/adopt-pipelines.d.ts.map +1 -0
- package/dist/pipelines/adopt-pipelines.js +59 -0
- package/dist/pipelines/adopt-pipelines.js.map +1 -0
- package/dist/pipelines/control-plane-sync.d.ts.map +1 -0
- package/dist/{control-plane-sync.js → pipelines/control-plane-sync.js} +2 -2
- package/dist/pipelines/control-plane-sync.js.map +1 -0
- package/dist/plan/plan.command.d.ts +3 -0
- package/dist/plan/plan.command.d.ts.map +1 -0
- package/dist/plan/plan.command.js +32 -0
- package/dist/plan/plan.command.js.map +1 -0
- package/dist/resolve/resolve.command.d.ts +3 -0
- package/dist/resolve/resolve.command.d.ts.map +1 -0
- package/dist/resolve/resolve.command.js +75 -0
- package/dist/resolve/resolve.command.js.map +1 -0
- package/dist/resolve/resolve.d.ts.map +1 -0
- package/dist/{resolve.js → resolve/resolve.js} +1 -1
- package/dist/resolve/resolve.js.map +1 -0
- package/dist/restore/restore.command.d.ts +3 -0
- package/dist/restore/restore.command.d.ts.map +1 -0
- package/dist/restore/restore.command.js +67 -0
- package/dist/restore/restore.command.js.map +1 -0
- package/dist/sandbox-tunnel/sandbox-tunnel.command.d.ts +3 -0
- package/dist/sandbox-tunnel/sandbox-tunnel.command.d.ts.map +1 -0
- package/dist/sandbox-tunnel/sandbox-tunnel.command.js +48 -0
- package/dist/sandbox-tunnel/sandbox-tunnel.command.js.map +1 -0
- package/dist/sandbox-tunnel/sandbox-tunnel.d.ts.map +1 -0
- package/dist/sandbox-tunnel/sandbox-tunnel.js +27 -0
- package/dist/sandbox-tunnel/sandbox-tunnel.js.map +1 -0
- package/dist/secrets/generated-secrets.d.ts.map +1 -0
- package/dist/{generated-secrets.js → secrets/generated-secrets.js} +1 -1
- package/dist/secrets/generated-secrets.js.map +1 -0
- package/dist/{secret-store.d.ts → secrets/secret-store.d.ts} +3 -1
- package/dist/secrets/secret-store.d.ts.map +1 -0
- package/dist/{secret-store.js → secrets/secret-store.js} +15 -1
- package/dist/secrets/secret-store.js.map +1 -0
- package/dist/secrets/secrets.d.ts.map +1 -0
- package/dist/{secrets.js → secrets/secrets.js} +2 -6
- package/dist/secrets/secrets.js.map +1 -0
- package/package.json +14 -8
- package/templates/access.md.eta +21 -0
- package/templates/demo/Dockerfile.eta +5 -0
- package/templates/demo/deploy.config.ts.eta +23 -0
- package/templates/demo/env.eta +2 -0
- package/templates/env-example.eta +6 -0
- package/templates/scaffold/Dockerfile.eta +7 -0
- package/templates/scaffold/deploy.config.selfhost.ts.eta +18 -0
- package/templates/scaffold/deploy.config.ts.eta +22 -0
- package/templates/scaffold/server.js.eta +9 -0
- package/templates/workflows/apply.yaml.eta +28 -0
- package/templates/workflows/resolve.yaml.eta +26 -0
- package/dist/access.d.ts.map +0 -1
- package/dist/access.js.map +0 -1
- package/dist/adopt-pipelines.d.ts.map +0 -1
- package/dist/adopt-pipelines.js +0 -97
- package/dist/adopt-pipelines.js.map +0 -1
- package/dist/adopt.d.ts.map +0 -1
- package/dist/adopt.js.map +0 -1
- package/dist/apply-lock.d.ts.map +0 -1
- package/dist/apply-lock.js.map +0 -1
- package/dist/artifact.d.ts.map +0 -1
- package/dist/artifact.js.map +0 -1
- package/dist/control-plane-sync.d.ts.map +0 -1
- package/dist/control-plane-sync.js.map +0 -1
- package/dist/deployments.d.ts.map +0 -1
- package/dist/deployments.js.map +0 -1
- package/dist/generated-secrets.d.ts.map +0 -1
- package/dist/generated-secrets.js.map +0 -1
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -122
- package/dist/init.js.map +0 -1
- package/dist/known-hosts.d.ts.map +0 -1
- package/dist/known-hosts.js.map +0 -1
- package/dist/migrate.d.ts.map +0 -1
- package/dist/migrate.js.map +0 -1
- package/dist/output.d.ts.map +0 -1
- package/dist/output.js.map +0 -1
- package/dist/resolve.d.ts.map +0 -1
- package/dist/resolve.js.map +0 -1
- package/dist/sandbox-tunnel.d.ts.map +0 -1
- package/dist/sandbox-tunnel.js +0 -56
- package/dist/sandbox-tunnel.js.map +0 -1
- package/dist/secret-store.d.ts.map +0 -1
- package/dist/secret-store.js.map +0 -1
- package/dist/secrets.d.ts.map +0 -1
- package/dist/secrets.js.map +0 -1
- /package/dist/{adopt.d.ts → adopt/adopt.d.ts} +0 -0
- /package/dist/{adopt.js → adopt/adopt.js} +0 -0
- /package/dist/{access.d.ts → apply/access.d.ts} +0 -0
- /package/dist/{apply-lock.d.ts → apply/apply-lock.d.ts} +0 -0
- /package/dist/{apply-lock.js → apply/apply-lock.js} +0 -0
- /package/dist/{migrate.d.ts → apply/migrate.d.ts} +0 -0
- /package/dist/{migrate.js → apply/migrate.js} +0 -0
- /package/dist/{deployments.d.ts → deployments/deployments.d.ts} +0 -0
- /package/dist/{artifact.d.ts → lib/artifact.d.ts} +0 -0
- /package/dist/{artifact.js → lib/artifact.js} +0 -0
- /package/dist/{known-hosts.d.ts → lib/known-hosts.d.ts} +0 -0
- /package/dist/{known-hosts.js → lib/known-hosts.js} +0 -0
- /package/dist/{adopt-pipelines.d.ts → pipelines/adopt-pipelines.d.ts} +0 -0
- /package/dist/{control-plane-sync.d.ts → pipelines/control-plane-sync.d.ts} +0 -0
- /package/dist/{resolve.d.ts → resolve/resolve.d.ts} +0 -0
- /package/dist/{sandbox-tunnel.d.ts → sandbox-tunnel/sandbox-tunnel.d.ts} +0 -0
- /package/dist/{generated-secrets.d.ts → secrets/generated-secrets.d.ts} +0 -0
- /package/dist/{secrets.d.ts → secrets/secrets.d.ts} +0 -0
package/dist/app.js
CHANGED
|
@@ -1,450 +1,35 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { ACCESS_FILE, ARTIFACT_FILE, ARTIFACT_PATH, CONFIG_FILE, CONFIG_PATH, ENV_FILE, INTENT_DIR, LAST_APPLIED_FILE, loadEnvFile, readArtifact, STATUS_FILE, TARGET_DIR, writeArtifact, writeStatus, } from "./artifact.js";
|
|
15
|
-
import { forgejoIdentity, syncControlPlaneSecrets } from "./control-plane-sync.js";
|
|
16
|
-
import { collectDeployments } from "./deployments.js";
|
|
17
|
-
import { ensureGeneratedSecrets, readGeneratedSecrets } from "./generated-secrets.js";
|
|
18
|
-
import { scaffold } from "./init.js";
|
|
19
|
-
import { createKnownHostsStore } from "./known-hosts.js";
|
|
20
|
-
import { detectHostMoves, migrateHosts } from "./migrate.js";
|
|
21
|
-
import { createOutput, outputMode } from "./output.js";
|
|
22
|
-
import { discoverZone, loadIntent } from "./resolve.js";
|
|
23
|
-
import { createSandboxTunnel } from "./sandbox-tunnel.js";
|
|
24
|
-
import { createHostSecretStore, createLayeredSecretStore, createLocalSecretStore } from "./secret-store.js";
|
|
25
|
-
import { collectSecrets, writeEnvExample } from "./secrets.js";
|
|
26
|
-
const { version } = createRequire(import.meta.url)("../package.json");
|
|
27
|
-
const DEFAULT_MAX_ITERATIONS = 5;
|
|
28
|
-
const generatedSecretStore = (graph, dir, ssh, backfill, log) => {
|
|
29
|
-
const local = createLocalSecretStore(dir);
|
|
30
|
-
const forgejo = Object.values(graph.resources).find((node) => node.type === "forgejo");
|
|
31
|
-
const serverRef = forgejo?.inputs["server"];
|
|
32
|
-
const hostId = typeof serverRef === "object" && serverRef !== null && "$ref" in serverRef ? serverRef.$ref : undefined;
|
|
33
|
-
const hostNode = hostId !== undefined ? graph.resources[hostId] : undefined;
|
|
34
|
-
if (hostNode === undefined) {
|
|
35
|
-
return local;
|
|
36
|
-
}
|
|
37
|
-
const target = hostTarget(resolveInputs(hostNode.inputs, createStore(), process.env, { lenient: false }));
|
|
38
|
-
return createLayeredSecretStore([createHostSecretStore(target, ssh), local], { backfill, log });
|
|
39
|
-
};
|
|
40
|
-
const init = buildCommand({
|
|
41
|
-
docs: { brief: "Scaffold local intent, desired-state, and app git repos" },
|
|
42
|
-
parameters: {
|
|
43
|
-
flags: {
|
|
44
|
-
dir: { kind: "parsed", parse: String, optional: true, brief: "Directory to scaffold in (default: .)" },
|
|
45
|
-
link: { kind: "boolean", brief: "Link @intentic/* to this monorepo's _libs for local development against unpublished packages" },
|
|
46
|
-
app: { kind: "parsed", parse: String, optional: true, brief: "Clone this git URL as the app repo instead of scaffolding a starter app" },
|
|
47
|
-
selfHost: { kind: "boolean", brief: "Scaffold the example app onto the auto-registered `self` deploy target (this machine) instead of a placeholder remote host" },
|
|
48
|
-
zone: { kind: "parsed", parse: String, optional: true, brief: "Cloudflare zone for the scaffolded app's domain (app.<zone>); used with --self-host" },
|
|
49
|
-
},
|
|
50
|
-
},
|
|
51
|
-
async func(flags) {
|
|
52
|
-
const out = createOutput(this.process.stdout, outputMode(process.env));
|
|
53
|
-
const { intentDir, targetDir, appDir } = await scaffold(flags.dir ?? ".", version, flags.link, flags.app, flags.selfHost, flags.zone);
|
|
54
|
-
out.text(`initialized ${intentDir} (with ${CONFIG_FILE}), ${targetDir}, and ${appDir}`);
|
|
55
|
-
out.result({ intentDir, targetDir, appDir });
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
const resolveCommand = buildCommand({
|
|
59
|
-
docs: { brief: "Resolve a deploy.config.ts into the desired-state artifact" },
|
|
60
|
-
parameters: {
|
|
61
|
-
flags: {
|
|
62
|
-
config: { kind: "parsed", parse: String, optional: true, brief: `Path to the intent config (default: ${CONFIG_PATH})` },
|
|
63
|
-
out: { kind: "parsed", parse: String, optional: true, brief: `Path to write the artifact (default: ${ARTIFACT_PATH})` },
|
|
64
|
-
syncControlPlane: {
|
|
65
|
-
kind: "boolean",
|
|
66
|
-
brief: "Push newly-required generated secrets into Forgejo and regenerate apply.yaml (run by the resolve pipeline post-adopt; needs GIT_TOKEN)",
|
|
67
|
-
},
|
|
68
|
-
},
|
|
69
|
-
},
|
|
70
|
-
async func(flags) {
|
|
71
|
-
const out = createOutput(this.process.stdout, outputMode(process.env));
|
|
72
|
-
const intent = await loadIntent(flags.config ?? CONFIG_PATH);
|
|
73
|
-
const artifactOut = flags.out ?? ARTIFACT_PATH;
|
|
74
|
-
const dir = dirname(artifactOut);
|
|
75
|
-
const previousGraph = flags.syncControlPlane && existsSync(artifactOut) ? await readArtifact(artifactOut) : undefined;
|
|
76
|
-
const zone = await discoverZone(intent, dir);
|
|
77
|
-
const graph = resolveState(intent, zone);
|
|
78
|
-
await writeArtifact(artifactOut, graph);
|
|
79
|
-
const count = Object.keys(graph.resources).length;
|
|
80
|
-
out.text(`resolved desired state (${count} resources) → ${artifactOut}`);
|
|
81
|
-
if (zone !== undefined) {
|
|
82
|
-
out.text(`discovered Cloudflare zone "${zone}" from the API token`);
|
|
83
|
-
}
|
|
84
|
-
const { env: envKeys, generated } = collectSecrets(graph);
|
|
85
|
-
if (envKeys.length > 0) {
|
|
86
|
-
await writeEnvExample(join(dir, `${ENV_FILE}.example`), envKeys);
|
|
87
|
-
out.text(`set these in ${ENV_FILE} before apply (see ${ENV_FILE}.example): ${envKeys.join(", ")}`);
|
|
88
|
-
}
|
|
89
|
-
if (generated.length > 0) {
|
|
90
|
-
await ensureGeneratedSecrets(createLocalSecretStore(dir), generated, process.env);
|
|
91
|
-
out.text(`generated these (stored in .secrets.json): ${generated.join(", ")}`);
|
|
92
|
-
}
|
|
93
|
-
let synced;
|
|
94
|
-
if (flags.syncControlPlane) {
|
|
95
|
-
const password = process.env[GIT_TOKEN_ENV];
|
|
96
|
-
if (password === undefined || password === "") {
|
|
97
|
-
throw new Error(`set ${GIT_TOKEN_ENV} (the Forgejo admin password) to use --sync-control-plane`);
|
|
98
|
-
}
|
|
99
|
-
synced = await syncControlPlaneSecrets({
|
|
100
|
-
previousGraph,
|
|
101
|
-
newGraph: graph,
|
|
102
|
-
env: process.env,
|
|
103
|
-
dir,
|
|
104
|
-
password,
|
|
105
|
-
cliVersion: version,
|
|
106
|
-
log: out.log,
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
out.result({
|
|
110
|
-
resources: count,
|
|
111
|
-
...(zone !== undefined ? { zone } : {}),
|
|
112
|
-
envSecrets: envKeys,
|
|
113
|
-
generatedSecrets: generated,
|
|
114
|
-
...(synced !== undefined ? { synced } : {}),
|
|
115
|
-
});
|
|
116
|
-
},
|
|
117
|
-
});
|
|
118
|
-
const planCommand = buildCommand({
|
|
119
|
-
docs: { brief: "Show what applying the artifact would create/update (read-only)" },
|
|
120
|
-
parameters: {
|
|
121
|
-
flags: { artifact: { kind: "parsed", parse: String, optional: true, brief: `Path to the artifact (default: ${ARTIFACT_PATH})` } },
|
|
122
|
-
},
|
|
123
|
-
async func(flags) {
|
|
124
|
-
const out = createOutput(this.process.stdout, outputMode(process.env));
|
|
125
|
-
const artifact = flags.artifact ?? ARTIFACT_PATH;
|
|
126
|
-
const dir = dirname(artifact);
|
|
127
|
-
loadEnvFile(dir);
|
|
128
|
-
const graph = await readArtifact(artifact);
|
|
129
|
-
const ssh = createSshExecutor(createKnownHostsStore(dir));
|
|
130
|
-
await ensureGeneratedSecrets(generatedSecretStore(graph, dir, ssh, false, out.log), collectSecrets(graph).generated, process.env);
|
|
131
|
-
const outcome = await plan(graph, { providers: createProviders({ ssh }), log: out.log, onEvent: out.onEvent });
|
|
132
|
-
for (const step of outcome.steps) {
|
|
133
|
-
out.text(`${step.action}\t${step.type}\t${step.id}${step.reason !== undefined ? `\t(${step.reason})` : ""}`);
|
|
134
|
-
}
|
|
135
|
-
out.result({ steps: outcome.steps, orphans: outcome.orphans });
|
|
136
|
-
},
|
|
137
|
-
});
|
|
138
|
-
const apply = buildCommand({
|
|
139
|
-
docs: { brief: "Execute the desired-state artifact until state reads true" },
|
|
140
|
-
parameters: {
|
|
141
|
-
flags: {
|
|
142
|
-
artifact: { kind: "parsed", parse: String, optional: true, brief: `Path to the artifact (default: ${ARTIFACT_PATH})` },
|
|
143
|
-
maxIterations: {
|
|
144
|
-
kind: "parsed",
|
|
145
|
-
parse: numberParser,
|
|
146
|
-
optional: true,
|
|
147
|
-
brief: `Max reconcile iterations (default ${DEFAULT_MAX_ITERATIONS})`,
|
|
148
|
-
},
|
|
149
|
-
previous: {
|
|
150
|
-
kind: "parsed",
|
|
151
|
-
parse: String,
|
|
152
|
-
optional: true,
|
|
153
|
-
brief: "Path to the last successfully-applied artifact; resources absent from the new one are pruned after convergence",
|
|
154
|
-
},
|
|
155
|
-
},
|
|
156
|
-
},
|
|
157
|
-
async func(flags) {
|
|
158
|
-
const out = createOutput(this.process.stdout, outputMode(process.env));
|
|
159
|
-
const artifact = flags.artifact ?? ARTIFACT_PATH;
|
|
160
|
-
const dir = dirname(artifact);
|
|
161
|
-
loadEnvFile(dir);
|
|
162
|
-
const graph = await readArtifact(artifact);
|
|
163
|
-
const ssh = createSshExecutor(createKnownHostsStore(dir));
|
|
164
|
-
const previousPath = flags.previous ?? join(dir, LAST_APPLIED_FILE);
|
|
165
|
-
const previous = existsSync(previousPath) ? await readArtifact(previousPath) : undefined;
|
|
166
|
-
const hostMoves = previous !== undefined ? detectHostMoves(previous, graph) : [];
|
|
167
|
-
const targets = Object.values(graph.resources)
|
|
168
|
-
.filter((node) => node.type === "host")
|
|
169
|
-
.map((node) => hostTarget(resolveInputs(node.inputs, createStore(), process.env, { lenient: false })));
|
|
170
|
-
const probes = targets.map((target) => createSshProbe(target, ssh));
|
|
171
|
-
const probe = probes.length === 0
|
|
172
|
-
? undefined
|
|
173
|
-
: async (url, status) => {
|
|
174
|
-
for (const p of probes) {
|
|
175
|
-
if (await p(url, status)) {
|
|
176
|
-
return true;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
return false;
|
|
180
|
-
};
|
|
181
|
-
const oldMoveTargets = hostMoves.map((move) => hostTarget(resolveInputs(move.oldNode.inputs, createStore(), process.env, { lenient: false })));
|
|
182
|
-
const lock = await acquireApplyLock(ssh, [...targets, ...oldMoveTargets], { log: out.log });
|
|
183
|
-
const onSignal = () => {
|
|
184
|
-
void lock.release().finally(() => process.exit(130));
|
|
185
|
-
};
|
|
186
|
-
process.once("SIGINT", onSignal);
|
|
187
|
-
process.once("SIGTERM", onSignal);
|
|
188
|
-
try {
|
|
189
|
-
await ensureGeneratedSecrets(generatedSecretStore(graph, dir, ssh, true, out.log), collectSecrets(graph).generated, process.env);
|
|
190
|
-
if (hostMoves.length > 0) {
|
|
191
|
-
await migrateHosts(hostMoves, { next: graph, ssh, env: process.env, tmpDir: tmpdir(), log: out.log });
|
|
192
|
-
}
|
|
193
|
-
const movedApplied = await applyMoves(graph, {
|
|
194
|
-
providers: createProviders({ ssh }),
|
|
195
|
-
log: out.log,
|
|
196
|
-
onEvent: out.onEvent,
|
|
197
|
-
env: process.env,
|
|
198
|
-
});
|
|
199
|
-
const result = await reconcile(graph, { providers: createProviders({ ssh }), log: out.log, onEvent: out.onEvent, ...(probe !== undefined ? { probe } : {}) }, { maxIterations: flags.maxIterations ?? DEFAULT_MAX_ITERATIONS });
|
|
200
|
-
await writeStatus(join(dir, STATUS_FILE), {
|
|
201
|
-
converged: result.converged,
|
|
202
|
-
iterations: result.iterations,
|
|
203
|
-
steps: result.outcome.steps,
|
|
204
|
-
});
|
|
205
|
-
let pruned = { deleted: [], skipped: [] };
|
|
206
|
-
if (previous !== undefined) {
|
|
207
|
-
await lock.renew();
|
|
208
|
-
await lock.verify();
|
|
209
|
-
const baseline = rewriteGraphForMoves(previous, movedApplied);
|
|
210
|
-
pruned = await prune(baseline, graph, { providers: createProviders({ ssh }), log: out.log, onEvent: out.onEvent, env: process.env });
|
|
211
|
-
if (pruned.deleted.length > 0 || pruned.skipped.length > 0) {
|
|
212
|
-
out.text(`pruned ${pruned.deleted.length} resource(s)${pruned.skipped.length > 0 ? `, ${pruned.skipped.length} left in place` : ""}`);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
await writeFile(join(dir, LAST_APPLIED_FILE), await readFile(artifact, "utf8"));
|
|
216
|
-
const access = collectAccess(graph, result.outcome.outputs, process.env);
|
|
217
|
-
out.text(`${result.converged ? "converged" : "did not converge"} in ${result.iterations} iteration(s)`);
|
|
218
|
-
if (access.length > 0) {
|
|
219
|
-
await writeAccessFile(join(dir, ACCESS_FILE), access);
|
|
220
|
-
out.text(formatAccessSummary(access));
|
|
221
|
-
}
|
|
222
|
-
out.result({
|
|
223
|
-
converged: result.converged,
|
|
224
|
-
iterations: result.iterations,
|
|
225
|
-
steps: result.outcome.steps,
|
|
226
|
-
outputs: result.outcome.outputs,
|
|
227
|
-
orphans: result.outcome.orphans,
|
|
228
|
-
pruned,
|
|
229
|
-
access,
|
|
230
|
-
});
|
|
231
|
-
const reconcileWebhook = result.outcome.outputs["discord"]?.["reconcileWebhook"];
|
|
232
|
-
if (typeof reconcileWebhook === "string" && reconcileWebhook !== "") {
|
|
233
|
-
const creates = result.outcome.steps.filter((s) => s.action === "create").length;
|
|
234
|
-
const updates = result.outcome.steps.filter((s) => s.action === "update").length;
|
|
235
|
-
const noops = result.outcome.steps.filter((s) => s.action === "noop").length;
|
|
236
|
-
const summary = [
|
|
237
|
-
`**intentic apply** — ${result.converged ? "✅ converged" : "⚠️ did not converge"} in ${result.iterations} iteration(s)`,
|
|
238
|
-
`📊 ${result.outcome.steps.length} resources: ${creates} created, ${updates} updated, ${noops} unchanged`,
|
|
239
|
-
...(result.outcome.orphans.length > 0 ? [`🗑️ ${result.outcome.orphans.length} orphan(s) detected`] : []),
|
|
240
|
-
].join("\n");
|
|
241
|
-
try {
|
|
242
|
-
await fetch(reconcileWebhook, {
|
|
243
|
-
method: "POST",
|
|
244
|
-
headers: { "Content-Type": "application/json" },
|
|
245
|
-
body: JSON.stringify({ content: summary }),
|
|
246
|
-
});
|
|
247
|
-
}
|
|
248
|
-
catch {
|
|
249
|
-
out.log("discord: failed to post reconcile summary (non-fatal)");
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
finally {
|
|
254
|
-
process.removeListener("SIGINT", onSignal);
|
|
255
|
-
process.removeListener("SIGTERM", onSignal);
|
|
256
|
-
await lock.release();
|
|
257
|
-
}
|
|
258
|
-
},
|
|
259
|
-
});
|
|
260
|
-
const adopt = buildCommand({
|
|
261
|
-
docs: { brief: "Push the local intent and desired-state repos to the provisioned Forgejo" },
|
|
262
|
-
parameters: {
|
|
263
|
-
flags: { artifact: { kind: "parsed", parse: String, optional: true, brief: `Path to the artifact (default: ${ARTIFACT_PATH})` } },
|
|
264
|
-
},
|
|
265
|
-
async func(flags) {
|
|
266
|
-
const out = createOutput(this.process.stdout, outputMode(process.env));
|
|
267
|
-
const artifact = flags.artifact ?? ARTIFACT_PATH;
|
|
268
|
-
const targetDir = dirname(artifact);
|
|
269
|
-
const intentDir = join(dirname(targetDir), INTENT_DIR);
|
|
270
|
-
loadEnvFile(targetDir);
|
|
271
|
-
const graph = await readArtifact(artifact);
|
|
272
|
-
const { domain, user, adminPasswordRef: ref } = forgejoIdentity(graph);
|
|
273
|
-
const generatedValues = await readGeneratedSecrets(targetDir);
|
|
274
|
-
const password = ref.source === "generated" ? generatedValues[ref.key] : process.env[ref.key];
|
|
275
|
-
if (password === undefined || password === "") {
|
|
276
|
-
throw new Error(`forgejo admin password (${ref.source} secret ${ref.key}) is not available`);
|
|
277
|
-
}
|
|
278
|
-
const { env: envKeys, generated: generatedKeys } = collectSecrets(graph);
|
|
279
|
-
const desiredStateSecrets = {};
|
|
280
|
-
for (const key of envKeys) {
|
|
281
|
-
const value = process.env[key];
|
|
282
|
-
if (value !== undefined && value !== "") {
|
|
283
|
-
desiredStateSecrets[key] = value;
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
for (const key of generatedKeys) {
|
|
287
|
-
const value = generatedValues[key];
|
|
288
|
-
if (value !== undefined) {
|
|
289
|
-
desiredStateSecrets[key] = value;
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
const inputs = {
|
|
293
|
-
cliVersion: version,
|
|
294
|
-
user,
|
|
295
|
-
domain,
|
|
296
|
-
configFile: CONFIG_FILE,
|
|
297
|
-
artifactFile: ARTIFACT_FILE,
|
|
298
|
-
intentRepo: INTENT_DIR,
|
|
299
|
-
desiredStateRepo: TARGET_DIR,
|
|
300
|
-
applySecretKeys: Object.keys(desiredStateSecrets).sort(),
|
|
301
|
-
forgejoPasswordKey: ref.key,
|
|
302
|
-
};
|
|
303
|
-
await writeControlPlaneWorkflows(intentDir, targetDir, inputs);
|
|
304
|
-
const baseUrl = `https://${domain}`;
|
|
305
|
-
const repos = await adoptRepos({
|
|
306
|
-
baseUrl,
|
|
307
|
-
user,
|
|
308
|
-
password,
|
|
309
|
-
repos: [
|
|
310
|
-
{ dir: intentDir, name: INTENT_DIR },
|
|
311
|
-
{ dir: targetDir, name: TARGET_DIR },
|
|
312
|
-
],
|
|
313
|
-
log: out.log,
|
|
314
|
-
});
|
|
315
|
-
const intentSecrets = { [GIT_USER_SECRET]: user, [GIT_TOKEN_SECRET]: password };
|
|
316
|
-
if (desiredStateSecrets["CLOUDFLARE_API_TOKEN"] !== undefined) {
|
|
317
|
-
intentSecrets["CLOUDFLARE_API_TOKEN"] = desiredStateSecrets["CLOUDFLARE_API_TOKEN"];
|
|
318
|
-
}
|
|
319
|
-
await setRepoSecrets({ api: forgejoApi, baseUrl, user, password, owner: user, name: INTENT_DIR, secrets: intentSecrets });
|
|
320
|
-
await setRepoSecrets({ api: forgejoApi, baseUrl, user, password, owner: user, name: TARGET_DIR, secrets: desiredStateSecrets });
|
|
321
|
-
out.text(`set ${Object.keys(intentSecrets).length} secret(s) on ${user}/${INTENT_DIR}, ${Object.keys(desiredStateSecrets).length} on ${user}/${TARGET_DIR}`);
|
|
322
|
-
out.result({
|
|
323
|
-
repos,
|
|
324
|
-
intentSecrets: Object.keys(intentSecrets).sort(),
|
|
325
|
-
desiredStateSecrets: Object.keys(desiredStateSecrets).sort(),
|
|
326
|
-
});
|
|
327
|
-
},
|
|
328
|
-
});
|
|
329
|
-
const restore = buildCommand({
|
|
330
|
-
docs: { brief: "Restore Forgejo/Komodo from a restic backup snapshot, then re-apply (one-shot recovery)" },
|
|
331
|
-
parameters: {
|
|
332
|
-
flags: {
|
|
333
|
-
artifact: { kind: "parsed", parse: String, optional: true, brief: `Path to the artifact (default: ${ARTIFACT_PATH})` },
|
|
334
|
-
snapshot: { kind: "parsed", parse: String, optional: true, brief: "restic snapshot id to restore (default: latest)" },
|
|
335
|
-
only: { kind: "parsed", parse: String, optional: true, brief: "Which to restore: forgejo | komodo | all (default: all)" },
|
|
336
|
-
},
|
|
337
|
-
},
|
|
338
|
-
async func(flags) {
|
|
339
|
-
const out = createOutput(this.process.stdout, outputMode(process.env));
|
|
340
|
-
const artifact = flags.artifact ?? ARTIFACT_PATH;
|
|
341
|
-
const dir = dirname(artifact);
|
|
342
|
-
loadEnvFile(dir);
|
|
343
|
-
const graph = await readArtifact(artifact);
|
|
344
|
-
const ssh = createSshExecutor(createKnownHostsStore(dir));
|
|
345
|
-
await ensureGeneratedSecrets(generatedSecretStore(graph, dir, ssh, false, out.log), collectSecrets(graph).generated, process.env);
|
|
346
|
-
const backupNode = Object.values(graph.resources).find((node) => node.type === "backup");
|
|
347
|
-
if (backupNode === undefined) {
|
|
348
|
-
throw new Error("no backup resource in the artifact — declare one with i.have.backup and apply it first");
|
|
349
|
-
}
|
|
350
|
-
const scope = flags.only ?? "all";
|
|
351
|
-
if (scope !== "forgejo" && scope !== "komodo" && scope !== "all") {
|
|
352
|
-
throw new Error(`--only must be one of forgejo|komodo|all, got "${scope}"`);
|
|
353
|
-
}
|
|
354
|
-
const resolved = resolveInputs(backupNode.inputs, createStore(), process.env, { lenient: false });
|
|
355
|
-
const repo = resolved["repo"];
|
|
356
|
-
const password = resolved["password"];
|
|
357
|
-
const image = resolved["image"];
|
|
358
|
-
if (typeof repo !== "string" || typeof password !== "string" || typeof image !== "string") {
|
|
359
|
-
throw new Error("backup resource is missing its repo/password/image inputs");
|
|
360
|
-
}
|
|
361
|
-
const credsRaw = resolved["credentials"];
|
|
362
|
-
const credentials = {};
|
|
363
|
-
if (typeof credsRaw === "object" && credsRaw !== null) {
|
|
364
|
-
for (const [key, value] of Object.entries(credsRaw)) {
|
|
365
|
-
if (typeof value === "string") {
|
|
366
|
-
credentials[key] = value;
|
|
367
|
-
}
|
|
368
|
-
}
|
|
369
|
-
}
|
|
370
|
-
await restoreBackup({
|
|
371
|
-
target: hostTarget(resolved),
|
|
372
|
-
image,
|
|
373
|
-
repo,
|
|
374
|
-
password,
|
|
375
|
-
credentials,
|
|
376
|
-
snapshot: flags.snapshot ?? "latest",
|
|
377
|
-
scope: scope,
|
|
378
|
-
log: out.log,
|
|
379
|
-
executor: ssh,
|
|
380
|
-
});
|
|
381
|
-
out.result({ snapshot: flags.snapshot ?? "latest", scope });
|
|
382
|
-
},
|
|
383
|
-
});
|
|
384
|
-
const deploymentsCommand = buildCommand({
|
|
385
|
-
docs: { brief: "List the app deployments Komodo manages, with their desired config (read-only)" },
|
|
386
|
-
parameters: {
|
|
387
|
-
flags: { artifact: { kind: "parsed", parse: String, optional: true, brief: `Path to the artifact (default: ${ARTIFACT_PATH})` } },
|
|
388
|
-
},
|
|
389
|
-
async func(flags) {
|
|
390
|
-
const out = createOutput(this.process.stdout, outputMode(process.env));
|
|
391
|
-
const deployments = await collectDeployments(flags.artifact ?? ARTIFACT_PATH, out.log);
|
|
392
|
-
out.text(`${deployments.length} deployment(s)`);
|
|
393
|
-
out.result({ deployments });
|
|
394
|
-
},
|
|
395
|
-
});
|
|
396
|
-
const sandboxTunnel = buildCommand({
|
|
397
|
-
docs: { brief: "Create/refresh the per-sandbox Cloudflare tunnel + DNS and print its connector token (used by connect.sh)" },
|
|
398
|
-
parameters: {
|
|
399
|
-
flags: {
|
|
400
|
-
service: {
|
|
401
|
-
kind: "parsed",
|
|
402
|
-
parse: String,
|
|
403
|
-
brief: "Internal service URL the tunnel routes to (e.g. http://intentic-sandbox-workspace:8787)",
|
|
404
|
-
},
|
|
405
|
-
previewService: {
|
|
406
|
-
kind: "parsed",
|
|
407
|
-
parse: String,
|
|
408
|
-
optional: true,
|
|
409
|
-
brief: "Dev-server URL to route the *.preview.<zone> wildcard to (e.g. http://intentic-sandbox-workspace:5173)",
|
|
410
|
-
},
|
|
411
|
-
zone: {
|
|
412
|
-
kind: "parsed",
|
|
413
|
-
parse: String,
|
|
414
|
-
optional: true,
|
|
415
|
-
brief: "Cloudflare zone for the DNS record (default: the API token's sole zone, or set ZONE)",
|
|
416
|
-
},
|
|
417
|
-
},
|
|
418
|
-
},
|
|
419
|
-
async func(flags) {
|
|
420
|
-
const apiToken = process.env["CLOUDFLARE_API_TOKEN"];
|
|
421
|
-
const connectToken = process.env["CONNECT_TOKEN"];
|
|
422
|
-
if (apiToken === undefined || apiToken === "") {
|
|
423
|
-
throw new Error("set CLOUDFLARE_API_TOKEN");
|
|
424
|
-
}
|
|
425
|
-
if (connectToken === undefined || connectToken === "") {
|
|
426
|
-
throw new Error("set CONNECT_TOKEN (the per-sandbox connection token)");
|
|
427
|
-
}
|
|
428
|
-
const zone = flags.zone ?? process.env["ZONE"];
|
|
429
|
-
const { token, hostname } = await createSandboxTunnel({
|
|
430
|
-
apiToken,
|
|
431
|
-
connectToken,
|
|
432
|
-
service: flags.service,
|
|
433
|
-
...(flags.previewService !== undefined && flags.previewService !== "" ? { previewService: flags.previewService } : {}),
|
|
434
|
-
...(zone !== undefined && zone !== "" ? { zone } : {}),
|
|
435
|
-
log: (message) => this.process.stderr.write(`${message}\n`),
|
|
436
|
-
});
|
|
437
|
-
this.process.stdout.write(`TUNNEL_TOKEN=${token}\nSANDBOX_HOSTNAME=${hostname}\n`);
|
|
438
|
-
},
|
|
439
|
-
});
|
|
1
|
+
import { buildApplication, buildRouteMap, text_en } from "@stricli/core";
|
|
2
|
+
import { addAppCommand } from "./add-app/add-app.command.js";
|
|
3
|
+
import { adopt } from "./adopt/adopt.command.js";
|
|
4
|
+
import { apply } from "./apply/apply.command.js";
|
|
5
|
+
import { deploymentsCommand } from "./deployments/deployments.command.js";
|
|
6
|
+
import { loadConfig } from "./env.config.js";
|
|
7
|
+
import { hostSshTunnel } from "./host-ssh-tunnel/host-ssh-tunnel.command.js";
|
|
8
|
+
import { init } from "./init/init.command.js";
|
|
9
|
+
import { version } from "./lib/version.js";
|
|
10
|
+
import { planCommand } from "./plan/plan.command.js";
|
|
11
|
+
import { resolveCommand } from "./resolve/resolve.command.js";
|
|
12
|
+
import { restore } from "./restore/restore.command.js";
|
|
13
|
+
import { sandboxTunnel } from "./sandbox-tunnel/sandbox-tunnel.command.js";
|
|
440
14
|
const formatException = (exc) => {
|
|
441
15
|
if (exc instanceof Error) {
|
|
442
|
-
return
|
|
16
|
+
return loadConfig().intenticDebug ? (exc.stack ?? exc.message) : exc.message;
|
|
443
17
|
}
|
|
444
18
|
return String(exc);
|
|
445
19
|
};
|
|
446
20
|
export const app = buildApplication(buildRouteMap({
|
|
447
|
-
routes: {
|
|
21
|
+
routes: {
|
|
22
|
+
init,
|
|
23
|
+
addApp: addAppCommand,
|
|
24
|
+
resolve: resolveCommand,
|
|
25
|
+
plan: planCommand,
|
|
26
|
+
apply,
|
|
27
|
+
adopt,
|
|
28
|
+
restore,
|
|
29
|
+
deployments: deploymentsCommand,
|
|
30
|
+
sandboxTunnel,
|
|
31
|
+
hostSshTunnel,
|
|
32
|
+
},
|
|
448
33
|
docs: { brief: "intentic — intent-driven deployment" },
|
|
449
34
|
}), {
|
|
450
35
|
name: "intentic",
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAM3E,MAAM,eAAe,GAAG,CAAC,GAAY,EAAU,EAAE;IAC7C,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACvB,OAAO,UAAU,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,GAAG,GAAG,gBAAgB,CAC/B,aAAa,CAAC;IACV,MAAM,EAAE;QACJ,IAAI;QACJ,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,WAAW;QACjB,KAAK;QACL,KAAK;QACL,OAAO;QACP,WAAW,EAAE,kBAAkB;QAC/B,aAAa;QACb,aAAa;KAChB;IACD,IAAI,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE;CACzD,CAAC,EACF;IACI,IAAI,EAAE,UAAU;IAChB,WAAW,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE;IACxC,OAAO,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE;IAC/C,YAAY,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;CAClH,CACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../src/apply/access.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAYvE,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAG3B,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxG;AAKD,eAAO,MAAM,aAAa,GACtB,OAAO,iBAAiB,EACxB,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EACpE,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,KAClD,WAAW,EAuBb,CAAC;AAeF,eAAO,MAAM,mBAAmB,GAAI,SAAS,SAAS,WAAW,EAAE,KAAG,MASrE,CAAC;AAWF,eAAO,MAAM,eAAe,GAAU,MAAM,MAAM,EAAE,SAAS,SAAS,WAAW,EAAE,KAAG,OAAO,CAAC,IAAI,CAMjG,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { writeFile } from "node:fs/promises";
|
|
2
|
-
import {
|
|
2
|
+
import { renderTemplate } from "../lib/templates.js";
|
|
3
|
+
import { secretRef } from "../secrets/secrets.js";
|
|
3
4
|
const SERVICE_LABELS = {
|
|
4
5
|
forgejo: "Forgejo (git)",
|
|
5
6
|
komodo: "Komodo (deploys)",
|
|
@@ -57,25 +58,10 @@ const markdownPassword = (password) => {
|
|
|
57
58
|
return password.source === "generated" ? "generated (see `.secrets.json`)" : `\`$${password.key}\``;
|
|
58
59
|
};
|
|
59
60
|
export const writeAccessFile = async (path, entries) => {
|
|
60
|
-
const services = entries
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
"Generated by `intentic apply`. User-supplied passwords are the values you set in `.env`; generated passwords are stored in `.secrets.json` (gitignored).",
|
|
66
|
-
];
|
|
67
|
-
if (services.length > 0) {
|
|
68
|
-
lines.push("", "| Service | URL | Username | Password |", "| --- | --- | --- | --- |");
|
|
69
|
-
for (const entry of services) {
|
|
70
|
-
lines.push(`| ${entry.label} | ${entry.url} | ${entry.username} | ${markdownPassword(entry.password)} |`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
if (apps.length > 0) {
|
|
74
|
-
lines.push("", "## App environments", "", "| Environment | URL |", "| --- | --- |");
|
|
75
|
-
for (const entry of apps) {
|
|
76
|
-
lines.push(`| ${entry.id} | ${entry.url} |`);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
await writeFile(path, `${lines.join("\n")}\n`);
|
|
61
|
+
const services = entries
|
|
62
|
+
.filter((entry) => entry.username !== undefined)
|
|
63
|
+
.map((entry) => ({ label: entry.label, url: entry.url, username: entry.username, password: markdownPassword(entry.password) }));
|
|
64
|
+
const apps = entries.filter((entry) => entry.username === undefined).map((entry) => ({ id: entry.id, url: entry.url }));
|
|
65
|
+
await writeFile(path, renderTemplate("access.md", { services, apps }));
|
|
80
66
|
};
|
|
81
67
|
//# sourceMappingURL=access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.js","sourceRoot":"","sources":["../../src/apply/access.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,MAAM,cAAc,GAAqC;IACrD,OAAO,EAAE,eAAe;IACxB,MAAM,EAAE,kBAAkB;IAC1B,MAAM,EAAE,wBAAwB;CACnC,CAAC;AAeF,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,KAAwB,EACxB,OAAoE,EACpE,GAAiD,EACpC,EAAE;IACf,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAChD,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YACxE,SAAS;QACb,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC1B,SAAS;QACb,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,GAAG,EAAE,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,MAAM,QAAQ,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACjI,OAAO,CAAC,IAAI,CAAC;YACT,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAC3C,GAAG;YACH,GAAG,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD,CAAC,CAAC;IACP,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAGF,MAAM,eAAe,GAAG,CAAC,QAAiC,EAAU,EAAE;IAClE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,KAAK,KAAK,SAAS;YAC/B,CAAC,CAAC,gBAAgB,QAAQ,CAAC,KAAK,4BAA4B;YAC5D,CAAC,CAAC,8CAA8C,CAAC;IACzD,CAAC;IACD,OAAO,iBAAiB,QAAQ,CAAC,GAAG,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,OAA+B,EAAU,EAAE;IAC3E,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChF,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC,CAAC;AAIF,MAAM,gBAAgB,GAAG,CAAC,QAAiC,EAAU,EAAE;IACnE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,IAAI,CAAC;AACxG,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,OAA+B,EAAiB,EAAE;IAClG,MAAM,QAAQ,GAAG,OAAO;SACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC;SAC/C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACpI,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACxH,MAAM,SAAS,CAAC,IAAI,EAAE,cAAc,CAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-lock.d.ts","sourceRoot":"","sources":["../../src/apply/apply-lock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAa,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAe7E,MAAM,WAAW,SAAS;IAEtB,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC;AAoED,eAAO,MAAM,gBAAgB,GACzB,UAAU,WAAW,EACrB,SAAS,SAAS,SAAS,EAAE,EAC7B,UAAS;IAAE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,KACnH,OAAO,CAAC,SAAS,CAuDnB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply-lock.js","sourceRoot":"","sources":["../../src/apply/apply-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apply.command.d.ts","sourceRoot":"","sources":["../../src/apply/apply.command.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,KAAK,cAAc,EAAgB,MAAM,eAAe,CAAC;AAoBhF,eAAO,MAAM,KAAK,iDAiKhB,CAAC"}
|