@take-out/cli 0.0.52 → 0.0.57

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 (56) hide show
  1. package/dist/cjs/cli.cjs +3 -1
  2. package/dist/cjs/cli.js +3 -1
  3. package/dist/cjs/cli.js.map +1 -1
  4. package/dist/cjs/commands/run-all.cjs +69 -0
  5. package/dist/cjs/commands/run-all.js +59 -0
  6. package/dist/cjs/commands/run-all.js.map +6 -0
  7. package/dist/cjs/commands/run.cjs +2 -2
  8. package/dist/cjs/commands/run.js +2 -2
  9. package/dist/cjs/commands/run.js.map +1 -1
  10. package/dist/cjs/commands/script.cjs +8 -83
  11. package/dist/cjs/commands/script.js +8 -85
  12. package/dist/cjs/commands/script.js.map +1 -1
  13. package/dist/cjs/utils/script-listing.cjs +9 -9
  14. package/dist/cjs/utils/script-listing.js +8 -8
  15. package/dist/cjs/utils/script-listing.js.map +1 -1
  16. package/dist/cjs/utils/script-utils.cjs +91 -0
  17. package/dist/cjs/utils/script-utils.js +87 -0
  18. package/dist/cjs/utils/script-utils.js.map +6 -0
  19. package/dist/cjs/utils/script-utils.native.js +126 -0
  20. package/dist/cjs/utils/script-utils.native.js.map +6 -0
  21. package/dist/esm/cli.js +3 -0
  22. package/dist/esm/cli.js.map +1 -1
  23. package/dist/esm/cli.mjs +3 -1
  24. package/dist/esm/cli.mjs.map +1 -1
  25. package/dist/esm/commands/run-all.js +46 -0
  26. package/dist/esm/commands/run-all.js.map +6 -0
  27. package/dist/esm/commands/run-all.mjs +46 -0
  28. package/dist/esm/commands/run-all.mjs.map +1 -0
  29. package/dist/esm/commands/run.js +2 -2
  30. package/dist/esm/commands/run.js.map +1 -1
  31. package/dist/esm/commands/run.mjs +2 -2
  32. package/dist/esm/commands/run.mjs.map +1 -1
  33. package/dist/esm/commands/script.js +6 -84
  34. package/dist/esm/commands/script.js.map +1 -1
  35. package/dist/esm/commands/script.mjs +7 -79
  36. package/dist/esm/commands/script.mjs.map +1 -1
  37. package/dist/esm/utils/script-listing.js +1 -5
  38. package/dist/esm/utils/script-listing.js.map +1 -1
  39. package/dist/esm/utils/script-listing.mjs +1 -1
  40. package/dist/esm/utils/script-listing.mjs.map +1 -1
  41. package/dist/esm/utils/script-utils.js +80 -0
  42. package/dist/esm/utils/script-utils.js.map +6 -0
  43. package/dist/esm/utils/script-utils.mjs +66 -0
  44. package/dist/esm/utils/script-utils.mjs.map +1 -0
  45. package/dist/esm/utils/script-utils.native.js +112 -0
  46. package/dist/esm/utils/script-utils.native.js.map +6 -0
  47. package/package.json +7 -7
  48. package/scripts/seed.ts +12 -4
  49. package/src/cli.ts +3 -0
  50. package/src/commands/run-all.ts +62 -0
  51. package/src/commands/run.ts +3 -2
  52. package/src/commands/script.ts +7 -157
  53. package/src/utils/script-listing.ts +1 -6
  54. package/src/utils/script-utils.ts +153 -0
  55. package/types/utils/script-utils.d.ts +13 -0
  56. package/types/utils/script-utils.d.ts.map +1 -0
