directus-deploy-cli 0.1.0 → 0.3.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/cli.js CHANGED
@@ -95,7 +95,7 @@ const program = new Command();
95
95
  program
96
96
  .name("directus-deploy")
97
97
  .description("Reconcile a Directus environment to the state described in directus_config/snapshot/. Per-entity, non-atomic.")
98
- .version("0.1.0");
98
+ .version("0.3.0");
99
99
  function attachCommon(cmd) {
100
100
  return cmd
101
101
  .option("--url <url>", "Directus base URL (env: DIRECTUS_URL)")
@@ -107,7 +107,7 @@ function attachCommon(cmd) {
107
107
  .option("--config-dir <path>", "path to directus_config/collections (holds policies.json, permissions.json, roles.json, …)", "./directus_config/collections")
108
108
  .option("--register-dir <path>", "path to migrations/register", "./migrations/register")
109
109
  .option("--seed-dir <path>", "path to directus_config/seed (Tractr-style {collection, meta, data} files)", "./directus_config/seed")
110
- .option("--migrations-dir <path>", "path to migrations/*.sql (raw SQL, tracked in lola_deploy_migrations)", "./migrations")
110
+ .option("--migrations-dir <path>", "path to migrations/*.sql (raw SQL, tracked in _directus_deploy_migrations)", "./migrations")
111
111
  .option("--json", "emit JSON report instead of human-readable");
112
112
  }
113
113
  attachCommon(program.command("plan"))
@@ -125,6 +125,48 @@ attachCommon(program.command("verify"))
125
125
  .action(async (_, cmd) => {
126
126
  process.exit(await execute({ dryRun: true, strict: true }, cmd.optsWithGlobals()));
127
127
  });
128
+ // migrations adopt: bootstrap the tracker on an env whose migrations were
129
+ // applied via some prior mechanism. Inserts (filename, sha256) rows without
130
+ // executing any SQL. Idempotent — re-adopting is a no-op when hashes match.
131
+ const migrationsGroup = program
132
+ .command("migrations")
133
+ .description("migration-specific commands");
134
+ migrationsGroup
135
+ .command("adopt")
136
+ .description("Insert current migrations/*.sql into the tracker WITHOUT running them. Use once per env when cutting over from a prior deploy mechanism.")
137
+ .option("--url <url>", "Directus base URL (env: DIRECTUS_URL)")
138
+ .option("--token <token>", "Directus admin token (env: DIRECTUS_TOKEN)")
139
+ .option("--target <label>", "friendly label for logs (default: URL hostname)")
140
+ .option("--migrations-dir <path>", "path to migrations/*.sql", "./migrations")
141
+ .option("--dry-run", "report what would be adopted, don't write")
142
+ .option("--json", "emit JSON report instead of human-readable")
143
+ .action(async (opts) => {
144
+ const url = opts.url ?? process.env.DIRECTUS_URL;
145
+ const token = opts.token ?? process.env.DIRECTUS_TOKEN;
146
+ if (!url)
147
+ throw new Error("--url or DIRECTUS_URL required");
148
+ if (!token)
149
+ throw new Error("--token or DIRECTUS_TOKEN required");
150
+ const target = opts.target ?? new URL(url).hostname;
151
+ const client = createDirectusClient({ baseUrl: url, token });
152
+ const { adoptMigrations } = await import("./reconcilers/migrations.js");
153
+ const results = await adoptMigrations({
154
+ migrationsDir: opts.migrationsDir,
155
+ client,
156
+ opts: { dryRun: Boolean(opts.dryRun) },
157
+ });
158
+ const counts = { created: 0, updated: 0, unchanged: 0, skipped: 0, failed: 0 };
159
+ for (const r of results)
160
+ counts[r.action] += 1;
161
+ const report = { target, results, counts };
162
+ if (opts.json) {
163
+ process.stdout.write(formatJson(report) + "\n");
164
+ }
165
+ else {
166
+ process.stdout.write(formatHuman(report) + "\n");
167
+ }
168
+ process.exit(counts.failed > 0 ? 1 : 0);
169
+ });
128
170
  program.parseAsync(process.argv).catch((e) => {
129
171
  process.stderr.write(`directus-deploy: ${e.message}\n`);
130
172
  process.exit(2);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,34 @@
1
1
  import { readdir, readFile } from "node:fs/promises";
2
- import { join, extname, basename } from "node:path";
2
+ import { createHash } from "node:crypto";
3
+ import { join, extname } from "node:path";
3
4
  import { splitSql } from "../sql.js";
4
- // Apply migrations/*.sql files idempotently. Tracks applied set in a
5
- // `lola_deploy_migrations` table on the target so we don't re-run history on
6
- // every deploy (the backend's convention is that migrations are idempotent
7
- // via `IF NOT EXISTS`, so re-running is safe, but pointless and slow).
5
+ // Migration reconciler with a content-hash tracker table.
8
6
  //
9
- // Uses Directus's /raw-query/execute endpoint — the same one the backend has
10
- // used for years. Not Postgres-agnostic, but nothing else in this repo is
11
- // either (we're a Directus deploy tool). Callers on a fresh env need the
12
- // endpoint deployed as an extension; we detect the 404 and skip cleanly.
7
+ // Tracker shape:
13
8
  //
14
- // Requires: /raw-query/execute deployed on the target. We PROBE it first so a
15
- // missing extension yields a clean skip rather than N confusing errors.
16
- const TRACKER_TABLE = "lola_deploy_migrations";
9
+ // CREATE TABLE _directus_deploy_migrations (
10
+ // filename TEXT PRIMARY KEY,
11
+ // sha256 TEXT NOT NULL,
12
+ // applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
13
+ // )
14
+ //
15
+ // Per-file classification:
16
+ //
17
+ // filename absent from tracker → NEW (apply, then insert)
18
+ // filename present, hash matches → UNCHANGED (skip execution)
19
+ // filename present, hash differs → MUTATED (fail hard, don't touch DB)
20
+ //
21
+ // Bootstrap (see adoptMigrations): a fresh env whose migrations were applied
22
+ // via some prior mechanism needs a one-shot import that inserts each file's
23
+ // (name, hash) WITHOUT running the SQL. Prevents duplicate application.
24
+ //
25
+ // Uses Directus's /raw-query/execute endpoint. A missing endpoint yields a
26
+ // clean skip rather than N confusing errors.
27
+ const TRACKER_TABLE = "_directus_deploy_migrations";
17
28
  const CREATE_TRACKER = `
18
29
  CREATE TABLE IF NOT EXISTS ${TRACKER_TABLE} (
19
30
  filename TEXT PRIMARY KEY,
31
+ sha256 TEXT NOT NULL,
20
32
  applied_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
21
33
  );
22
34
  `;
@@ -28,15 +40,44 @@ async function rawQuery(client, sql) {
28
40
  return r;
29
41
  }
30
42
  catch (e) {
31
- // 404 = extension not installed
32
43
  const msg = e.message;
33
44
  if (msg.includes(" 404 "))
34
45
  return null;
35
46
  throw e;
36
47
  }
37
48
  }
38
- async function fetchAppliedFilenames(client) {
39
- const r = await rawQuery(client, `SELECT filename FROM ${TRACKER_TABLE}`);
49
+ function stripLeadingComments(s) {
50
+ let i = 0;
51
+ while (true) {
52
+ while (i < s.length && /\s/.test(s[i]))
53
+ i += 1;
54
+ if (s[i] === "-" && s[i + 1] === "-") {
55
+ const nl = s.indexOf("\n", i);
56
+ if (nl === -1)
57
+ return "";
58
+ i = nl + 1;
59
+ continue;
60
+ }
61
+ if (s[i] === "/" && s[i + 1] === "*") {
62
+ const end = s.indexOf("*/", i);
63
+ if (end === -1)
64
+ return "";
65
+ i = end + 2;
66
+ continue;
67
+ }
68
+ break;
69
+ }
70
+ return s.slice(i);
71
+ }
72
+ function sha256(s) {
73
+ return createHash("sha256").update(s).digest("hex");
74
+ }
75
+ async function ensureTracker(client) {
76
+ const r = await rawQuery(client, CREATE_TRACKER);
77
+ return !!r?.success && !!r?.results?.[0]?.success;
78
+ }
79
+ async function fetchTracker(client) {
80
+ const r = await rawQuery(client, `SELECT filename, sha256 FROM ${TRACKER_TABLE}`);
40
81
  if (r === null)
41
82
  return null;
42
83
  if (!r.success)
@@ -44,19 +85,45 @@ async function fetchAppliedFilenames(client) {
44
85
  const first = r.results?.[0];
45
86
  if (!first?.success)
46
87
  return null;
47
- const rows = first.data ?? [];
48
- const set = new Set();
49
- for (const row of rows) {
50
- if (row && typeof row === "object" && "filename" in row) {
51
- set.add(String(row.filename));
88
+ const map = new Map();
89
+ for (const row of first.data ?? []) {
90
+ if (row && typeof row === "object" && "filename" in row && "sha256" in row) {
91
+ const rr = row;
92
+ map.set(String(rr.filename), String(rr.sha256));
52
93
  }
53
94
  }
54
- return set;
95
+ return map;
96
+ }
97
+ function sqlLiteral(s) {
98
+ return `'${s.replace(/'/g, "''")}'`;
99
+ }
100
+ async function insertTrackerRow(client, filename, hash) {
101
+ const r = await rawQuery(client, `INSERT INTO ${TRACKER_TABLE} (filename, sha256) VALUES (${sqlLiteral(filename)}, ${sqlLiteral(hash)}) ON CONFLICT (filename) DO NOTHING`);
102
+ const inner = r?.results?.[0];
103
+ if (!r?.success || !inner?.success) {
104
+ return { ok: false, reason: inner?.error ?? "tracker insert failed" };
105
+ }
106
+ return { ok: true };
107
+ }
108
+ async function readMigrationFiles(dir) {
109
+ let entries;
110
+ try {
111
+ entries = await readdir(dir);
112
+ }
113
+ catch {
114
+ return [];
115
+ }
116
+ const names = entries.filter((f) => extname(f) === ".sql" && !f.startsWith("_")).sort();
117
+ const out = [];
118
+ for (const filename of names) {
119
+ const path = join(dir, filename);
120
+ const raw = await readFile(path, "utf8");
121
+ out.push({ filename, path, raw, hash: sha256(raw) });
122
+ }
123
+ return out;
55
124
  }
56
125
  export async function reconcileMigrations(input) {
57
126
  const results = [];
58
- // Probe for the endpoint. Failing here is not an error — a fresh env just
59
- // hasn't installed the raw-query extension yet.
60
127
  const probe = await rawQuery(input.client, "SELECT 1 AS ok");
61
128
  if (probe === null) {
62
129
  results.push({
@@ -67,20 +134,14 @@ export async function reconcileMigrations(input) {
67
134
  });
68
135
  return results;
69
136
  }
70
- let entries;
71
- try {
72
- entries = await readdir(input.migrationsDir);
73
- }
74
- catch {
75
- return results; // no migrations dir → nothing to apply
76
- }
77
- const files = entries.filter((f) => extname(f) === ".sql" && !f.startsWith("_")).sort();
137
+ const files = await readMigrationFiles(input.migrationsDir);
78
138
  if (files.length === 0)
79
139
  return results;
80
- // Ensure the tracker exists (idempotent).
140
+ // Tracker create is a schema mutation → do it only outside dry-run. In
141
+ // dry-run, if the tracker is missing, treat everything as NEW (accurate).
81
142
  if (!input.opts.dryRun) {
82
- const created = await rawQuery(input.client, CREATE_TRACKER);
83
- if (!created?.success) {
143
+ const ok = await ensureTracker(input.client);
144
+ if (!ok) {
84
145
  results.push({
85
146
  kind: "migrations",
86
147
  label: `migrations/${TRACKER_TABLE}`,
@@ -90,51 +151,27 @@ export async function reconcileMigrations(input) {
90
151
  return results;
91
152
  }
92
153
  }
93
- const applied = (await fetchAppliedFilenames(input.client)) ?? new Set();
94
- for (const filename of files) {
95
- const label = `migrations/${filename}`;
96
- if (applied.has(filename)) {
154
+ const tracker = (await fetchTracker(input.client)) ?? new Map();
155
+ for (const file of files) {
156
+ const label = `migrations/${file.filename}`;
157
+ const recordedHash = tracker.get(file.filename);
158
+ // UNCHANGED — already applied at this hash.
159
+ if (recordedHash === file.hash) {
97
160
  results.push({ kind: "migrations", label, action: "unchanged" });
98
161
  continue;
99
162
  }
100
- const full = join(input.migrationsDir, filename);
101
- let raw;
102
- try {
103
- raw = await readFile(full, "utf8");
104
- }
105
- catch (e) {
106
- results.push({ kind: "migrations", label, action: "failed", reason: e.message });
163
+ // MUTATED recorded under a different hash. Never rewrite silently.
164
+ if (recordedHash !== undefined && recordedHash !== file.hash) {
165
+ results.push({
166
+ kind: "migrations",
167
+ label,
168
+ action: "failed",
169
+ reason: `content mismatch: tracker recorded sha256 ${recordedHash.slice(0, 12)}…, file now hashes to ${file.hash.slice(0, 12)}…. Migrations are immutable — add a new migration instead.`,
170
+ });
107
171
  continue;
108
172
  }
109
- // Filter out statements that are purely comments/whitespace after their
110
- // leading `--` or `/* ... */` blocks. Anything else (including statements
111
- // that BEGIN with a comment but have real SQL after) stays.
112
- const stripLeadingComments = (s) => {
113
- let i = 0;
114
- // repeat until no comments remain at the head
115
- // eslint-disable-next-line no-constant-condition
116
- while (true) {
117
- while (i < s.length && /\s/.test(s[i]))
118
- i += 1;
119
- if (s[i] === "-" && s[i + 1] === "-") {
120
- const nl = s.indexOf("\n", i);
121
- if (nl === -1)
122
- return "";
123
- i = nl + 1;
124
- continue;
125
- }
126
- if (s[i] === "/" && s[i + 1] === "*") {
127
- const end = s.indexOf("*/", i);
128
- if (end === -1)
129
- return "";
130
- i = end + 2;
131
- continue;
132
- }
133
- break;
134
- }
135
- return s.slice(i);
136
- };
137
- const statements = splitSql(raw).filter((s) => {
173
+ // NEW.
174
+ const statements = splitSql(file.raw).filter((s) => {
138
175
  const stripped = stripLeadingComments(s.trim()).trim();
139
176
  return stripped.length > 0 && stripped !== ";";
140
177
  });
@@ -151,7 +188,6 @@ export async function reconcileMigrations(input) {
151
188
  });
152
189
  continue;
153
190
  }
154
- // Apply. If any statement fails, report and stop (don't record as applied).
155
191
  let failedReason = null;
156
192
  for (const stmt of statements) {
157
193
  const r = await rawQuery(input.client, stmt);
@@ -165,13 +201,13 @@ export async function reconcileMigrations(input) {
165
201
  results.push({ kind: "migrations", label, action: "failed", reason: failedReason });
166
202
  continue;
167
203
  }
168
- const recorded = await rawQuery(input.client, `INSERT INTO ${TRACKER_TABLE} (filename) VALUES ('${basename(filename).replace(/'/g, "''")}')`);
169
- if (!recorded?.success) {
204
+ const rec = await insertTrackerRow(input.client, file.filename, file.hash);
205
+ if (!rec.ok) {
170
206
  results.push({
171
207
  kind: "migrations",
172
208
  label,
173
209
  action: "failed",
174
- reason: "applied statements but could not record in tracker",
210
+ reason: `applied SQL but tracker insert failed: ${rec.reason}`,
175
211
  });
176
212
  continue;
177
213
  }
@@ -179,4 +215,80 @@ export async function reconcileMigrations(input) {
179
215
  }
180
216
  return results;
181
217
  }
218
+ // Bootstrap for envs whose migrations were applied via a prior mechanism.
219
+ // Inserts (filename, sha256) rows without executing any SQL. Idempotent:
220
+ // re-adopting is a no-op when hashes match. Fails on hash conflict, which
221
+ // tells the caller the file was edited since the target env applied it.
222
+ export async function adoptMigrations(input) {
223
+ const results = [];
224
+ const probe = await rawQuery(input.client, "SELECT 1 AS ok");
225
+ if (probe === null) {
226
+ results.push({
227
+ kind: "migrations",
228
+ label: "migrations",
229
+ action: "skipped",
230
+ reason: "/raw-query/execute not available on this target",
231
+ });
232
+ return results;
233
+ }
234
+ const files = await readMigrationFiles(input.migrationsDir);
235
+ if (files.length === 0)
236
+ return results;
237
+ if (!input.opts.dryRun) {
238
+ const ok = await ensureTracker(input.client);
239
+ if (!ok) {
240
+ results.push({
241
+ kind: "migrations",
242
+ label: `migrations/${TRACKER_TABLE}`,
243
+ action: "failed",
244
+ reason: "could not create tracker table",
245
+ });
246
+ return results;
247
+ }
248
+ }
249
+ const tracker = (await fetchTracker(input.client)) ?? new Map();
250
+ for (const file of files) {
251
+ const label = `migrations/${file.filename}`;
252
+ const recordedHash = tracker.get(file.filename);
253
+ if (recordedHash === file.hash) {
254
+ results.push({ kind: "migrations", label, action: "unchanged" });
255
+ continue;
256
+ }
257
+ if (recordedHash !== undefined) {
258
+ results.push({
259
+ kind: "migrations",
260
+ label,
261
+ action: "failed",
262
+ reason: `already adopted with sha256 ${recordedHash.slice(0, 12)}…, refusing to overwrite with ${file.hash.slice(0, 12)}…`,
263
+ });
264
+ continue;
265
+ }
266
+ if (input.opts.dryRun) {
267
+ results.push({
268
+ kind: "migrations",
269
+ label,
270
+ action: "created",
271
+ reason: `would adopt (sha256 ${file.hash.slice(0, 12)}…)`,
272
+ });
273
+ continue;
274
+ }
275
+ const rec = await insertTrackerRow(input.client, file.filename, file.hash);
276
+ if (!rec.ok) {
277
+ results.push({
278
+ kind: "migrations",
279
+ label,
280
+ action: "failed",
281
+ reason: rec.reason,
282
+ });
283
+ continue;
284
+ }
285
+ results.push({
286
+ kind: "migrations",
287
+ label,
288
+ action: "created",
289
+ reason: `adopted (sha256 ${file.hash.slice(0, 12)}…)`,
290
+ });
291
+ }
292
+ return results;
293
+ }
182
294
  //# sourceMappingURL=migrations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/reconcilers/migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/reconcilers/migrations.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "directus-deploy-cli",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Per-entity, non-atomic Directus deployment tool. Reconciles collections/fields/relations/roles/policies/permissions/flows/operations/migrations/seeds from git to any environment.",
5
5
  "type": "module",
6
6
  "bin": {