@by-association-only/cli 2.3.2 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +456 -0
- package/dist/index.mjs +439 -0
- package/package.json +40 -20
- package/.idea/bao-cli.iml +0 -12
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/inspectionProfiles/Project_Default.xml +0 -155
- package/.idea/modules.xml +0 -8
- package/.idea/vcs.xml +0 -6
- package/.nvmrc +0 -1
- package/commands/create/git.js +0 -59
- package/commands/create/index.js +0 -123
- package/commands/create/local.js +0 -151
- package/commands/create/theme.js +0 -134
- package/commands/get-live-theme-id/index.js +0 -33
- package/config/index.js +0 -24
- package/index.js +0 -102
- package/utils.js +0 -14
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __defProps = Object.defineProperties;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
9
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __copyProps = (to, from, except, desc) => {
|
|
26
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
27
|
+
for (let key of __getOwnPropNames(from))
|
|
28
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
29
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
30
|
+
}
|
|
31
|
+
return to;
|
|
32
|
+
};
|
|
33
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
34
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
35
|
+
mod
|
|
36
|
+
));
|
|
37
|
+
|
|
38
|
+
// src/index.ts
|
|
39
|
+
var import_commander = require("commander");
|
|
40
|
+
|
|
41
|
+
// package.json
|
|
42
|
+
var package_default = {
|
|
43
|
+
name: "@by-association-only/cli",
|
|
44
|
+
version: "3.1.0",
|
|
45
|
+
description: "By Association Only CLI",
|
|
46
|
+
private: false,
|
|
47
|
+
author: "BAO Agency",
|
|
48
|
+
license: "MIT",
|
|
49
|
+
main: "./dist/index.js",
|
|
50
|
+
module: "./dist/index.mjs",
|
|
51
|
+
types: "./dist/index.d.ts",
|
|
52
|
+
bin: {
|
|
53
|
+
bao: "./dist/index.js"
|
|
54
|
+
},
|
|
55
|
+
files: [
|
|
56
|
+
"dist"
|
|
57
|
+
],
|
|
58
|
+
exports: {
|
|
59
|
+
".": {
|
|
60
|
+
require: "./dist/index.js",
|
|
61
|
+
import: "./dist/index.mjs",
|
|
62
|
+
types: "./dist/index.d.ts"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
scripts: {
|
|
66
|
+
dev: "npm run build -- --watch",
|
|
67
|
+
build: "tsup src/index.ts --dts --format cjs,esm",
|
|
68
|
+
watch: "tsup src/index.ts --dts --format cjs,esm --watch",
|
|
69
|
+
lint: "eslint **/*.{t,j}s --fix",
|
|
70
|
+
test: "vitest run"
|
|
71
|
+
},
|
|
72
|
+
peerDependencies: {
|
|
73
|
+
vite: "^4.0.4"
|
|
74
|
+
},
|
|
75
|
+
devDependencies: {
|
|
76
|
+
"@types/inquirer": "^9.0.3",
|
|
77
|
+
tsconfig: "workspace:*",
|
|
78
|
+
"type-fest": "^3.5.1",
|
|
79
|
+
vitest: "^0.25.7"
|
|
80
|
+
},
|
|
81
|
+
dependencies: {
|
|
82
|
+
"@octokit/rest": "^19.0.7",
|
|
83
|
+
"@sindresorhus/slugify": "^2.1.1",
|
|
84
|
+
commander: "^9.5.0",
|
|
85
|
+
inquirer: "^9.1.4",
|
|
86
|
+
kleur: "^4.1.5"
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
// src/commands/create/index.ts
|
|
91
|
+
var import_inquirer = __toESM(require("inquirer"));
|
|
92
|
+
var import_kleur4 = __toESM(require("kleur"));
|
|
93
|
+
|
|
94
|
+
// src/commands/config.ts
|
|
95
|
+
var os = __toESM(require("os"));
|
|
96
|
+
var fs = __toESM(require("fs"));
|
|
97
|
+
var config = {
|
|
98
|
+
get localProjectDirectory() {
|
|
99
|
+
if (process.env.BAO_CODE_DIRECTORY) {
|
|
100
|
+
if (fs.existsSync(process.env.BAO_CODE_DIRECTORY)) {
|
|
101
|
+
return process.env.BAO_CODE_DIRECTORY;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return `${os.homedir()}/Code`;
|
|
105
|
+
},
|
|
106
|
+
get githubToken() {
|
|
107
|
+
return process.env.GITHUB_AUTH_TOKEN;
|
|
108
|
+
},
|
|
109
|
+
get githubOrganizationName() {
|
|
110
|
+
return "baoagency";
|
|
111
|
+
},
|
|
112
|
+
get starterThemeGitUrl() {
|
|
113
|
+
return "git@github.com:baoagency/do-not-look.git";
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
// src/commands/create/local.ts
|
|
118
|
+
var process2 = __toESM(require("process"));
|
|
119
|
+
var fs2 = __toESM(require("fs"));
|
|
120
|
+
var import_kleur2 = __toESM(require("kleur"));
|
|
121
|
+
|
|
122
|
+
// src/commands/utils.ts
|
|
123
|
+
var import_node_child_process = require("child_process");
|
|
124
|
+
var import_kleur = __toESM(require("kleur"));
|
|
125
|
+
function executableIsAvailable(name) {
|
|
126
|
+
const shell = (command) => (0, import_node_child_process.execSync)(command, { encoding: "utf8" });
|
|
127
|
+
try {
|
|
128
|
+
shell(`which ${name}`);
|
|
129
|
+
return true;
|
|
130
|
+
} catch (e) {
|
|
131
|
+
return false;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function renderStepTitle(title) {
|
|
135
|
+
console.info(`
|
|
136
|
+
${import_kleur.default.magenta().bold().underline(title)}`);
|
|
137
|
+
}
|
|
138
|
+
function renderStepSuccess(text) {
|
|
139
|
+
console.info(`
|
|
140
|
+
${import_kleur.default.green().bold(`\u2714 ${text}`)}`);
|
|
141
|
+
}
|
|
142
|
+
function renderStepError(text, error) {
|
|
143
|
+
console.info(`
|
|
144
|
+
${import_kleur.default.bgRed().underline(`\u2716 ${text}`)}`);
|
|
145
|
+
throw new Error(error || text);
|
|
146
|
+
}
|
|
147
|
+
function spawnPromise(command, ...args) {
|
|
148
|
+
return new Promise((resolve, reject) => {
|
|
149
|
+
const child = (0, import_node_child_process.spawn)(command, ...args);
|
|
150
|
+
child.on("close", (code) => resolve(code));
|
|
151
|
+
child.on("error", (err) => reject(err));
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// src/commands/create/local.ts
|
|
156
|
+
async function checkLocalDependencies() {
|
|
157
|
+
renderStepTitle("Checking dependencies");
|
|
158
|
+
const hasGithubToken = process2.env.GITHUB_AUTH_TOKEN !== void 0;
|
|
159
|
+
const gitExists = await executableIsAvailable("git");
|
|
160
|
+
const pnpmExists = await executableIsAvailable("pnpm");
|
|
161
|
+
const codeDirectoryExists = fs2.existsSync(config.localProjectDirectory);
|
|
162
|
+
const passed = hasGithubToken && gitExists && pnpmExists && codeDirectoryExists;
|
|
163
|
+
const renderIcon = (exists) => exists ? import_kleur2.default.green("\u2714") : import_kleur2.default.red("\u2716");
|
|
164
|
+
console.info(
|
|
165
|
+
`
|
|
166
|
+
${renderIcon(hasGithubToken)} GITHUB_AUTH_TOKEN
|
|
167
|
+
${renderIcon(gitExists)} git
|
|
168
|
+
${renderIcon(pnpmExists)} pnpm
|
|
169
|
+
${renderIcon(codeDirectoryExists)} ~/Code exists`
|
|
170
|
+
);
|
|
171
|
+
if (!hasGithubToken) {
|
|
172
|
+
console.info(`
|
|
173
|
+
You're missing an environment variable for ${import_kleur2.default.red().bold("GITHUB_AUTH_TOKEN")}. This is needed so we can create the repository on GitHub. Please go here: https://github.com/settings/tokens/new and create a new personal access token. Set the expiration to none, unless you want to keep remaking it, which is fine. You'll need the "repo" scope ticked as well.
|
|
174
|
+
|
|
175
|
+
Once that's been generated you will need to add it to your .bash_profile or .zshrc. Once that's been added you can run source ~/.bash_profile or source ~/.zshrc, depending on which shell you use, and run the script again.
|
|
176
|
+
`);
|
|
177
|
+
}
|
|
178
|
+
passed ? renderStepSuccess("yay dependencies") : renderStepError("Dependencies failed");
|
|
179
|
+
return passed;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// src/commands/create/starter-theme/index.ts
|
|
183
|
+
var fs3 = __toESM(require("fs"));
|
|
184
|
+
var import_promises = require("fs/promises");
|
|
185
|
+
async function setupStarterTheme(config2, answers) {
|
|
186
|
+
await cloneStarterThemeRepository(config2);
|
|
187
|
+
await moveStarterThemeToProjectLocation(config2);
|
|
188
|
+
await rewriteWorkspacePackageVersions(config2);
|
|
189
|
+
await addHuskyPrepareLine(config2);
|
|
190
|
+
await gitInit(config2);
|
|
191
|
+
await pnpmInstall(config2);
|
|
192
|
+
await doInitialCommits(config2);
|
|
193
|
+
await changeShopifyStoreName(config2, answers);
|
|
194
|
+
await removeTemporaryClone(config2);
|
|
195
|
+
}
|
|
196
|
+
async function cloneStarterThemeRepository(config2) {
|
|
197
|
+
renderStepTitle("Cloning starter theme repository");
|
|
198
|
+
try {
|
|
199
|
+
await spawnPromise(
|
|
200
|
+
"git",
|
|
201
|
+
[
|
|
202
|
+
"clone",
|
|
203
|
+
config2.starterThemeGitUrl,
|
|
204
|
+
config2.temporaryCloneLocation
|
|
205
|
+
],
|
|
206
|
+
{ stdio: "inherit" }
|
|
207
|
+
);
|
|
208
|
+
renderStepSuccess("yay, starter theme");
|
|
209
|
+
} catch (e) {
|
|
210
|
+
renderStepError("Git clone failed", e);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
async function moveStarterThemeToProjectLocation(config2) {
|
|
214
|
+
renderStepTitle("Extracting starter theme");
|
|
215
|
+
const themeLocation = `${config2.temporaryCloneLocation}/themes/starter-theme`;
|
|
216
|
+
try {
|
|
217
|
+
await spawnPromise(
|
|
218
|
+
"mv",
|
|
219
|
+
[themeLocation, config2.localProjectLocation]
|
|
220
|
+
);
|
|
221
|
+
renderStepSuccess(`Moved theme to ${config2.localProjectLocation}`);
|
|
222
|
+
} catch (e) {
|
|
223
|
+
renderStepError("Git clone failed", e);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
async function rewriteWorkspacePackageVersions(config2) {
|
|
227
|
+
renderStepTitle("Fixing package.json versions");
|
|
228
|
+
const packageJson = loadPackageJson(config2.localProjectLocation);
|
|
229
|
+
const rewrittenPackageJson = await rewritePackages(packageJson);
|
|
230
|
+
try {
|
|
231
|
+
await (0, import_promises.writeFile)(
|
|
232
|
+
`${config2.localProjectLocation}/package.json`,
|
|
233
|
+
JSON.stringify(rewrittenPackageJson, null, 2)
|
|
234
|
+
);
|
|
235
|
+
renderStepSuccess("Updated package.json dependency versions");
|
|
236
|
+
} catch (e) {
|
|
237
|
+
renderStepError("Rewriting package.json versions failed", e);
|
|
238
|
+
}
|
|
239
|
+
async function findVersionForPackage(packageName) {
|
|
240
|
+
const packagesLocation = `${config2.temporaryCloneLocation}/packages`;
|
|
241
|
+
const folders = (await (0, import_promises.readdir)(packagesLocation, { withFileTypes: true })).filter((dirent) => dirent.isDirectory()).map((dirent) => dirent.name);
|
|
242
|
+
const foundPackage = folders.map((folder) => loadPackageJson(`${packagesLocation}/${folder}`)).find((packageJSON) => packageJSON.name === packageName);
|
|
243
|
+
if (!foundPackage)
|
|
244
|
+
return null;
|
|
245
|
+
return `^${foundPackage.version}`;
|
|
246
|
+
}
|
|
247
|
+
async function rewritePackages(packageJson2) {
|
|
248
|
+
await rewriteListOfPackages("dependencies");
|
|
249
|
+
await rewriteListOfPackages("devDependencies");
|
|
250
|
+
await rewriteListOfPackages("peerDependencies");
|
|
251
|
+
return packageJson2;
|
|
252
|
+
async function rewriteListOfPackages(key) {
|
|
253
|
+
const dependencies = packageJson2[key];
|
|
254
|
+
if (typeof dependencies === "undefined")
|
|
255
|
+
return;
|
|
256
|
+
for (const [packageName, version] of Object.entries(dependencies)) {
|
|
257
|
+
if (version !== "workspace:*")
|
|
258
|
+
continue;
|
|
259
|
+
const packageVersion = await findVersionForPackage(packageName);
|
|
260
|
+
if (!packageVersion)
|
|
261
|
+
continue;
|
|
262
|
+
dependencies[packageName] = packageVersion;
|
|
263
|
+
}
|
|
264
|
+
return packageJson2;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async function addHuskyPrepareLine(config2) {
|
|
269
|
+
renderStepTitle("Setting up Husky");
|
|
270
|
+
const packageJson = loadPackageJson(config2.localProjectLocation);
|
|
271
|
+
packageJson.scripts.prepare = "husky install";
|
|
272
|
+
try {
|
|
273
|
+
await (0, import_promises.writeFile)(
|
|
274
|
+
`${config2.localProjectLocation}/package.json`,
|
|
275
|
+
JSON.stringify(packageJson, null, 2)
|
|
276
|
+
);
|
|
277
|
+
renderStepSuccess("Added Husky prepare script");
|
|
278
|
+
} catch (e) {
|
|
279
|
+
renderStepError("Setting up Husky failed", e);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
async function gitInit(config2) {
|
|
283
|
+
renderStepTitle("Git in here");
|
|
284
|
+
try {
|
|
285
|
+
await spawnPromise(
|
|
286
|
+
"git",
|
|
287
|
+
[
|
|
288
|
+
"init"
|
|
289
|
+
],
|
|
290
|
+
{ stdio: "inherit", cwd: config2.localProjectLocation }
|
|
291
|
+
);
|
|
292
|
+
renderStepSuccess("Git is in here");
|
|
293
|
+
} catch (e) {
|
|
294
|
+
renderStepError("Git isn't here", e);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
async function pnpmInstall(config2) {
|
|
298
|
+
renderStepTitle("Installing dependencies");
|
|
299
|
+
try {
|
|
300
|
+
await spawnPromise(
|
|
301
|
+
"pnpm",
|
|
302
|
+
[
|
|
303
|
+
"install"
|
|
304
|
+
],
|
|
305
|
+
{ stdio: "inherit", cwd: config2.localProjectLocation }
|
|
306
|
+
);
|
|
307
|
+
renderStepSuccess("Dependencies installed");
|
|
308
|
+
} catch (e) {
|
|
309
|
+
renderStepError("Installing dependencies failed", e);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
async function doInitialCommits(config2) {
|
|
313
|
+
renderStepTitle("Performing initial commits");
|
|
314
|
+
try {
|
|
315
|
+
await spawnPromise(
|
|
316
|
+
"git",
|
|
317
|
+
["add", "."],
|
|
318
|
+
{ cwd: config2.localProjectLocation }
|
|
319
|
+
);
|
|
320
|
+
await spawnPromise(
|
|
321
|
+
"git",
|
|
322
|
+
["commit", "-m", "Initial commit"],
|
|
323
|
+
{ cwd: config2.localProjectLocation }
|
|
324
|
+
);
|
|
325
|
+
renderStepSuccess("Doned");
|
|
326
|
+
} catch (e) {
|
|
327
|
+
renderStepError("Performing initial commits failed", e);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
async function changeShopifyStoreName(config2, answers) {
|
|
331
|
+
renderStepTitle(`Changing dev store name to ${answers.shopName}`);
|
|
332
|
+
const packageJson = loadPackageJson(config2.localProjectLocation);
|
|
333
|
+
if (!packageJson.scripts) {
|
|
334
|
+
return renderStepError("package.json has no scripts key");
|
|
335
|
+
}
|
|
336
|
+
packageJson.scripts["shopify:serve"] = `shopify theme dev -s ${answers.shopName}`;
|
|
337
|
+
try {
|
|
338
|
+
await (0, import_promises.writeFile)(
|
|
339
|
+
`${config2.localProjectLocation}/package.json`,
|
|
340
|
+
JSON.stringify(packageJson, null, 2)
|
|
341
|
+
);
|
|
342
|
+
renderStepSuccess("Added \u{1F44D}");
|
|
343
|
+
} catch (e) {
|
|
344
|
+
renderStepError(`Changing dev store name to ${answers.shopName} failed`, e);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
async function removeTemporaryClone(config2) {
|
|
348
|
+
renderStepTitle(`Removing ${config2.temporaryCloneLocation}`);
|
|
349
|
+
try {
|
|
350
|
+
await spawnPromise(
|
|
351
|
+
"rm",
|
|
352
|
+
[
|
|
353
|
+
"-rf",
|
|
354
|
+
config2.temporaryCloneLocation
|
|
355
|
+
],
|
|
356
|
+
{ stdio: "inherit" }
|
|
357
|
+
);
|
|
358
|
+
renderStepSuccess("All cleaned up");
|
|
359
|
+
} catch (e) {
|
|
360
|
+
renderStepError(`Removing ${config2.temporaryCloneLocation} failed`, e);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function loadPackageJson(location) {
|
|
364
|
+
return JSON.parse(
|
|
365
|
+
fs3.readFileSync(`${location}/package.json`).toString()
|
|
366
|
+
);
|
|
367
|
+
}
|
|
368
|
+
|
|
369
|
+
// src/commands/create/git/index.ts
|
|
370
|
+
var import_rest = require("@octokit/rest");
|
|
371
|
+
var import_kleur3 = __toESM(require("kleur"));
|
|
372
|
+
|
|
373
|
+
// src/commands/create/git/utils.ts
|
|
374
|
+
var import_slugify = __toESM(require("@sindresorhus/slugify"));
|
|
375
|
+
function getRepoName(answers) {
|
|
376
|
+
return (0, import_slugify.default)(answers.projectName);
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
// src/commands/create/git/index.ts
|
|
380
|
+
async function setupGitHub(config2, answers) {
|
|
381
|
+
const octokit = new import_rest.Octokit({
|
|
382
|
+
auth: config2.githubToken
|
|
383
|
+
});
|
|
384
|
+
renderStepTitle("Creating project on Github");
|
|
385
|
+
try {
|
|
386
|
+
const project = await createRemoteRepository();
|
|
387
|
+
import_kleur3.default.green(" \u2714 created project on Github");
|
|
388
|
+
await spawnPromise("git", ["remote", "add", "origin", project.data.ssh_url], { cwd: config2.localProjectLocation });
|
|
389
|
+
await spawnPromise("git", ["push", "-u", "origin", "master"], { cwd: config2.localProjectLocation });
|
|
390
|
+
import_kleur3.default.green(" \u2714 pushed master");
|
|
391
|
+
renderStepSuccess("Github project has been created and pushed up");
|
|
392
|
+
} catch (e) {
|
|
393
|
+
renderStepError("Github project creation failed", e);
|
|
394
|
+
}
|
|
395
|
+
function createRemoteRepository() {
|
|
396
|
+
return octokit.repos.createInOrg({
|
|
397
|
+
org: config2.githubOrganizationName,
|
|
398
|
+
name: getRepoName(answers),
|
|
399
|
+
private: true
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
// src/commands/create/index.ts
|
|
405
|
+
async function createProject() {
|
|
406
|
+
const answers = await import_inquirer.default.prompt(prompts);
|
|
407
|
+
const createConfig = __spreadProps(__spreadValues({}, config), {
|
|
408
|
+
localProjectLocation: `${config.localProjectDirectory}/${answers.projectName.toLowerCase().replaceAll(" ", "-")}`,
|
|
409
|
+
temporaryCloneLocation: `/tmp/${answers.projectName.toLowerCase().replaceAll(" ", "-")}`
|
|
410
|
+
});
|
|
411
|
+
await checkLocalDependencies();
|
|
412
|
+
await setupStarterTheme(createConfig, answers);
|
|
413
|
+
await setupGitHub(createConfig, answers);
|
|
414
|
+
await finish(createConfig, answers);
|
|
415
|
+
}
|
|
416
|
+
var prompts = [
|
|
417
|
+
{
|
|
418
|
+
type: "input",
|
|
419
|
+
name: "projectName",
|
|
420
|
+
message: "Project name",
|
|
421
|
+
validate(input) {
|
|
422
|
+
return new Promise((resolve) => {
|
|
423
|
+
resolve(input.length > 0);
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
},
|
|
427
|
+
{
|
|
428
|
+
type: "input",
|
|
429
|
+
name: "shopName",
|
|
430
|
+
message: "Shopify store name",
|
|
431
|
+
validate(input) {
|
|
432
|
+
return new Promise((resolve) => {
|
|
433
|
+
resolve(input.length > 0);
|
|
434
|
+
});
|
|
435
|
+
},
|
|
436
|
+
filter(input) {
|
|
437
|
+
return input.replace(".myshopify.com", "");
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
];
|
|
441
|
+
async function finish(config2, answers) {
|
|
442
|
+
console.info(import_kleur4.default.bold().yellow("\nCongratulations! \u{1F973}\n"));
|
|
443
|
+
console.info(import_kleur4.default.cyan("Just to recap what we've just done:"));
|
|
444
|
+
console.info(import_kleur4.default.cyan(`- Cloned down the latest starter theme to ${config2.localProjectLocation}`));
|
|
445
|
+
console.info(import_kleur4.default.cyan(`- Prepared it with Git, installed all of the packages and setup the "${import_kleur4.default.bold().magenta("pnpm run dev")}" command ready for you`));
|
|
446
|
+
console.info(import_kleur4.default.cyan(`- Created a GitHub repository at ${import_kleur4.default.magenta(`https://github.com/${config2.githubOrganizationName}/${getRepoName(
|
|
447
|
+
answers
|
|
448
|
+
)}`)}`));
|
|
449
|
+
console.info();
|
|
450
|
+
console.info(import_kleur4.default.yellow("Not bad for running just 1 command! Happy dev'ing \u270C\uFE0F\n"));
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
// src/index.ts
|
|
454
|
+
import_commander.program.version(package_default.version).description(package_default.description);
|
|
455
|
+
import_commander.program.command("create").alias("c").description("Create a Shopify theme project").action(async () => await createProject());
|
|
456
|
+
import_commander.program.parse(process.argv);
|