@nightowlsdev/cli 0.1.2 → 0.2.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.
Files changed (2) hide show
  1. package/dist/cli.js +12 -8
  2. package/package.json +14 -14
package/dist/cli.js CHANGED
@@ -39,12 +39,13 @@ var INSTALLED_FILE = /_nightowls_(.+)\.sql$/;
39
39
  async function runDbInstall(deps) {
40
40
  const migrations = collectMigrations(deps.plugins);
41
41
  const dir = `${deps.root.replace(/\/$/, "")}/${deps.out.replace(/^\//, "")}`;
42
- await deps.fs.mkdir(dir, { recursive: true }).catch(() => void 0);
42
+ if (!deps.dryRun) await deps.fs.mkdir(dir, { recursive: true }).catch(() => void 0);
43
43
  const existing = await deps.fs.readdir(dir).catch(() => []);
44
44
  const installed = new Set(
45
45
  existing.map((f) => INSTALLED_FILE.exec(f)?.[1]).filter((v) => Boolean(v))
46
46
  );
47
47
  const base = deps.now();
48
+ const stamp = deps.stamp ?? ((_v, i2, b) => migrationStamp(b, i2));
48
49
  const written = [];
49
50
  const skipped = [];
50
51
  let i = 0;
@@ -53,13 +54,13 @@ async function runDbInstall(deps) {
53
54
  skipped.push(m.version);
54
55
  continue;
55
56
  }
56
- const file = `${migrationStamp(base, i)}_nightowls_${m.version}.sql`;
57
- await deps.fs.writeFile(`${dir}/${file}`, `${m.sql.trimStart()}
57
+ const file = `${stamp(m.version, i, base)}_nightowls_${m.version}.sql`;
58
+ if (!deps.dryRun) await deps.fs.writeFile(`${dir}/${file}`, `${m.sql.trimStart()}
58
59
  `);
59
60
  written.push({ version: m.version, file });
60
61
  i += 1;
61
62
  }
62
- return { written, skipped };
63
+ return { written, skipped, dryRun: Boolean(deps.dryRun) };
63
64
  }
64
65
 
65
66
  // src/templates.ts
@@ -386,19 +387,22 @@ db.command("types").description("Generate TypeScript types for the nightowls sch
386
387
  const out = await runDbTypes({ exec });
387
388
  process.stdout.write(out);
388
389
  });
389
- db.command("install").description("Install Night Owls' migrations into your supabase/migrations/ (timestamped, idempotent) \u2014 apply them with `supabase db push`.").option("--out <dir>", "target migrations dir (relative to cwd)", "supabase/migrations").action(async (opts) => {
390
+ db.command("install").description("Install Night Owls' migrations into your supabase/migrations/ (timestamped, idempotent) \u2014 apply them with `supabase db push`.").option("--out <dir>", "target migrations dir (relative to cwd)", "supabase/migrations").option("--dry-run", "preview the migration set without writing any files", false).action(async (opts) => {
390
391
  const cwd = process.cwd();
391
392
  const plugins = await discoverPlugins(nodeDiscoverDeps(cwd));
392
- const { written, skipped } = await runDbInstall({
393
+ const { written, skipped, dryRun } = await runDbInstall({
393
394
  plugins,
394
395
  root: cwd,
395
396
  out: opts.out,
396
397
  fs: await nodeFs(),
397
- now: () => /* @__PURE__ */ new Date()
398
+ now: () => /* @__PURE__ */ new Date(),
399
+ dryRun: opts.dryRun
398
400
  });
399
- for (const w of written) console.log(`wrote ${opts.out}/${w.file}`);
401
+ const verb = dryRun ? "would write" : "wrote";
402
+ for (const w of written) console.log(`${verb} ${opts.out}/${w.file}`);
400
403
  for (const version of skipped) console.log(`skipped ${version} (already installed)`);
401
404
  if (!written.length) console.log("Nothing to install \u2014 all nightowls migrations already present.");
405
+ else if (dryRun) console.log(`Dry run \u2014 ${written.length} migration(s) would be written to ${opts.out}/. Re-run without --dry-run to apply.`);
402
406
  });
403
407
  program.command("plugins").description("List installed Night Owls plugins and the commands they expose.").action(async () => {
404
408
  const cwd = process.cwd();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nightowlsdev/cli",
3
- "version": "0.1.2",
3
+ "version": "0.2.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -36,22 +36,22 @@
36
36
  "tsup": "8.5.1",
37
37
  "typescript": "6.0.3",
38
38
  "vitest": "^3.2.0",
39
- "@nightowlsdev/core": "0.4.0",
40
- "@nightowlsdev/storage-supabase": "1.0.0",
41
- "@nightowlsdev/auth-supabase": "1.0.0",
42
- "@nightowlsdev/auth-auth0": "1.0.0",
43
- "@nightowlsdev/telemetry-otel": "1.0.0",
44
- "@nightowlsdev/telemetry-langfuse": "1.0.0",
45
- "@nightowlsdev/runner-nextjs": "1.0.0",
46
- "@nightowlsdev/runner-background": "1.0.0",
47
- "@nightowlsdev/mcp": "1.0.0",
39
+ "@nightowlsdev/core": "0.5.0",
40
+ "@nightowlsdev/auth-supabase": "2.0.0",
41
+ "@nightowlsdev/storage-supabase": "2.0.0",
42
+ "@nightowlsdev/auth-auth0": "2.0.0",
43
+ "@nightowlsdev/telemetry-otel": "2.0.0",
44
+ "@nightowlsdev/runner-background": "2.0.0",
45
+ "@nightowlsdev/runner-nextjs": "2.0.0",
46
+ "@nightowlsdev/mcp": "2.0.0",
47
+ "@nightowlsdev/telemetry-langfuse": "2.0.0",
48
48
  "@nightowlsdev/model-anthropic": "0.1.0",
49
- "@nightowlsdev/model-openai": "0.1.0",
49
+ "@nightowlsdev/model-openai": "0.2.0",
50
+ "@nightowlsdev/model-openrouter": "0.2.0",
50
51
  "@nightowlsdev/model-vercel-gateway": "0.1.0",
51
- "@nightowlsdev/model-openrouter": "0.1.0",
52
52
  "@nightowlsdev/tsconfig": "0.0.0",
53
- "@nightowlsdev/model-ollama": "0.1.0",
54
- "@nightowlsdev/eslint-config": "0.0.0"
53
+ "@nightowlsdev/eslint-config": "0.0.0",
54
+ "@nightowlsdev/model-ollama": "0.1.0"
55
55
  },
56
56
  "scripts": {
57
57
  "build": "tsup",