@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.
- package/CHANGELOG.md +57 -0
- package/__fixtures__/legacy-js-min/baseline/theme.dev.js +13 -0
- package/__fixtures__/legacy-js-min/baseline/theme.prod.js +1 -0
- package/__fixtures__/legacy-js-min/dist/assets/theme.js +13 -0
- package/__fixtures__/legacy-js-min/package.json +9 -0
- package/__fixtures__/legacy-js-min/src/scripts/components/sample.js +4 -0
- package/__fixtures__/legacy-js-min/src/scripts/theme.js +9 -0
- package/__fixtures__/legacy-js-min/src/scripts/vendor/lib.js +7 -0
- package/__fixtures__/legacy-js-min/src/scripts/vendor.js +3 -0
- package/__fixtures__/legacy-js-min/verify.sh +34 -0
- package/__fixtures__/module-js-min/dist/assets/components-greeter.js +6 -0
- package/__fixtures__/module-js-min/dist/assets/components-greeter.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/components-items.js +5 -0
- package/__fixtures__/module-js-min/dist/assets/components-items.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/header.js +20 -0
- package/__fixtures__/module-js-min/dist/assets/header.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js +8 -0
- package/__fixtures__/module-js-min/dist/assets/sections-cart-items.js.map +1 -0
- package/__fixtures__/module-js-min/dist/assets/vendor-lib.js +4 -0
- package/__fixtures__/module-js-min/dist/assets/vendor-lib.js.map +1 -0
- package/__fixtures__/module-js-min/package.json +9 -0
- package/__fixtures__/module-js-min/seed.project.json +15 -0
- package/__fixtures__/module-js-min/src/scripts/components/greeter.js +4 -0
- package/__fixtures__/module-js-min/src/scripts/components/items.js +3 -0
- package/__fixtures__/module-js-min/src/scripts/header.js +18 -0
- package/__fixtures__/module-js-min/src/scripts/sections/cart/items.js +6 -0
- package/__fixtures__/module-js-min/src/scripts/vendor/lib.js +2 -0
- package/__fixtures__/module-js-min/verify.sh +58 -0
- package/lib/commands/watch.js +55 -7
- package/lib/commands/watch.js.map +1 -1
- package/lib/shopify-bin.d.ts +14 -0
- package/lib/shopify-bin.js +18 -0
- package/lib/shopify-bin.js.map +1 -0
- package/lib/tasks/build-js-module.d.ts +2 -0
- package/lib/tasks/build-js-module.js +93 -0
- package/lib/tasks/build-js-module.js.map +1 -0
- package/lib/tasks/build-js.js +13 -1
- package/lib/tasks/build-js.js.map +1 -1
- package/lib/tasks/includes/config.d.ts +2 -0
- package/lib/tasks/includes/config.js +3 -0
- package/lib/tasks/includes/config.js.map +1 -1
- package/lib/tasks/includes/js-mode.d.ts +12 -0
- package/lib/tasks/includes/js-mode.js +42 -0
- package/lib/tasks/includes/js-mode.js.map +1 -0
- package/lib/tasks/watch-tui/App.d.ts +8 -0
- package/lib/tasks/watch-tui/App.js +337 -0
- package/lib/tasks/watch-tui/App.js.map +1 -0
- package/lib/tasks/watch-tui/classify.d.ts +39 -0
- package/lib/tasks/watch-tui/classify.js +84 -0
- package/lib/tasks/watch-tui/classify.js.map +1 -0
- package/lib/tasks/watch-tui/index.d.ts +30 -0
- package/lib/tasks/watch-tui/index.js +299 -0
- package/lib/tasks/watch-tui/index.js.map +1 -0
- package/lib/tasks/watch-tui/shopify-parse.d.ts +24 -0
- package/lib/tasks/watch-tui/shopify-parse.js +87 -0
- package/lib/tasks/watch-tui/shopify-parse.js.map +1 -0
- package/lib/tasks/watch-tui/state.d.ts +68 -0
- package/lib/tasks/watch-tui/state.js +61 -0
- package/lib/tasks/watch-tui/state.js.map +1 -0
- package/lib/tasks/watch-tui/theme-info.d.ts +10 -0
- package/lib/tasks/watch-tui/theme-info.js +79 -0
- package/lib/tasks/watch-tui/theme-info.js.map +1 -0
- package/lib/utils.js +63 -87
- package/lib/utils.js.map +1 -1
- package/package.json +11 -2
- package/src/commands/watch.ts +70 -20
- package/src/shopify-bin.ts +21 -0
- package/src/tasks/build-js-module.ts +92 -0
- package/src/tasks/build-js.ts +13 -1
- package/src/tasks/includes/config.ts +5 -0
- package/src/tasks/includes/js-mode.ts +48 -0
- package/src/tasks/watch-tui/App.tsx +486 -0
- package/src/tasks/watch-tui/classify.ts +120 -0
- package/src/tasks/watch-tui/index.ts +342 -0
- package/src/tasks/watch-tui/shopify-parse.ts +103 -0
- package/src/tasks/watch-tui/state.ts +113 -0
- package/src/tasks/watch-tui/theme-info.ts +109 -0
- package/src/types/declarations.d.ts +19 -1
- package/src/utils.ts +64 -93
- package/tsconfig.json +3 -2
- 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":"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"}
|
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 =
|
|
95
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
120
|
+
const sub = ["theme", "pull", "--store", store];
|
|
130
121
|
if (themeId)
|
|
131
|
-
|
|
122
|
+
sub.push("--theme", themeId, "--path", dir);
|
|
132
123
|
if (nodelete)
|
|
133
|
-
|
|
134
|
-
|
|
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
|
|
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
|
-
|
|
133
|
+
const sub = ["theme", "push", "--store", store, "--path", "dist"];
|
|
151
134
|
if (themeId)
|
|
152
|
-
|
|
135
|
+
sub.push("--theme", themeId);
|
|
153
136
|
if (nodelete)
|
|
154
|
-
|
|
155
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
159
|
+
const sub = ["theme", "list", "--store", store];
|
|
184
160
|
if (options.role)
|
|
185
|
-
|
|
161
|
+
sub.push("--role", options.role);
|
|
186
162
|
if (options.json)
|
|
187
|
-
|
|
188
|
-
|
|
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
|
|
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
|
-
|
|
172
|
+
const sub = [
|
|
173
|
+
"theme",
|
|
174
|
+
"duplicate",
|
|
175
|
+
"--store",
|
|
176
|
+
store,
|
|
177
|
+
"--theme",
|
|
178
|
+
themeId,
|
|
179
|
+
"--force",
|
|
180
|
+
];
|
|
206
181
|
if (name)
|
|
207
|
-
|
|
182
|
+
sub.push("--name", name);
|
|
208
183
|
if (json)
|
|
209
|
-
|
|
210
|
-
|
|
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
|
|
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":";;;;;;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@madebyseed/seed-cli-tools",
|
|
3
|
-
"version": "
|
|
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": "
|
|
90
|
+
"gitHead": "4ada9de9c0d943af873dd565575744aaa0512e41"
|
|
82
91
|
}
|
package/src/commands/watch.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
+
}
|