@madebyseed/seed-cli-tools 3.0.2 → 4.0.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 (81) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/__fixtures__/legacy-js-min/baseline/theme.dev.js +13 -0
  3. package/__fixtures__/legacy-js-min/baseline/theme.prod.js +1 -0
  4. package/__fixtures__/legacy-js-min/dist/assets/theme.js +13 -0
  5. package/__fixtures__/legacy-js-min/package.json +9 -0
  6. package/__fixtures__/legacy-js-min/src/scripts/components/sample.js +4 -0
  7. package/__fixtures__/legacy-js-min/src/scripts/theme.js +9 -0
  8. package/__fixtures__/legacy-js-min/src/scripts/vendor/lib.js +7 -0
  9. package/__fixtures__/legacy-js-min/src/scripts/vendor.js +3 -0
  10. package/__fixtures__/legacy-js-min/verify.sh +34 -0
  11. package/__fixtures__/module-js-min/dist/assets/components-greeter.js +6 -0
  12. package/__fixtures__/module-js-min/dist/assets/components-greeter.js.map +1 -0
  13. package/__fixtures__/module-js-min/dist/assets/components-items.js +5 -0
  14. package/__fixtures__/module-js-min/dist/assets/components-items.js.map +1 -0
  15. package/__fixtures__/module-js-min/dist/assets/header.js +20 -0
  16. package/__fixtures__/module-js-min/dist/assets/header.js.map +1 -0
  17. package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js +8 -0
  18. package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js.map +1 -0
  19. package/__fixtures__/module-js-min/dist/assets/vendor-lib.js +4 -0
  20. package/__fixtures__/module-js-min/dist/assets/vendor-lib.js.map +1 -0
  21. package/__fixtures__/module-js-min/package.json +9 -0
  22. package/__fixtures__/module-js-min/seed.project.json +15 -0
  23. package/__fixtures__/module-js-min/src/scripts/components/greeter.js +4 -0
  24. package/__fixtures__/module-js-min/src/scripts/components/items.js +3 -0
  25. package/__fixtures__/module-js-min/src/scripts/header.js +18 -0
  26. package/__fixtures__/module-js-min/src/scripts/sections/cart/items.js +6 -0
  27. package/__fixtures__/module-js-min/src/scripts/vendor/lib.js +2 -0
  28. package/__fixtures__/module-js-min/verify.sh +58 -0
  29. package/lib/commands/watch.js +55 -7
  30. package/lib/commands/watch.js.map +1 -1
  31. package/lib/shopify-bin.d.ts +14 -0
  32. package/lib/shopify-bin.js +18 -0
  33. package/lib/shopify-bin.js.map +1 -0
  34. package/lib/tasks/build-js-module.d.ts +2 -0
  35. package/lib/tasks/build-js-module.js +93 -0
  36. package/lib/tasks/build-js-module.js.map +1 -0
  37. package/lib/tasks/build-js.js +13 -1
  38. package/lib/tasks/build-js.js.map +1 -1
  39. package/lib/tasks/includes/config.d.ts +2 -0
  40. package/lib/tasks/includes/config.js +3 -0
  41. package/lib/tasks/includes/config.js.map +1 -1
  42. package/lib/tasks/includes/js-mode.d.ts +12 -0
  43. package/lib/tasks/includes/js-mode.js +42 -0
  44. package/lib/tasks/includes/js-mode.js.map +1 -0
  45. package/lib/tasks/watch-tui/App.d.ts +8 -0
  46. package/lib/tasks/watch-tui/App.js +337 -0
  47. package/lib/tasks/watch-tui/App.js.map +1 -0
  48. package/lib/tasks/watch-tui/classify.d.ts +39 -0
  49. package/lib/tasks/watch-tui/classify.js +84 -0
  50. package/lib/tasks/watch-tui/classify.js.map +1 -0
  51. package/lib/tasks/watch-tui/index.d.ts +30 -0
  52. package/lib/tasks/watch-tui/index.js +299 -0
  53. package/lib/tasks/watch-tui/index.js.map +1 -0
  54. package/lib/tasks/watch-tui/shopify-parse.d.ts +24 -0
  55. package/lib/tasks/watch-tui/shopify-parse.js +87 -0
  56. package/lib/tasks/watch-tui/shopify-parse.js.map +1 -0
  57. package/lib/tasks/watch-tui/state.d.ts +68 -0
  58. package/lib/tasks/watch-tui/state.js +61 -0
  59. package/lib/tasks/watch-tui/state.js.map +1 -0
  60. package/lib/tasks/watch-tui/theme-info.d.ts +10 -0
  61. package/lib/tasks/watch-tui/theme-info.js +79 -0
  62. package/lib/tasks/watch-tui/theme-info.js.map +1 -0
  63. package/lib/utils.js +63 -87
  64. package/lib/utils.js.map +1 -1
  65. package/package.json +11 -2
  66. package/src/commands/watch.ts +70 -20
  67. package/src/shopify-bin.ts +21 -0
  68. package/src/tasks/build-js-module.ts +92 -0
  69. package/src/tasks/build-js.ts +13 -1
  70. package/src/tasks/includes/config.ts +5 -0
  71. package/src/tasks/includes/js-mode.ts +48 -0
  72. package/src/tasks/watch-tui/App.tsx +486 -0
  73. package/src/tasks/watch-tui/classify.ts +120 -0
  74. package/src/tasks/watch-tui/index.ts +342 -0
  75. package/src/tasks/watch-tui/shopify-parse.ts +103 -0
  76. package/src/tasks/watch-tui/state.ts +113 -0
  77. package/src/tasks/watch-tui/theme-info.ts +109 -0
  78. package/src/types/declarations.d.ts +19 -1
  79. package/src/utils.ts +64 -93
  80. package/tsconfig.json +3 -2
  81. package/tsconfig.tsbuildinfo +1 -1
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TuiStore = void 0;
4
+ const events_1 = require("events");
5
+ const MAX_LOGS = 5000;
6
+ /**
7
+ * Flag-based state machine — same model the original draft used. Any
8
+ * meaningful event flips the state directly; no in-flight counter to get
9
+ * stuck. The Outcome line in App.tsx is just a translation of (state,
10
+ * lastBuild, lastError) into one line.
11
+ */
12
+ class TuiStore extends events_1.EventEmitter {
13
+ constructor(opts = {}) {
14
+ super();
15
+ this.state = "starting";
16
+ this.logs = [];
17
+ this.shopify = {};
18
+ this.startedAt = Date.now();
19
+ this.seq = 0;
20
+ this.sourceLabel = opts.sourceLabel;
21
+ this.themeInfo = opts.themeInfo;
22
+ }
23
+ pushLog(kind, text) {
24
+ const entry = {
25
+ id: ++this.seq,
26
+ ts: Date.now(),
27
+ kind,
28
+ text,
29
+ };
30
+ this.logs.push(entry);
31
+ if (this.logs.length > MAX_LOGS)
32
+ this.logs.shift();
33
+ this.emit("change");
34
+ return entry;
35
+ }
36
+ setState(next) {
37
+ if (this.state === next)
38
+ return;
39
+ this.state = next;
40
+ this.emit("change");
41
+ }
42
+ setLastBuild(build) {
43
+ this.lastBuild = build;
44
+ this.emit("change");
45
+ }
46
+ setLastError(err) {
47
+ this.lastError = err;
48
+ this.state = "error";
49
+ this.emit("change");
50
+ }
51
+ clearLastError() {
52
+ this.lastError = undefined;
53
+ this.emit("change");
54
+ }
55
+ updateShopify(patch) {
56
+ this.shopify = { ...this.shopify, ...patch };
57
+ this.emit("change");
58
+ }
59
+ }
60
+ exports.TuiStore = TuiStore;
61
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/tasks/watch-tui/state.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AAgDtC,MAAM,QAAQ,GAAG,IAAI,CAAC;AAEtB;;;;;GAKG;AACH,MAAa,QAAS,SAAQ,qBAAY;IAWxC,YAAY,OAAwD,EAAE;QACpE,KAAK,EAAE,CAAC;QAXV,UAAK,GAAe,UAAU,CAAC;QAG/B,SAAI,GAAe,EAAE,CAAC;QAEtB,YAAO,GAAkB,EAAE,CAAC;QAE5B,cAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACf,QAAG,GAAG,CAAC,CAAC;QAId,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,IAAe,EAAE,IAAY;QACnC,MAAM,KAAK,GAAa;YACtB,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG;YACd,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;YACd,IAAI;YACJ,IAAI;SACL,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ,CAAC,IAAgB;QACvB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,YAAY,CAAC,KAAgB;QAC3B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,YAAY,CAAC,GAAc;QACzB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,aAAa,CAAC,KAA6B;QACzC,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;CACF;AAxDD,4BAwDC"}
@@ -0,0 +1,10 @@
1
+ import type { ThemeInfo } from "./state";
2
+ /**
3
+ * Build dashboard info from whatever config files exist. Precedence:
4
+ * 1. seed.context.json (active context) — full info
5
+ * 2. seed.project.json (newer project config) — store domain only
6
+ * 3. seed.config.js (legacy) — store domain only
7
+ * Returns an empty object if nothing is present; the dashboard renders
8
+ * whatever fields are populated.
9
+ */
10
+ export declare function loadThemeInfo(cwd: string, storeKey?: string): ThemeInfo;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadThemeInfo = loadThemeInfo;
4
+ const fs_1 = require("fs");
5
+ const path_1 = require("path");
6
+ /**
7
+ * Build dashboard info from whatever config files exist. Precedence:
8
+ * 1. seed.context.json (active context) — full info
9
+ * 2. seed.project.json (newer project config) — store domain only
10
+ * 3. seed.config.js (legacy) — store domain only
11
+ * Returns an empty object if nothing is present; the dashboard renders
12
+ * whatever fields are populated.
13
+ */
14
+ function loadThemeInfo(cwd, storeKey = "main") {
15
+ const info = {};
16
+ const context = loadContext(cwd);
17
+ if (context)
18
+ Object.assign(info, context);
19
+ if (!info.storeDomain) {
20
+ info.storeDomain =
21
+ loadProjectStore(cwd, storeKey) ?? loadLegacyStore(cwd, storeKey);
22
+ }
23
+ return info;
24
+ }
25
+ function loadContext(cwd) {
26
+ const file = (0, path_1.join)(cwd, "seed.context.json");
27
+ if (!(0, fs_1.existsSync)(file))
28
+ return null;
29
+ try {
30
+ const parsed = JSON.parse((0, fs_1.readFileSync)(file, "utf-8"));
31
+ const id = parsed.activeContext;
32
+ if (!id || !parsed.contexts?.[id])
33
+ return null;
34
+ const ctx = parsed.contexts[id];
35
+ return {
36
+ contextName: ctx.name,
37
+ contextStatus: ctx.status,
38
+ branch: ctx.git?.branch,
39
+ baseBranch: ctx.git?.baseBranch,
40
+ storeDomain: ctx.shopify?.storeDomain,
41
+ previewThemeName: ctx.shopify?.previewThemeName,
42
+ previewThemeId: ctx.shopify?.previewThemeId,
43
+ previewUrl: ctx.shopify?.previewUrl,
44
+ customizerUrl: ctx.shopify?.customizerUrl,
45
+ asanaTaskUrl: ctx.asana?.taskUrl,
46
+ prUrl: ctx.github?.prUrl,
47
+ };
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ }
53
+ function loadProjectStore(cwd, storeKey) {
54
+ const file = (0, path_1.join)(cwd, "seed.project.json");
55
+ if (!(0, fs_1.existsSync)(file))
56
+ return undefined;
57
+ try {
58
+ const parsed = JSON.parse((0, fs_1.readFileSync)(file, "utf-8"));
59
+ return parsed.stores?.[storeKey]?.domain;
60
+ }
61
+ catch {
62
+ return undefined;
63
+ }
64
+ }
65
+ function loadLegacyStore(cwd, storeKey) {
66
+ const file = (0, path_1.join)(cwd, "seed.config.js");
67
+ if (!(0, fs_1.existsSync)(file))
68
+ return undefined;
69
+ try {
70
+ // require() caches; delete first so dev-edits to seed.config.js show up.
71
+ delete require.cache[require.resolve(file)];
72
+ const legacy = require(file);
73
+ return legacy.stores?.[storeKey]?.domain || legacy.store;
74
+ }
75
+ catch {
76
+ return undefined;
77
+ }
78
+ }
79
+ //# sourceMappingURL=theme-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme-info.js","sourceRoot":"","sources":["../../../src/tasks/watch-tui/theme-info.ts"],"names":[],"mappings":";;AA0CA,sCAYC;AAtDD,2BAA8C;AAC9C,+BAA4B;AAiC5B;;;;;;;GAOG;AACH,SAAgB,aAAa,CAAC,GAAW,EAAE,QAAQ,GAAG,MAAM;IAC1D,MAAM,IAAI,GAAc,EAAE,CAAC;IAE3B,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,OAAO;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW;YACd,gBAAgB,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAoB,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QACxE,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;QAChC,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO;YACL,WAAW,EAAE,GAAG,CAAC,IAAI;YACrB,aAAa,EAAE,GAAG,CAAC,MAAM;YACzB,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM;YACvB,UAAU,EAAE,GAAG,CAAC,GAAG,EAAE,UAAU;YAC/B,WAAW,EAAE,GAAG,CAAC,OAAO,EAAE,WAAW;YACrC,gBAAgB,EAAE,GAAG,CAAC,OAAO,EAAE,gBAAgB;YAC/C,cAAc,EAAE,GAAG,CAAC,OAAO,EAAE,cAAc;YAC3C,UAAU,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU;YACnC,aAAa,EAAE,GAAG,CAAC,OAAO,EAAE,aAAa;YACzC,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO;YAChC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK;SACzB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,QAAgB;IACrD,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,mBAAmB,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAExC,IAAI,CAAC;QACH,MAAM,MAAM,GAAsB,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,GAAW,EAAE,QAAgB;IACpD,MAAM,IAAI,GAAG,IAAA,WAAI,EAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;IACzC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAExC,IAAI,CAAC;QACH,yEAAyE;QACzE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAqB,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
package/lib/utils.js CHANGED
@@ -24,6 +24,7 @@ const cross_spawn_1 = __importDefault(require("cross-spawn"));
24
24
  const path_1 = require("path");
25
25
  const fs_1 = require("fs");
26
26
  const config_1 = __importDefault(require("./config"));
27
+ const shopify_bin_1 = require("./shopify-bin");
27
28
  /**
28
29
  * Get seed.project.json from project root dir
29
30
  *
@@ -82,135 +83,110 @@ function getStorePassword(themeRoot, store) {
82
83
  * @namespace seed-cli.shopifyCLI
83
84
  * @memberof seed-cli
84
85
  */
86
+ // All shopify spawn calls go through `shopifyCommand` so they pick up the
87
+ // bundled `@shopify/cli` binary advertised by seed-cli via SEED_SHOPIFY_BIN.
88
+ // PATH `shopify` is the fallback for when seed-tools is invoked outside the
89
+ // seed-cli wrapper (e.g. running gulp directly).
85
90
  exports.shopifyCLI = {
86
- /**
87
- * shopify login
88
- *
89
- * @memberof seed-cli.shopifyCLI
90
- * @param {string} store - store's myshopify domain name
91
- * @returns {object} - spawnSync object or, node's <ChildProcess> object if async
92
- */
93
91
  login: (store) => {
94
- const args = ["switch", "--store", store];
95
- const options = {
92
+ const { command, args, shell } = (0, shopify_bin_1.shopifyCommand)([
93
+ "switch",
94
+ "--store",
95
+ store,
96
+ ]);
97
+ return cross_spawn_1.default.sync(command, args, {
96
98
  env: process.env,
97
99
  stdio: "inherit",
98
- shell: true,
99
- };
100
- return cross_spawn_1.default.sync("shopify", args, options);
100
+ shell,
101
+ });
101
102
  },
102
- /**
103
- * shopify theme serve
104
- *
105
- * @memberof seed-cli.shopifyCLI
106
- * @param {string} store - store's myshopify domain name
107
- * @param {object} options - node spawn options
108
- * @returns {object} - node's ChildProcess
109
- */
110
103
  serve: (store, options = {}) => {
111
- return (0, cross_spawn_1.default)("shopify theme", ["dev", "--store", store, "--path", "dist"], {
104
+ const { command, args, shell } = (0, shopify_bin_1.shopifyCommand)([
105
+ "theme",
106
+ "dev",
107
+ "--store",
108
+ store,
109
+ "--path",
110
+ "dist",
111
+ ]);
112
+ return (0, cross_spawn_1.default)(command, args, {
112
113
  env: process.env,
113
114
  stdio: "inherit",
114
- shell: true,
115
+ shell,
115
116
  ...options,
116
117
  });
117
118
  },
118
- /**
119
- * shopify theme pull
120
- *
121
- * @memberof seed-cli.shopifyCLI
122
- * @param {string} store - store's myshopify domain name
123
- * @param {string} themeId - shopify theme id to pull from
124
- * @param {string} dir - directory to pull into
125
- * @param {boolean} [nodelete = true] - run command with --no-delete flag
126
- * @returns {object} - node's ChildProcess
127
- */
128
119
  pull: (store, themeId, dir = "./src", nodelete = true) => {
129
- let args = ["pull", "--store", store];
120
+ const sub = ["theme", "pull", "--store", store];
130
121
  if (themeId)
131
- args = args.concat(["--theme", themeId, "--path", dir]);
122
+ sub.push("--theme", themeId, "--path", dir);
132
123
  if (nodelete)
133
- args.push("--nodelete");
134
- return (0, cross_spawn_1.default)("shopify theme", args, {
124
+ sub.push("--nodelete");
125
+ const { command, args, shell } = (0, shopify_bin_1.shopifyCommand)(sub);
126
+ return (0, cross_spawn_1.default)(command, args, {
135
127
  env: process.env,
136
128
  stdio: "inherit",
137
- shell: true,
129
+ shell,
138
130
  });
139
131
  },
140
- /**
141
- * shopify theme push
142
- *
143
- * @memberof seed-cli.shopifyCLI
144
- * @param {string} store - store's myshopify domain name
145
- * @param {string} themeId - shopify theme id to push into
146
- * @param {boolean} [nodelete = true] - run command with --no-delete flag
147
- * @returns {ChildProcess} - node's ChildProcess
148
- */
149
132
  push: (store, themeId, nodelete = true) => {
150
- let args = ["push", "--store", store, "--path", "dist"];
133
+ const sub = ["theme", "push", "--store", store, "--path", "dist"];
151
134
  if (themeId)
152
- args = args.concat(["--theme", themeId]);
135
+ sub.push("--theme", themeId);
153
136
  if (nodelete)
154
- args.push("--nodelete");
155
- return (0, cross_spawn_1.default)("shopify theme", args, {
137
+ sub.push("--nodelete");
138
+ const { command, args, shell } = (0, shopify_bin_1.shopifyCommand)(sub);
139
+ return (0, cross_spawn_1.default)(command, args, {
156
140
  env: process.env,
157
141
  stdio: "inherit",
158
- shell: true,
142
+ shell,
159
143
  });
160
144
  },
161
- /**
162
- * shopify theme package
163
- *
164
- * @memberof seed-cli.shopifyCLI
165
- * @returns {ChildProcess} - node's ChildProcess
166
- */
167
145
  package: () => {
168
- return (0, cross_spawn_1.default)("shopify theme", ["package", "--path", "dist"], {
146
+ const { command, args, shell } = (0, shopify_bin_1.shopifyCommand)([
147
+ "theme",
148
+ "package",
149
+ "--path",
150
+ "dist",
151
+ ]);
152
+ return (0, cross_spawn_1.default)(command, args, {
169
153
  env: process.env,
170
154
  stdio: "inherit",
171
- shell: true,
155
+ shell,
172
156
  });
173
157
  },
174
- /**
175
- * shopify theme list
176
- *
177
- * @memberof seed-cli.shopifyCLI
178
- * @param {string} store - store's myshopify domain name
179
- * @param {object} options - additional options (role, json, etc.)
180
- * @returns {ChildProcess} - node's ChildProcess
181
- */
182
158
  list: (store, options = {}) => {
183
- let args = ["list", "--store", store];
159
+ const sub = ["theme", "list", "--store", store];
184
160
  if (options.role)
185
- args = args.concat(["--role", options.role]);
161
+ sub.push("--role", options.role);
186
162
  if (options.json)
187
- args.push("--json");
188
- return (0, cross_spawn_1.default)("shopify theme", args, {
163
+ sub.push("--json");
164
+ const { command, args, shell } = (0, shopify_bin_1.shopifyCommand)(sub);
165
+ return (0, cross_spawn_1.default)(command, args, {
189
166
  env: process.env,
190
167
  stdio: options.json ? "pipe" : "inherit",
191
- shell: true,
168
+ shell,
192
169
  });
193
170
  },
194
- /**
195
- * shopify theme duplicate
196
- *
197
- * @memberof seed-cli.shopifyCLI
198
- * @param {string} store - store's myshopify domain name
199
- * @param {string} themeId - theme ID to duplicate
200
- * @param {string} [name] - optional name for the duplicated theme
201
- * @param {boolean} [json] - return JSON output
202
- * @returns {ChildProcess} - node's ChildProcess
203
- */
204
171
  duplicate: (store, themeId, name, json = false) => {
205
- let args = ["duplicate", "--store", store, "--theme", themeId, "--force"];
172
+ const sub = [
173
+ "theme",
174
+ "duplicate",
175
+ "--store",
176
+ store,
177
+ "--theme",
178
+ themeId,
179
+ "--force",
180
+ ];
206
181
  if (name)
207
- args = args.concat(["--name", name]);
182
+ sub.push("--name", name);
208
183
  if (json)
209
- args.push("--json");
210
- return (0, cross_spawn_1.default)("shopify theme", args, {
184
+ sub.push("--json");
185
+ const { command, args, shell } = (0, shopify_bin_1.shopifyCommand)(sub);
186
+ return (0, cross_spawn_1.default)(command, args, {
211
187
  env: process.env,
212
188
  stdio: json ? "pipe" : "inherit",
213
- shell: true,
189
+ shell,
214
190
  });
215
191
  },
216
192
  };
package/lib/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;AAgBA,4CAGC;AAQD,sCAEC;AASD,oCAkBC;AASD,4CAOC;AA0HD,wCAqCC;AAKD,wCAqCC;AAKD,8CAOC;AAUD,gCASC;AAQD,sCAEC;AASD,wCAIC;AAOD,sDAIC;AAOD,sCAMC;AASD,sBAsBC;AAOD,8CAwBC;AA7ZD,iCAAoC;AACpC,sDAA8B;AAC9B,8DAAgC;AAEhC,+BAA4B;AAC5B,2BAA6D;AAC7D,sDAA8B;AAC9B,+CAA+C;AAG/C;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,SAAiB;IAEhD,OAAO,OAAO,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,SAAiB;IAC7C,OAAO,OAAO,CAAC,IAAA,WAAI,EAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,YAAY,CAC1B,SAAiB,EACjB,KAAc;IAEd,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC;IAEjC,uCAAuC;IACvC,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,aAAa,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED,4BAA4B;IAC5B,MAAM,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IAC9C,OAAO,KAAK,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QAC1C,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM;QACnC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;AACzB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAC9B,SAAiB,EACjB,KAAc;IAEd,MAAM,QAAQ,GAAG,KAAK,IAAI,MAAM,CAAC;IACjC,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,aAAa,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,0EAA0E;AAC1E,6EAA6E;AAC7E,4EAA4E;AAC5E,iDAAiD;AACpC,QAAA,UAAU,GAAe;IACpC,KAAK,EAAE,CAAC,KAAa,EAAE,EAAE;QACvB,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAc,EAAC;YAC9C,QAAQ;YACR,SAAS;YACT,KAAK;SACN,CAAC,CAAC;QACH,OAAO,qBAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAC/B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAkB;YACzB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,KAAK,EAAE,CAAC,KAAa,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;QACrC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAc,EAAC;YAC9C,OAAO;YACP,KAAK;YACL,SAAS;YACT,KAAK;YACL,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAkB;YACzB,KAAK;YACL,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC,KAAa,EAAE,OAAgB,EAAE,GAAG,GAAG,OAAO,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;QACzD,IAAI,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAc,EAAC,GAAG,CAAC,CAAC;QACrD,OAAO,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAkB;YACzB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC,KAAa,EAAE,OAAgB,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE;QACzD,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC1C,IAAI,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAc,EAAC,GAAG,CAAC,CAAC;QACrD,OAAO,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAkB;YACzB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,OAAO,EAAE,GAAG,EAAE;QACZ,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAc,EAAC;YAC9C,OAAO;YACP,SAAS;YACT,QAAQ;YACR,MAAM;SACP,CAAC,CAAC;QACH,OAAO,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,SAAkB;YACzB,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,IAAI,EAAE,CAAC,KAAa,EAAE,UAA6C,EAAE,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,OAAO,CAAC,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAErC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAc,EAAC,GAAG,CAAC,CAAC;QACrD,OAAO,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,SAAmB;YACnD,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,SAAS,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,IAAa,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;QACzE,MAAM,GAAG,GAAG;YACV,OAAO;YACP,WAAW;YACX,SAAS;YACT,KAAK;YACL,SAAS;YACT,OAAO;YACP,SAAS;SACV,CAAC;QACF,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE7B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAA,4BAAc,EAAC,GAAG,CAAC,CAAC;QACrD,OAAO,IAAA,qBAAK,EAAC,OAAO,EAAE,IAAI,EAAE;YAC1B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,SAAmB;YAC3C,KAAK;SACN,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,KAAa;IAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,kBAAU,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YAC9C,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YAC9C,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;YACvC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CACrC,CAAC,KAAU,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CACtC,CAAC;gBAEF,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;oBACzC,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,wCAAwC,KAAK,EAAE,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,KAAa,EACb,aAAqB,EACrB,IAAa;IAEb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,gBAAgB,GAAG,kBAAU,CAAC,SAAS,CAC3C,KAAK,EACL,aAAa,EACb,IAAI,EACJ,IAAI,CACL,CAAC;QACF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,WAAW,GAAG,EAAE,CAAC;QAErB,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACnD,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE;YACnD,WAAW,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QAEH,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;YAC5C,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,iBAAiB,CACrC,KAAa,EACb,IAAa;IAEb,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,UAAU,CACxB,SAAiB,EACjB,WAAmB,EACnB,KAAc;IAEd,MAAM,MAAM,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;QAC1C,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,SAAiB;IAC7C,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC;AACvD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,MAAc;IAC3C,MAAM,KAAK,GAAG,QAAQ,CAAC;IACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AAClD,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,OAAqB;IACzD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAqB,EAAE,EAAE;QACnD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,OAAe;IAC3C,MAAM,IAAI,GAAG,IAAA,iBAAY,EAAC,gBAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CACtE,gBAAM,CAAC,mBAAmB,CAC3B,CAAC;IACF,IAAI,CAAC,CAAC,CAAC,GAAG,8BAA8B,OAAO,GAAG,GAAG,MAAM,CAAC;IAC5D,IAAA,kBAAa,EAAC,gBAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,KAAK,CAAC,KAAc;IAClC,MAAM,MAAM,GAAG,YAAY,CAAC,gBAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAErD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAA,cAAM,EAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,YAAY,GAAG,kBAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,IAAA,WAAG,EACD,KAAK,iBAAO,CAAC,KAAK,wBAAwB,MAAM,kDAAkD,CACnG,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,SAAgB,iBAAiB,CAAC,KAAc;IAC9C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,IAAA,WAAG,EACD,eAAe,KAAK,wDAAwD,CAC7E,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,wGAAwG,CACzG,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CACT,IAAA,WAAG,EACD,KAAK,iBAAO,CAAC,KAAK,+DAA+D,CAClF,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,qGAAqG,CACtG,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@madebyseed/seed-cli-tools",
3
- "version": "3.0.2",
3
+ "version": "4.0.0",
4
4
  "description": "Seed CLI Tools",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -25,11 +25,15 @@
25
25
  "@types/gulp-if": "^3.0.5",
26
26
  "@types/gulp-plumber": "^0.0.37",
27
27
  "@types/gulp-postcss": "^8.0.6",
28
+ "@types/gulp-rename": "^2.0.7",
28
29
  "@types/gulp-sass": "^5.0.4",
29
30
  "@types/gulp-size": "^4.0.3",
31
+ "@types/gulp-sourcemaps": "^0.0.38",
30
32
  "@types/gulp-uglify": "^3.0.11",
31
33
  "@types/lodash": "^4.17.20",
34
+ "@types/minimist": "^1.2.5",
32
35
  "@types/node": "^20.11.24",
36
+ "@types/react": "^18.3.28",
33
37
  "@types/sass": "^1.45.0",
34
38
  "@types/uglify-js": "^3.17.5",
35
39
  "@types/vinyl-paths": "^5.0.0",
@@ -62,15 +66,20 @@
62
66
  "gulp-include": "^2.4.1",
63
67
  "gulp-plumber": "^1.2.1",
64
68
  "gulp-postcss": "^9.0.0",
69
+ "gulp-rename": "^2.1.0",
65
70
  "gulp-sass": "^5.0.0",
66
71
  "gulp-size": "^4.0.1",
72
+ "gulp-sourcemaps": "^3.0.0",
73
+ "gulp-terser": "^2.1.0",
67
74
  "gulp-uglify": "^3.0.2",
75
+ "ink": "^3.2.0",
68
76
  "lodash": "^4.17.21",
69
77
  "minimist": "^1.2.5",
70
78
  "postcss": "^8.3.6",
71
79
  "postcss-import": "^14.0.2",
72
80
  "postcss-pxtorem": "^6.0.0",
73
81
  "postcss-reporter": "^7.0.5",
82
+ "react": "^18.3.1",
74
83
  "require-directory": "^2.1.1",
75
84
  "sass": "^1.36.0",
76
85
  "tailwindcss": "^3.1.4",
@@ -78,5 +87,5 @@
78
87
  "vinyl-paths": "^3.0.1",
79
88
  "yargs": "^17.0.1"
80
89
  },
81
- "gitHead": "d45cb8ccaa8513b2007d0b3edeaf5b6c1ae35cd3"
90
+ "gitHead": "4ada9de9c0d943af873dd565575744aaa0512e41"
82
91
  }
@@ -1,7 +1,9 @@
1
1
  import spawn from "cross-spawn";
2
+ import readline from "readline";
2
3
  import debug from "debug";
3
4
  import { Command } from "commander";
4
5
  import config from "../config";
6
+ import { WatchTui } from "../tasks/watch-tui";
5
7
 
6
8
  const logger = debug("seed-tools:watch");
7
9
 
@@ -10,6 +12,8 @@ interface WatchOptions {
10
12
  storePassword?: string | false;
11
13
  optimize?: boolean;
12
14
  env?: string;
15
+ raw?: boolean;
16
+ verbose?: boolean;
13
17
  }
14
18
 
15
19
  export default function (program: Command): void {
@@ -35,38 +39,84 @@ export default function (program: Command): void {
35
39
  "Optimizes assets by compressing, minifying and purging.",
36
40
  false,
37
41
  )
42
+ .option("--raw", "Disable the TUI and stream raw gulp/shopify output.", false)
43
+ .option("--verbose", "Show all child-process output (TUI only).", false)
38
44
  .action((options: WatchOptions = {}) => {
39
45
  logger(`--gulpfile ${config.gulpFile}`);
40
46
  logger(`--cwd ${config.themeRoot}`);
41
47
 
42
48
  const args = ["watch"];
43
49
 
44
- if (options.store) {
45
- args.push("--store", options.store);
46
- }
47
-
48
- if (options.storePassword) {
50
+ if (options.store) args.push("--store", options.store);
51
+ if (options.storePassword)
49
52
  args.push("--store-password", options.storePassword);
50
- }
51
-
52
53
  if (!options.optimize) args.push("--skip-optimizations");
53
54
 
54
55
  process.env.NODE_ENV = options.optimize ? "production" : "development";
55
56
 
56
- spawn(
57
- config.gulp,
58
- args.concat([
59
- "--gulpfile",
60
- config.gulpFile,
61
- "--cwd",
62
- config.themeRoot,
63
- "--environment",
64
- options.env || "development",
65
- ]),
66
- {
57
+ const gulpArgs = args.concat([
58
+ "--gulpfile",
59
+ config.gulpFile,
60
+ "--cwd",
61
+ config.themeRoot,
62
+ "--environment",
63
+ options.env || "development",
64
+ ]);
65
+
66
+ const useTui = !options.raw && process.stdout.isTTY;
67
+
68
+ if (!useTui) {
69
+ spawn(config.gulp, gulpArgs, {
67
70
  detached: false,
68
71
  stdio: "inherit",
72
+ });
73
+ return;
74
+ }
75
+
76
+ const child = spawn(config.gulp, gulpArgs, {
77
+ detached: false,
78
+ // Ink owns stdin for keyboard nav; child runs without a tty on stdin.
79
+ stdio: ["ignore", "pipe", "pipe"],
80
+ });
81
+
82
+ const tui = new WatchTui({
83
+ verbose: options.verbose,
84
+ sourceLabel:
85
+ typeof options.store === "string" ? options.store : undefined,
86
+ storeKey: typeof options.store === "string" ? options.store : undefined,
87
+ cwd: config.themeRoot,
88
+ onQuit: () => {
89
+ if (!child.killed) child.kill("SIGINT");
69
90
  },
70
- );
91
+ });
92
+
93
+ tui.start();
94
+
95
+ if (child.stdout) {
96
+ readline.createInterface({ input: child.stdout }).on("line", (line) => {
97
+ tui.ingest(line, false);
98
+ });
99
+ }
100
+ if (child.stderr) {
101
+ readline.createInterface({ input: child.stderr }).on("line", (line) => {
102
+ tui.ingest(line, true);
103
+ });
104
+ }
105
+
106
+ let exited = false;
107
+ const shutdown = (code?: number | null): void => {
108
+ if (exited) return;
109
+ exited = true;
110
+ tui.stop(code);
111
+ // Ink leaves stdin in raw mode with handlers attached even after
112
+ // unmount, which keeps the event loop alive. Force-exit so the user
113
+ // gets back to the shell on q / Ctrl+C without a second keypress.
114
+ // setImmediate gives the final-summary write one tick to flush.
115
+ setImmediate(() => process.exit(code ?? 0));
116
+ };
117
+
118
+ child.on("exit", (code) => shutdown(code));
119
+ process.on("SIGINT", () => shutdown(130));
120
+ process.on("SIGTERM", () => shutdown(143));
71
121
  });
72
- }
122
+ }
@@ -0,0 +1,21 @@
1
+ export interface ShopifyCommand {
2
+ command: string;
3
+ args: string[];
4
+ /** Whether the spawn call should set `shell: true`. */
5
+ shell: boolean;
6
+ }
7
+
8
+ /**
9
+ * Build the (command, args) tuple to spawn the shopify cli with the given
10
+ * subcommand args. Prefers the bundled binary advertised by seed-cli via the
11
+ * `SEED_SHOPIFY_BIN` env var. Falls back to PATH `shopify` if the env var
12
+ * isn't set (e.g. someone running seed-tools' gulpfile directly without the
13
+ * seed-cli wrapper).
14
+ */
15
+ export function shopifyCommand(subArgs: string[]): ShopifyCommand {
16
+ const bin = process.env.SEED_SHOPIFY_BIN;
17
+ if (bin) {
18
+ return { command: process.execPath, args: [bin, ...subArgs], shell: false };
19
+ }
20
+ return { command: "shopify", args: subArgs, shell: true };
21
+ }