@@ -0,0 +1,80 @@
1
+ import {
2
+ existsSync,
3
+ readdirSync,
4
+ statSync,
5
+ readFileSync,
6
+ writeFileSync,
7
+ mkdirSync
8
+ } from "node:fs";
9
+ import { homedir } from "node:os";
10
+ import { join, relative } from "node:path";
11
+ const CACHE_DIR = join(homedir(), ".takeout"), CACHE_FILE = join(CACHE_DIR, "script-cache.json");
12
+ function getLocalScriptsDir() {
13
+ return join(process.cwd(), "scripts");
14
+ }
15
+ function extractMetadata(filePath) {
16
+ try {
17
+ const lines = readFileSync(filePath, "utf-8").split(`
18
+ `).slice(0, 20), metadata = {};
19
+ for (const line of lines) {
20
+ const descMatch = line.match(/@description\s+(.+)/);
21
+ descMatch && descMatch[1] && (metadata.description = descMatch[1].trim());
22
+ const argsMatch = line.match(/@args\s+(.+)/);
23
+ argsMatch && argsMatch[1] && (metadata.args = argsMatch[1].split(",").map((a) => a.trim()));
24
+ }
25
+ const stat = statSync(filePath);
26
+ return metadata.mtime = stat.mtimeMs, metadata;
27
+ } catch {
28
+ return {};
29
+ }
30
+ }
31
+ function loadCache() {
32
+ try {
33
+ if (existsSync(CACHE_FILE))
34
+ return JSON.parse(readFileSync(CACHE_FILE, "utf-8"));
35
+ } catch {
36
+ }
37
+ return {};
38
+ }
39
+ function saveCache(cache) {
40
+ try {
41
+ existsSync(CACHE_DIR) || mkdirSync(CACHE_DIR, { recursive: !0 }), writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
42
+ } catch {
43
+ }
44
+ }
45
+ function getScriptMetadata(filePath) {
46
+ const cache = loadCache(), stat = statSync(filePath);
47
+ if (cache[filePath] && cache[filePath].mtime === stat.mtimeMs)
48
+ return cache[filePath];
49
+ const metadata = extractMetadata(filePath);
50
+ return cache[filePath] = metadata, saveCache(cache), metadata;
51
+ }
52
+ function discoverScripts(dir, baseDir = dir, depth = 0, maxDepth = 1) {
53
+ const scripts = /* @__PURE__ */ new Map();
54
+ if (!existsSync(dir))
55
+ return scripts;
56
+ try {
57
+ const entries = readdirSync(dir);
58
+ for (const entry of entries) {
59
+ const fullPath = join(dir, entry);
60
+ if (statSync(fullPath).isDirectory()) {
61
+ if (entry === "helpers" || depth >= maxDepth)
62
+ continue;
63
+ const subScripts = discoverScripts(fullPath, baseDir, depth + 1, maxDepth);
64
+ for (const [name, path] of subScripts)
65
+ scripts.set(name, path);
66
+ } else if (entry.endsWith(".ts") || entry.endsWith(".js")) {
67
+ const scriptName = relative(baseDir, fullPath).split("\\").join("/").replace(/\.(ts|js)$/, "");
68
+ scripts.set(scriptName, fullPath);
69
+ }
70
+ }
71
+ } catch {
72
+ }
73
+ return scripts;
74
+ }
75
+ export {
76
+ discoverScripts,
77
+ getLocalScriptsDir,
78
+ getScriptMetadata
79
+ };
80
+ //# sourceMappingURL=script-utils.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/script-utils.ts"],
4
+ "mappings": "AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,eAAe;AACxB,SAAS,MAAM,gBAAgB;AAG/B,MAAM,YAAY,KAAK,QAAQ,GAAG,UAAU,GACtC,aAAa,KAAK,WAAW,mBAAmB;AAa/C,SAAS,qBAA6B;AAC3C,SAAO,KAAK,QAAQ,IAAI,GAAG,SAAS;AACtC;AAGA,SAAS,gBAAgB,UAAkC;AACzD,MAAI;AAEF,UAAM,QADU,aAAa,UAAU,OAAO,EACxB,MAAM;AAAA,CAAI,EAAE,MAAM,GAAG,EAAE,GAEvC,WAA2B,CAAC;AAElC,eAAW,QAAQ,OAAO;AAExB,YAAM,YAAY,KAAK,MAAM,qBAAqB;AAClD,MAAI,aAAa,UAAU,CAAC,MAC1B,SAAS,cAAc,UAAU,CAAC,EAAE,KAAK;AAI3C,YAAM,YAAY,KAAK,MAAM,cAAc;AAC3C,MAAI,aAAa,UAAU,CAAC,MAC1B,SAAS,OAAO,UAAU,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;AAAA,IAE/D;AAGA,UAAM,OAAO,SAAS,QAAQ;AAC9B,oBAAS,QAAQ,KAAK,SAEf;AAAA,EACT,QAAc;AACZ,WAAO,CAAC;AAAA,EACV;AACF;AAGA,SAAS,YAAyB;AAChC,MAAI;AACF,QAAI,WAAW,UAAU;AACvB,aAAO,KAAK,MAAM,aAAa,YAAY,OAAO,CAAC;AAAA,EAEvD,QAAc;AAAA,EAEd;AACA,SAAO,CAAC;AACV;AAGA,SAAS,UAAU,OAAoB;AACrC,MAAI;AACF,IAAK,WAAW,SAAS,KACvB,UAAU,WAAW,EAAE,WAAW,GAAK,CAAC,GAE1C,cAAc,YAAY,KAAK,UAAU,OAAO,MAAM,CAAC,CAAC;AAAA,EAC1D,QAAc;AAAA,EAEd;AACF;AAGO,SAAS,kBAAkB,UAAkC;AAClE,QAAM,QAAQ,UAAU,GAClB,OAAO,SAAS,QAAQ;AAG9B,MAAI,MAAM,QAAQ,KAAK,MAAM,QAAQ,EAAE,UAAU,KAAK;AACpD,WAAO,MAAM,QAAQ;AAIvB,QAAM,WAAW,gBAAgB,QAAQ;AAGzC,eAAM,QAAQ,IAAI,UAClB,UAAU,KAAK,GAER;AACT;AAGO,SAAS,gBACd,KACA,UAAkB,KAClB,QAAgB,GAChB,WAAmB,GACE;AACrB,QAAM,UAAU,oBAAI,IAAoB;AAExC,MAAI,CAAC,WAAW,GAAG;AACjB,WAAO;AAGT,MAAI;AACF,UAAM,UAAU,YAAY,GAAG;AAE/B,eAAW,SAAS,SAAS;AAC3B,YAAM,WAAW,KAAK,KAAK,KAAK;AAGhC,UAFa,SAAS,QAAQ,EAErB,YAAY,GAAG;AAEtB,YAAI,UAAU,aAAa,SAAS;AAClC;AAGF,cAAM,aAAa,gBAAgB,UAAU,SAAS,QAAQ,GAAG,QAAQ;AACzE,mBAAW,CAAC,MAAM,IAAI,KAAK;AACzB,kBAAQ,IAAI,MAAM,IAAI;AAAA,MAE1B,WAAW,MAAM,SAAS,KAAK,KAAK,MAAM,SAAS,KAAK,GAAG;AAGzD,cAAM,aADe,SAAS,SAAS,QAAQ,EAAE,MAAM,IAAI,EAAE,KAAK,GAAG,EACrC,QAAQ,cAAc,EAAE;AACxD,gBAAQ,IAAI,YAAY,QAAQ;AAAA,MAClC;AAAA,IACF;AAAA,EACF,QAAc;AAAA,EAEd;AAEA,SAAO;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,66 @@
1
+ import { existsSync, readdirSync, statSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { join, relative } from "node:path";
4
+ const CACHE_DIR = join(homedir(), ".takeout"),
5
+ CACHE_FILE = join(CACHE_DIR, "script-cache.json");
6
+ function getLocalScriptsDir() {
7
+ return join(process.cwd(), "scripts");
8
+ }
9
+ function extractMetadata(filePath) {
10
+ try {
11
+ const lines = readFileSync(filePath, "utf-8").split(`
12
+ `).slice(0, 20),
13
+ metadata = {};
14
+ for (const line of lines) {
15
+ const descMatch = line.match(/@description\s+(.+)/);
16
+ descMatch && descMatch[1] && (metadata.description = descMatch[1].trim());
17
+ const argsMatch = line.match(/@args\s+(.+)/);
18
+ argsMatch && argsMatch[1] && (metadata.args = argsMatch[1].split(",").map(a => a.trim()));
19
+ }
20
+ const stat = statSync(filePath);
21
+ return metadata.mtime = stat.mtimeMs, metadata;
22
+ } catch {
23
+ return {};
24
+ }
25
+ }
26
+ function loadCache() {
27
+ try {
28
+ if (existsSync(CACHE_FILE)) return JSON.parse(readFileSync(CACHE_FILE, "utf-8"));
29
+ } catch {}
30
+ return {};
31
+ }
32
+ function saveCache(cache) {
33
+ try {
34
+ existsSync(CACHE_DIR) || mkdirSync(CACHE_DIR, {
35
+ recursive: !0
36
+ }), writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
37
+ } catch {}
38
+ }
39
+ function getScriptMetadata(filePath) {
40
+ const cache = loadCache(),
41
+ stat = statSync(filePath);
42
+ if (cache[filePath] && cache[filePath].mtime === stat.mtimeMs) return cache[filePath];
43
+ const metadata = extractMetadata(filePath);
44
+ return cache[filePath] = metadata, saveCache(cache), metadata;
45
+ }
46
+ function discoverScripts(dir, baseDir = dir, depth = 0, maxDepth = 1) {
47
+ const scripts = /* @__PURE__ */new Map();
48
+ if (!existsSync(dir)) return scripts;
49
+ try {
50
+ const entries = readdirSync(dir);
51
+ for (const entry of entries) {
52
+ const fullPath = join(dir, entry);
53
+ if (statSync(fullPath).isDirectory()) {
54
+ if (entry === "helpers" || depth >= maxDepth) continue;
55
+ const subScripts = discoverScripts(fullPath, baseDir, depth + 1, maxDepth);
56
+ for (const [name, path] of subScripts) scripts.set(name, path);
57
+ } else if (entry.endsWith(".ts") || entry.endsWith(".js")) {
58
+ const scriptName = relative(baseDir, fullPath).split("\\").join("/").replace(/\.(ts|js)$/, "");
59
+ scripts.set(scriptName, fullPath);
60
+ }
61
+ }
62
+ } catch {}
63
+ return scripts;
64
+ }
65
+ export { discoverScripts, getLocalScriptsDir, getScriptMetadata };
66
+ //# sourceMappingURL=script-utils.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["existsSync","readdirSync","statSync","readFileSync","writeFileSync","mkdirSync","homedir","join","relative","CACHE_DIR","CACHE_FILE","getLocalScriptsDir","process","cwd","extractMetadata","filePath","lines","split","slice","metadata","line","descMatch","match","description","trim","argsMatch","args","map","a","stat","mtime","mtimeMs","loadCache","JSON","parse","saveCache","cache","recursive","stringify","getScriptMetadata","discoverScripts","dir","baseDir","depth","maxDepth","scripts","Map","entries","entry","fullPath","isDirectory","subScripts","name","path","set","endsWith","scriptName","replace"],"sources":["../../../src/utils/script-utils.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,112 @@
1
+ import { existsSync, readdirSync, statSync, readFileSync, writeFileSync, mkdirSync } from "fs";
2
+ import { homedir } from "os";
3
+ import { join, relative } from "path";
4
+ var CACHE_DIR = join(homedir(), ".takeout"), CACHE_FILE = join(CACHE_DIR, "script-cache.json");
5
+ function getLocalScriptsDir() {
6
+ return join(process.cwd(), "scripts");
7
+ }
8
+ function extractMetadata(filePath) {
9
+ try {
10
+ var content = readFileSync(filePath, "utf-8"), lines = content.split(`
11
+ `).slice(0, 20), metadata = {}, _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
12
+ try {
13
+ for (var _iterator = lines[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
14
+ var line = _step.value, descMatch = line.match(/@description\s+(.+)/);
15
+ descMatch && descMatch[1] && (metadata.description = descMatch[1].trim());
16
+ var argsMatch = line.match(/@args\s+(.+)/);
17
+ argsMatch && argsMatch[1] && (metadata.args = argsMatch[1].split(",").map(function(a) {
18
+ return a.trim();
19
+ }));
20
+ }
21
+ } catch (err) {
22
+ _didIteratorError = !0, _iteratorError = err;
23
+ } finally {
24
+ try {
25
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
26
+ } finally {
27
+ if (_didIteratorError)
28
+ throw _iteratorError;
29
+ }
30
+ }
31
+ var stat = statSync(filePath);
32
+ return metadata.mtime = stat.mtimeMs, metadata;
33
+ } catch {
34
+ return {};
35
+ }
36
+ }
37
+ function loadCache() {
38
+ try {
39
+ if (existsSync(CACHE_FILE))
40
+ return JSON.parse(readFileSync(CACHE_FILE, "utf-8"));
41
+ } catch {
42
+ }
43
+ return {};
44
+ }
45
+ function saveCache(cache) {
46
+ try {
47
+ existsSync(CACHE_DIR) || mkdirSync(CACHE_DIR, {
48
+ recursive: !0
49
+ }), writeFileSync(CACHE_FILE, JSON.stringify(cache, null, 2));
50
+ } catch {
51
+ }
52
+ }
53
+ function getScriptMetadata(filePath) {
54
+ var cache = loadCache(), stat = statSync(filePath);
55
+ if (cache[filePath] && cache[filePath].mtime === stat.mtimeMs)
56
+ return cache[filePath];
57
+ var metadata = extractMetadata(filePath);
58
+ return cache[filePath] = metadata, saveCache(cache), metadata;
59
+ }
60
+ function discoverScripts(dir) {
61
+ var baseDir = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : dir, depth = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : 0, maxDepth = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : 1, scripts = /* @__PURE__ */ new Map();
62
+ if (!existsSync(dir))
63
+ return scripts;
64
+ try {
65
+ var entries = readdirSync(dir), _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
66
+ try {
67
+ for (var _iterator = entries[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
68
+ var entry = _step.value, fullPath = join(dir, entry), stat = statSync(fullPath);
69
+ if (stat.isDirectory()) {
70
+ if (entry === "helpers" || depth >= maxDepth)
71
+ continue;
72
+ var subScripts = discoverScripts(fullPath, baseDir, depth + 1, maxDepth), _iteratorNormalCompletion1 = !0, _didIteratorError1 = !1, _iteratorError1 = void 0;
73
+ try {
74
+ for (var _iterator1 = subScripts[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
75
+ var [name, path] = _step1.value;
76
+ scripts.set(name, path);
77
+ }
78
+ } catch (err) {
79
+ _didIteratorError1 = !0, _iteratorError1 = err;
80
+ } finally {
81
+ try {
82
+ !_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
83
+ } finally {
84
+ if (_didIteratorError1)
85
+ throw _iteratorError1;
86
+ }
87
+ }
88
+ } else if (entry.endsWith(".ts") || entry.endsWith(".js")) {
89
+ var relativePath = relative(baseDir, fullPath).split("\\").join("/"), scriptName = relativePath.replace(/\.(ts|js)$/, "");
90
+ scripts.set(scriptName, fullPath);
91
+ }
92
+ }
93
+ } catch (err) {
94
+ _didIteratorError = !0, _iteratorError = err;
95
+ } finally {
96
+ try {
97
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
98
+ } finally {
99
+ if (_didIteratorError)
100
+ throw _iteratorError;
101
+ }
102
+ }
103
+ } catch {
104
+ }
105
+ return scripts;
106
+ }
107
+ export {
108
+ discoverScripts,
109
+ getLocalScriptsDir,
110
+ getScriptMetadata
111
+ };
112
+ //# sourceMappingURL=script-utils.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/utils/script-utils.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@take-out/cli",
3
- "version": "0.0.52",
3
+ "version": "0.0.57",
4
4
  "description": "CLI tools for Takeout starter kit - interactive onboarding and project setup",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "source": "src/index.ts",
8
8
  "main": "dist/cjs",
9
9
  "module": "dist/esm",
10
- "types": "./types/index.d.ts",
10
+ "types": "./src/index.ts",
11
11
  "bin": {
12
12
  "takeout": "./cli.mjs",
13
13
  "tko": "./cli.mjs"
@@ -39,8 +39,8 @@
39
39
  "./withOpSqliteStatic": "./src/withOpSqliteStatic.cjs"
40
40
  },
41
41
  "scripts": {
42
- "build": "tamagui-build",
43
- "watch": "SKIP_INITIAL_BUILD=1 tamagui-build --watch",
42
+ "build": "tamagui-build --skip-native --skip-types",
43
+ "watch": "tamagui-build --skip-native --skip-types --watch",
44
44
  "typecheck": "tko run typecheck",
45
45
  "lint": "oxlint src",
46
46
  "lint:fix": "oxfmt src && oxlint --fix --fix-suggestions src",
@@ -50,8 +50,8 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@clack/prompts": "^0.8.2",
53
- "@take-out/docs": "0.0.52",
54
- "@take-out/scripts": "0.0.52",
53
+ "@take-out/docs": "0.0.57",
54
+ "@take-out/scripts": "0.0.57",
55
55
  "citty": "^0.1.6",
56
56
  "picocolors": "^1.1.1"
57
57
  },
@@ -64,7 +64,7 @@
64
64
  }
65
65
  },
66
66
  "devDependencies": {
67
- "@tamagui/build": "^2.0.0-1769320275396",
67
+ "@tamagui/build": "2.0.0-rc.0",
68
68
  "@types/node": "24.0.3",
69
69
  "bun-types": "latest",
70
70
  "oxfmt": "^0.16.0",
package/scripts/seed.ts CHANGED
@@ -62,24 +62,32 @@ const seedPosts = [
62
62
  id: 'seed-post-1',
63
63
  userId: 'seed-user-1',
64
64
  image: 'https://images.unsplash.com/photo-1511920170033-f8396924c348?w=1200',
65
+ imageWidth: 1200,
66
+ imageHeight: 800,
65
67
  caption: 'morning coffee vibes',
66
68
  },
67
69
  {
68
70
  id: 'seed-post-2',
69
71
  userId: 'seed-user-2',
70
72
  image: 'https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=1200',
73
+ imageWidth: 1200,
74
+ imageHeight: 800,
71
75
  caption: 'caught this sunset on my hike today',
72
76
  },
73
77
  {
74
78
  id: 'seed-post-3',
75
79
  userId: 'seed-user-3',
76
80
  image: 'https://images.unsplash.com/photo-1552053831-71594a27632d?w=1200',
81
+ imageWidth: 1200,
82
+ imageHeight: 799,
77
83
  caption: 'someone wanted to say hi',
78
84
  },
79
85
  {
80
86
  id: 'seed-post-4',
81
87
  userId: 'seed-user-4',
82
88
  image: 'https://images.unsplash.com/photo-1480714378408-67cf0d13bc1b?w=1200',
89
+ imageWidth: 1200,
90
+ imageHeight: 799,
83
91
  caption: 'city lights never get old',
84
92
  },
85
93
  ]
@@ -176,10 +184,10 @@ async function seed() {
176
184
 
177
185
  for (const p of seedPosts) {
178
186
  await pool.query(
179
- `INSERT INTO post (id, "userId", image, caption, "hiddenByAdmin", "createdAt", "commentCount")
180
- VALUES ($1, $2, $3, $4, $5, $6, $7)
181
- ON CONFLICT (id) DO NOTHING`,
182
- [p.id, p.userId, p.image, p.caption, false, now, 0]
187
+ `INSERT INTO post (id, "userId", image, "imageWidth", "imageHeight", caption, "hiddenByAdmin", "createdAt", "commentCount")
188
+ VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
189
+ ON CONFLICT (id) DO UPDATE SET "imageWidth" = $4, "imageHeight" = $5`,
190
+ [p.id, p.userId, p.image, p.imageWidth, p.imageHeight, p.caption, false, now, 0]
183
191
  )
184
192
 
185
193
  console.info(` created post: ${p.id}`)
package/src/cli.ts CHANGED
@@ -15,6 +15,7 @@ import { docsCommand } from './commands/docs'
15
15
  import { envSetupCommand } from './commands/env-setup'
16
16
  import { onboardCommand } from './commands/onboard'
17
17
  import { runCommand } from './commands/run'
18
+ import { runAllCommand } from './commands/run-all'
18
19
  import { scriptCommand } from './commands/script'
19
20
  import { syncCommand } from './commands/sync'
20
21
  import { listAllScripts } from './utils/script-listing'
@@ -83,6 +84,7 @@ if (isShorthand) {
83
84
  'docs',
84
85
  'onboard',
85
86
  'run',
87
+ 'run-all',
86
88
  'script',
87
89
  'env:setup',
88
90
  'sync',
@@ -130,6 +132,7 @@ const main = defineCommand({
130
132
  docs: docsCommand,
131
133
  'env:setup': envSetupCommand,
132
134
  run: runCommand,
135
+ 'run-all': runAllCommand,
133
136
  script: scriptCommand,
134
137
  sync: syncCommand,
135
138
  changed: changedCommand,
@@ -0,0 +1,62 @@
1
+ import { spawn } from 'node:child_process'
2
+ import { existsSync, readFileSync } from 'node:fs'
3
+ import { resolve, parse } from 'node:path'
4
+
5
+ import { defineCommand } from 'citty'
6
+
7
+ export const runAllCommand = defineCommand({
8
+ meta: {
9
+ name: 'run-all',
10
+ description: 'Run multiple package.json scripts in parallel',
11
+ },
12
+ args: {
13
+ scripts: {
14
+ type: 'positional',
15
+ description: 'Scripts to run in parallel',
16
+ required: false,
17
+ },
18
+ },
19
+ run: async () => {
20
+ // Get all arguments after 'run-all'
21
+ const scriptArgs = process.argv.slice(3)
22
+
23
+ // Find the project root by looking for package.json with workspaces or takeout field
24
+ let currentDir = process.cwd()
25
+ let projectRoot = ''
26
+
27
+ while (currentDir !== parse(currentDir).root) {
28
+ const packageJsonPath = resolve(currentDir, 'package.json')
29
+ if (existsSync(packageJsonPath)) {
30
+ try {
31
+ const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf8'))
32
+ if (pkg.workspaces || pkg.takeout) {
33
+ projectRoot = currentDir
34
+ break
35
+ }
36
+ } catch {}
37
+ }
38
+ currentDir = resolve(currentDir, '..')
39
+ }
40
+
41
+ if (!projectRoot) {
42
+ console.error('Could not find project root')
43
+ process.exit(1)
44
+ }
45
+
46
+ // check if local packages/scripts exists (takeout monorepo), otherwise use installed package
47
+ const localScriptsPath = resolve(projectRoot, 'packages/scripts/src/run.ts')
48
+ const scriptPath = existsSync(localScriptsPath)
49
+ ? localScriptsPath
50
+ : resolve(projectRoot, 'node_modules/@take-out/scripts/src/run.ts')
51
+
52
+ const child = spawn('bun', [scriptPath, ...scriptArgs], {
53
+ stdio: 'inherit',
54
+ shell: false,
55
+ })
56
+
57
+ const code = await new Promise<number>((resolve) => {
58
+ child.on('exit', (code) => resolve(code || 0))
59
+ })
60
+ process.exit(code)
61
+ },
62
+ })
@@ -34,7 +34,7 @@ export const runCommand = defineCommand({
34
34
 
35
35
  if (hasAllFlag) {
36
36
  // Run all scripts in this category in parallel
37
- const { discoverScripts } = await import('./script')
37
+ const { discoverScripts } = await import('../utils/script-utils')
38
38
  const { runScriptsInParallel } = await import('../utils/parallel-runner')
39
39
  const pc = (await import('picocolors')).default
40
40
  const categoryScripts = discoverScripts(categoryPath)
@@ -59,7 +59,8 @@ export const runCommand = defineCommand({
59
59
  }
60
60
 
61
61
  // Lazy load script functions only when needed
62
- const { discoverScripts, getScriptMetadata } = await import('./script')
62
+ const { discoverScripts, getScriptMetadata } =
63
+ await import('../utils/script-utils')
63
64
  const pc = (await import('picocolors')).default
64
65
 
65
66
  // List scripts in this category