@8medusa/cli 2.7.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/cli.js +16 -0
- package/dist/commands/new.d.ts +5 -0
- package/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js +528 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/create-cli.d.ts +3 -0
- package/dist/create-cli.d.ts.map +1 -0
- package/dist/create-cli.js +533 -0
- package/dist/create-cli.js.map +1 -0
- package/dist/did-you-mean.d.ts +2 -0
- package/dist/did-you-mean.d.ts.map +1 -0
- package/dist/did-you-mean.js +23 -0
- package/dist/did-you-mean.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/reporter/index.d.ts +115 -0
- package/dist/reporter/index.d.ts.map +1 -0
- package/dist/reporter/index.js +364 -0
- package/dist/reporter/index.js.map +1 -0
- package/dist/reporter/panic-handler.d.ts +16 -0
- package/dist/reporter/panic-handler.d.ts.map +1 -0
- package/dist/reporter/panic-handler.js +32 -0
- package/dist/reporter/panic-handler.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/util/clear-project.d.ts +2 -0
- package/dist/util/clear-project.d.ts.map +1 -0
- package/dist/util/clear-project.js +23 -0
- package/dist/util/clear-project.js.map +1 -0
- package/dist/util/package-manager.d.ts +3 -0
- package/dist/util/package-manager.d.ts.map +1 -0
- package/dist/util/package-manager.js +21 -0
- package/dist/util/package-manager.js.map +1 -0
- package/package.json +83 -0
package/cli.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
try {
|
|
4
|
+
require("ts-node").register({})
|
|
5
|
+
require("tsconfig-paths").register({})
|
|
6
|
+
} catch (e) {
|
|
7
|
+
const isProduction = process.env.NODE_ENV === "production"
|
|
8
|
+
if (!isProduction) {
|
|
9
|
+
console.warn(
|
|
10
|
+
"ts-node cannot be loaded and used, if you are running in production don't forget to set your NODE_ENV to production"
|
|
11
|
+
)
|
|
12
|
+
console.warn(e)
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
require("dotenv").config()
|
|
16
|
+
require("./dist/index.js")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAifA;;GAEG;AACH,eAAO,MAAM,UAAU,8BA0JtB,CAAA"}
|
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* Adapted from https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby-cli/src/init-starter.ts
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.newStarter = void 0;
|
|
10
|
+
const child_process_1 = require("child_process");
|
|
11
|
+
const execa_1 = __importDefault(require("execa"));
|
|
12
|
+
const fs_exists_cached_1 = require("fs-exists-cached");
|
|
13
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
14
|
+
const hosted_git_info_1 = __importDefault(require("hosted-git-info"));
|
|
15
|
+
const is_valid_path_1 = __importDefault(require("is-valid-path"));
|
|
16
|
+
const path_1 = __importDefault(require("path"));
|
|
17
|
+
const path_2 = __importDefault(require("path"));
|
|
18
|
+
const prompts_1 = __importDefault(require("prompts"));
|
|
19
|
+
const pg_1 = require("pg");
|
|
20
|
+
const url_1 = __importDefault(require("url"));
|
|
21
|
+
const telemetry_1 = require("@8medusa/telemetry");
|
|
22
|
+
// @ts-ignore
|
|
23
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
24
|
+
const pg_god_1 = require("pg-god");
|
|
25
|
+
const utils_1 = require("@8medusa/utils");
|
|
26
|
+
const reporter_1 = __importDefault(require("../reporter"));
|
|
27
|
+
const panic_handler_1 = require("../reporter/panic-handler");
|
|
28
|
+
const clear_project_1 = require("../util/clear-project");
|
|
29
|
+
const package_manager_1 = require("../util/package-manager");
|
|
30
|
+
const removeUndefined = (obj) => {
|
|
31
|
+
return Object.fromEntries(Object.entries(obj)
|
|
32
|
+
.filter(([_, v]) => v != null)
|
|
33
|
+
.map(([k, v]) => [k, v === Object(v) ? removeUndefined(v) : v]));
|
|
34
|
+
};
|
|
35
|
+
const spawnWithArgs = (file, args, options) => (0, execa_1.default)(file, args, { stdio: `inherit`, preferLocal: false, ...options });
|
|
36
|
+
const spawn = (cmd, options) => {
|
|
37
|
+
const [file, ...args] = cmd.split(/\s+/);
|
|
38
|
+
return spawnWithArgs(file, args, options);
|
|
39
|
+
};
|
|
40
|
+
// Checks the existence of yarn package
|
|
41
|
+
// We use yarnpkg instead of yarn to avoid conflict with Hadoop yarn
|
|
42
|
+
// Refer to https://github.com/yarnpkg/yarn/issues/673
|
|
43
|
+
const checkForYarn = () => {
|
|
44
|
+
try {
|
|
45
|
+
(0, child_process_1.execSync)(`yarnpkg --version`, { stdio: `ignore` });
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const isAlreadyGitRepository = async () => {
|
|
53
|
+
try {
|
|
54
|
+
return await spawn(`git rev-parse --is-inside-work-tree`, {
|
|
55
|
+
stdio: `pipe`,
|
|
56
|
+
}).then((output) => output.stdout === `true`);
|
|
57
|
+
}
|
|
58
|
+
catch (err) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
// Initialize newly cloned directory as a git repo
|
|
63
|
+
const gitInit = async (rootPath) => {
|
|
64
|
+
reporter_1.default.info(`Initialising git in ${rootPath}`);
|
|
65
|
+
return await spawn(`git init`, { cwd: rootPath });
|
|
66
|
+
};
|
|
67
|
+
// Create a .gitignore file if it is missing in the new directory
|
|
68
|
+
const maybeCreateGitIgnore = async (rootPath) => {
|
|
69
|
+
if ((0, fs_exists_cached_1.sync)(path_1.default.join(rootPath, `.gitignore`))) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const gignore = reporter_1.default.activity(`Creating minimal .gitignore in ${rootPath}`);
|
|
73
|
+
await fs_extra_1.default.writeFile(path_1.default.join(rootPath, `.gitignore`), `.cache\nnode_modules\npublic\n`);
|
|
74
|
+
reporter_1.default.success(gignore, `Created .gitignore in ${rootPath}`);
|
|
75
|
+
};
|
|
76
|
+
// Create an initial git commit in the new directory
|
|
77
|
+
const createInitialGitCommit = async (rootPath, starterUrl) => {
|
|
78
|
+
reporter_1.default.info(`Create initial git commit in ${rootPath}`);
|
|
79
|
+
await spawn(`git add -A`, { cwd: rootPath });
|
|
80
|
+
// use execSync instead of spawn to handle git clients using
|
|
81
|
+
// pgp signatures (with password)
|
|
82
|
+
try {
|
|
83
|
+
(0, child_process_1.execSync)(`git commit -m "Initial commit from medusa: (${starterUrl})"`, {
|
|
84
|
+
cwd: rootPath,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
// Remove git support if initial commit fails
|
|
89
|
+
reporter_1.default.warn(`Initial git commit failed - removing git support\n`);
|
|
90
|
+
fs_extra_1.default.removeSync(path_1.default.join(rootPath, `.git`));
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
// Executes `npm install` or `yarn install` in rootPath.
|
|
94
|
+
const install = async (rootPath) => {
|
|
95
|
+
const prevDir = process.cwd();
|
|
96
|
+
reporter_1.default.info(`Installing packages...`);
|
|
97
|
+
console.log(); // Add some space
|
|
98
|
+
process.chdir(rootPath);
|
|
99
|
+
const npmConfigUserAgent = process.env.npm_config_user_agent;
|
|
100
|
+
try {
|
|
101
|
+
if (!(0, package_manager_1.getPackageManager)()) {
|
|
102
|
+
if (npmConfigUserAgent?.includes(`yarn`)) {
|
|
103
|
+
(0, package_manager_1.setPackageManager)(`yarn`);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
(0, package_manager_1.setPackageManager)(`npm`);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if ((0, package_manager_1.getPackageManager)() === `yarn` && checkForYarn()) {
|
|
110
|
+
await fs_extra_1.default.remove(`package-lock.json`);
|
|
111
|
+
await spawn(`yarnpkg`, {});
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
await fs_extra_1.default.remove(`yarn.lock`);
|
|
115
|
+
await spawn(`npm install`, {});
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
process.chdir(prevDir);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
const ignored = (path) => !/^\.(git|hg)$/.test(path_1.default.basename(path));
|
|
123
|
+
// Copy starter from file system.
|
|
124
|
+
const copy = async (starterPath, rootPath) => {
|
|
125
|
+
// Chmod with 755.
|
|
126
|
+
// 493 = parseInt('755', 8)
|
|
127
|
+
await fs_extra_1.default.ensureDir(rootPath, { mode: 493 });
|
|
128
|
+
if (!(0, fs_exists_cached_1.sync)(starterPath)) {
|
|
129
|
+
throw new Error(`starter ${starterPath} doesn't exist`);
|
|
130
|
+
}
|
|
131
|
+
if (starterPath === `.`) {
|
|
132
|
+
throw new Error(`You can't create a starter from the existing directory. If you want to
|
|
133
|
+
create a new project in the current directory, the trailing dot isn't
|
|
134
|
+
necessary. If you want to create a project from a local starter, run
|
|
135
|
+
something like "medusa new my-medusa-store ../local-medusa-starter"`);
|
|
136
|
+
}
|
|
137
|
+
reporter_1.default.info(`Creating new site from local starter: ${starterPath}`);
|
|
138
|
+
const copyActivity = reporter_1.default.activity(`Copying local starter to ${rootPath} ...`);
|
|
139
|
+
await fs_extra_1.default.copy(starterPath, rootPath, { filter: ignored });
|
|
140
|
+
reporter_1.default.success(copyActivity, `Created starter directory layout`);
|
|
141
|
+
console.log(); // Add some space
|
|
142
|
+
await install(rootPath);
|
|
143
|
+
return true;
|
|
144
|
+
};
|
|
145
|
+
// Clones starter from URI.
|
|
146
|
+
const clone = async (hostInfo, rootPath, v2 = false, inputBranch) => {
|
|
147
|
+
let url;
|
|
148
|
+
// Let people use private repos accessed over SSH.
|
|
149
|
+
if (hostInfo.getDefaultRepresentation() === `sshurl`) {
|
|
150
|
+
url = hostInfo.ssh({ noCommittish: true });
|
|
151
|
+
// Otherwise default to normal git syntax.
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
url = hostInfo.https({ noCommittish: true, noGitPlus: true });
|
|
155
|
+
}
|
|
156
|
+
let branch = inputBranch || hostInfo.committish
|
|
157
|
+
? [`-b`, inputBranch || hostInfo.committish]
|
|
158
|
+
: [];
|
|
159
|
+
if (v2) {
|
|
160
|
+
branch = [`-b`, inputBranch || "master"];
|
|
161
|
+
}
|
|
162
|
+
const createAct = reporter_1.default.activity(`Creating new project from git: ${url}`);
|
|
163
|
+
const args = [
|
|
164
|
+
`clone`,
|
|
165
|
+
...branch,
|
|
166
|
+
url,
|
|
167
|
+
rootPath,
|
|
168
|
+
`--recursive`,
|
|
169
|
+
`--depth=1`,
|
|
170
|
+
].filter((arg) => Boolean(arg));
|
|
171
|
+
await (0, execa_1.default)(`git`, args, {})
|
|
172
|
+
.then(() => {
|
|
173
|
+
reporter_1.default.success(createAct, `Created starter directory layout`);
|
|
174
|
+
})
|
|
175
|
+
.catch((err) => {
|
|
176
|
+
reporter_1.default.failure(createAct, `Failed to clone repository`);
|
|
177
|
+
throw err;
|
|
178
|
+
});
|
|
179
|
+
await fs_extra_1.default.remove(path_1.default.join(rootPath, `.git`));
|
|
180
|
+
await install(rootPath);
|
|
181
|
+
const isGit = await isAlreadyGitRepository();
|
|
182
|
+
if (!isGit)
|
|
183
|
+
await gitInit(rootPath);
|
|
184
|
+
await maybeCreateGitIgnore(rootPath);
|
|
185
|
+
if (!isGit)
|
|
186
|
+
await createInitialGitCommit(rootPath, url);
|
|
187
|
+
};
|
|
188
|
+
const getPaths = async (starterPath, rootPath, v2 = false) => {
|
|
189
|
+
let selectedOtherStarter = false;
|
|
190
|
+
// if no args are passed, prompt user for path and starter
|
|
191
|
+
if (!starterPath && !rootPath) {
|
|
192
|
+
const response = await prompts_1.default.prompt([
|
|
193
|
+
{
|
|
194
|
+
type: `text`,
|
|
195
|
+
name: `path`,
|
|
196
|
+
message: `What is your project called?`,
|
|
197
|
+
initial: `my-medusa-store`,
|
|
198
|
+
},
|
|
199
|
+
!v2 && {
|
|
200
|
+
type: `select`,
|
|
201
|
+
name: `starter`,
|
|
202
|
+
message: `What starter would you like to use?`,
|
|
203
|
+
choices: [
|
|
204
|
+
{ title: `medusa-starter-default`, value: `medusa-starter-default` },
|
|
205
|
+
{ title: `(Use a different starter)`, value: `different` },
|
|
206
|
+
],
|
|
207
|
+
initial: 0,
|
|
208
|
+
},
|
|
209
|
+
]);
|
|
210
|
+
// exit gracefully if responses aren't provided
|
|
211
|
+
if ((!v2 && !response.starter) || !response.path.trim()) {
|
|
212
|
+
throw new Error(`Please mention both starter package and project name along with path(if its not in the root)`);
|
|
213
|
+
}
|
|
214
|
+
selectedOtherStarter = response.starter === `different`;
|
|
215
|
+
starterPath = `medusajs/${v2 ? "medusa-starter-default" : response.starter}`;
|
|
216
|
+
rootPath = response.path;
|
|
217
|
+
}
|
|
218
|
+
// set defaults if no root or starter has been set yet
|
|
219
|
+
rootPath = rootPath || process.cwd();
|
|
220
|
+
starterPath = starterPath || `medusajs/medusa-starter-default`;
|
|
221
|
+
return { starterPath, rootPath, selectedOtherStarter };
|
|
222
|
+
};
|
|
223
|
+
const successMessage = (path) => {
|
|
224
|
+
reporter_1.default.info(`Your new Medusa project is ready for you! To start developing run:
|
|
225
|
+
|
|
226
|
+
cd ${path}
|
|
227
|
+
medusa develop
|
|
228
|
+
`);
|
|
229
|
+
};
|
|
230
|
+
const defaultDBCreds = {
|
|
231
|
+
user: process.env.USER || "postgres",
|
|
232
|
+
database: "postgres",
|
|
233
|
+
password: "",
|
|
234
|
+
port: 5432,
|
|
235
|
+
host: "localhost",
|
|
236
|
+
};
|
|
237
|
+
const verifyPgCreds = async (creds) => {
|
|
238
|
+
const pool = new pg_1.Pool(creds);
|
|
239
|
+
return new Promise((resolve, reject) => {
|
|
240
|
+
pool.query("SELECT NOW()", (err, res) => {
|
|
241
|
+
pool.end();
|
|
242
|
+
if (err) {
|
|
243
|
+
reject(err);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
resolve(res);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
const interactiveDbCreds = async (dbName, dbCreds = {}) => {
|
|
252
|
+
const credentials = Object.assign({}, defaultDBCreds, dbCreds);
|
|
253
|
+
const collecting = true;
|
|
254
|
+
while (collecting) {
|
|
255
|
+
const result = await inquirer_1.default
|
|
256
|
+
.prompt([
|
|
257
|
+
{
|
|
258
|
+
type: "list",
|
|
259
|
+
name: "continueWithDefault",
|
|
260
|
+
message: `
|
|
261
|
+
|
|
262
|
+
Will attempt to setup Postgres database "${dbName}" with credentials:
|
|
263
|
+
user: ${credentials.user}
|
|
264
|
+
password: ***
|
|
265
|
+
port: ${credentials.port}
|
|
266
|
+
host: ${credentials.host}
|
|
267
|
+
Do you wish to continue with these credentials?
|
|
268
|
+
|
|
269
|
+
`,
|
|
270
|
+
choices: [`Continue`, `Change credentials`, `Skip database setup`],
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
type: "input",
|
|
274
|
+
when: ({ continueWithDefault }) => continueWithDefault === `Change credentials`,
|
|
275
|
+
name: "user",
|
|
276
|
+
default: credentials.user,
|
|
277
|
+
message: `DB user`,
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
type: "password",
|
|
281
|
+
when: ({ continueWithDefault }) => continueWithDefault === `Change credentials`,
|
|
282
|
+
name: "password",
|
|
283
|
+
default: credentials.password,
|
|
284
|
+
message: `DB password`,
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
type: "number",
|
|
288
|
+
when: ({ continueWithDefault }) => continueWithDefault === `Change credentials`,
|
|
289
|
+
name: "port",
|
|
290
|
+
default: credentials.port,
|
|
291
|
+
message: `DB port`,
|
|
292
|
+
},
|
|
293
|
+
{
|
|
294
|
+
type: "input",
|
|
295
|
+
when: ({ continueWithDefault }) => continueWithDefault === `Change credentials`,
|
|
296
|
+
name: "host",
|
|
297
|
+
default: credentials.host,
|
|
298
|
+
message: `DB host`,
|
|
299
|
+
},
|
|
300
|
+
])
|
|
301
|
+
.then(async (answers) => {
|
|
302
|
+
const collectedCreds = Object.assign({}, credentials, {
|
|
303
|
+
user: answers.user,
|
|
304
|
+
password: answers.password,
|
|
305
|
+
host: answers.host,
|
|
306
|
+
port: answers.port,
|
|
307
|
+
});
|
|
308
|
+
switch (answers.continueWithDefault) {
|
|
309
|
+
case "Continue": {
|
|
310
|
+
const done = await verifyPgCreds(credentials).catch((_) => false);
|
|
311
|
+
if (done) {
|
|
312
|
+
return credentials;
|
|
313
|
+
}
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
case "Change credentials": {
|
|
317
|
+
const done = await verifyPgCreds(collectedCreds).catch((_) => false);
|
|
318
|
+
if (done) {
|
|
319
|
+
return collectedCreds;
|
|
320
|
+
}
|
|
321
|
+
return false;
|
|
322
|
+
}
|
|
323
|
+
default:
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
if (result !== false) {
|
|
328
|
+
return result;
|
|
329
|
+
}
|
|
330
|
+
console.log("\n\nCould not verify DB credentials - please try again\n\n");
|
|
331
|
+
}
|
|
332
|
+
return;
|
|
333
|
+
};
|
|
334
|
+
const setupDB = async (dbName, dbCreds = {}) => {
|
|
335
|
+
const credentials = Object.assign({}, defaultDBCreds, dbCreds);
|
|
336
|
+
const dbActivity = reporter_1.default.activity(`Setting up database "${dbName}"...`);
|
|
337
|
+
await (0, pg_god_1.createDatabase)({
|
|
338
|
+
databaseName: dbName,
|
|
339
|
+
errorIfExist: true,
|
|
340
|
+
}, credentials)
|
|
341
|
+
.then(() => {
|
|
342
|
+
reporter_1.default.success(dbActivity, `Created database "${dbName}"`);
|
|
343
|
+
})
|
|
344
|
+
.catch((err) => {
|
|
345
|
+
if (err.name === "PDG_ERR::DuplicateDatabase") {
|
|
346
|
+
reporter_1.default.success(dbActivity, `Database ${dbName} already exists; skipping setup`);
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
reporter_1.default.failure(dbActivity, `Skipping database setup.`);
|
|
350
|
+
reporter_1.default.warn(`Failed to setup database; install PostgresQL or make sure to manage your database connection manually`);
|
|
351
|
+
console.error(err);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
};
|
|
355
|
+
const setupEnvVars = async (rootPath, dbName, dbCreds = {}) => {
|
|
356
|
+
const templatePath = path_1.default.join(rootPath, ".env.template");
|
|
357
|
+
const destination = path_1.default.join(rootPath, ".env");
|
|
358
|
+
if ((0, fs_exists_cached_1.sync)(templatePath)) {
|
|
359
|
+
fs_extra_1.default.renameSync(templatePath, destination);
|
|
360
|
+
}
|
|
361
|
+
const credentials = Object.assign({}, defaultDBCreds, dbCreds);
|
|
362
|
+
let dbUrl = "";
|
|
363
|
+
if (credentials.user !== defaultDBCreds.user ||
|
|
364
|
+
credentials.password !== defaultDBCreds.password) {
|
|
365
|
+
dbUrl = `postgres://${credentials.user}:${credentials.password}@${credentials.host}:${credentials.port}/${dbName}`;
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
dbUrl = `postgres://${credentials.host}:${credentials.port}/${dbName}`;
|
|
369
|
+
}
|
|
370
|
+
fs_extra_1.default.appendFileSync(destination, `DATABASE_URL=${dbUrl}\n`);
|
|
371
|
+
};
|
|
372
|
+
const runMigrations = async (rootPath) => {
|
|
373
|
+
const migrationActivity = reporter_1.default.activity("Applying database migrations...");
|
|
374
|
+
const cliPath = path_1.default.join(`node_modules`, `@8medusa`, `medusa-cli`, `cli.js`);
|
|
375
|
+
return await (0, execa_1.default)(cliPath, [`migrations`, `run`], {
|
|
376
|
+
cwd: rootPath,
|
|
377
|
+
})
|
|
378
|
+
.then(() => {
|
|
379
|
+
reporter_1.default.success(migrationActivity, "Database migrations completed.");
|
|
380
|
+
})
|
|
381
|
+
.catch((err) => {
|
|
382
|
+
reporter_1.default.failure(migrationActivity, "Failed to migrate database you must complete migration manually before starting your server.");
|
|
383
|
+
console.error(err);
|
|
384
|
+
});
|
|
385
|
+
};
|
|
386
|
+
const attemptSeed = async (rootPath) => {
|
|
387
|
+
const seedActivity = reporter_1.default.activity("Seeding database");
|
|
388
|
+
const pkgPath = path_1.default.resolve(rootPath, "package.json");
|
|
389
|
+
if ((0, fs_exists_cached_1.sync)(pkgPath)) {
|
|
390
|
+
const pkg = require(pkgPath);
|
|
391
|
+
if (pkg.scripts && pkg.scripts.seed) {
|
|
392
|
+
const proc = (0, execa_1.default)((0, package_manager_1.getPackageManager)(), [`run`, `seed`], {
|
|
393
|
+
cwd: rootPath,
|
|
394
|
+
});
|
|
395
|
+
// Useful for development
|
|
396
|
+
// proc.stdout.pipe(process.stdout)
|
|
397
|
+
await proc
|
|
398
|
+
.then(() => {
|
|
399
|
+
reporter_1.default.success(seedActivity, "Seed completed");
|
|
400
|
+
})
|
|
401
|
+
.catch((err) => {
|
|
402
|
+
reporter_1.default.failure(seedActivity, "Failed to complete seed; skipping");
|
|
403
|
+
console.error(err);
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
reporter_1.default.failure(seedActivity, "Starter doesn't provide a seed command; skipping.");
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
else {
|
|
411
|
+
reporter_1.default.failure(seedActivity, "Could not find package.json");
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
/**
|
|
415
|
+
* Main function that clones or copies the starter.
|
|
416
|
+
*/
|
|
417
|
+
const newStarter = async (args) => {
|
|
418
|
+
const nodeVersion = (0, utils_1.getNodeVersion)();
|
|
419
|
+
if (nodeVersion < utils_1.MIN_SUPPORTED_NODE_VERSION) {
|
|
420
|
+
reporter_1.default.error(`Medusa requires at least v20 of Node.js. You're using v${nodeVersion}. Please install at least v20 and try again: https://nodejs.org/en/download`);
|
|
421
|
+
process.exit(1);
|
|
422
|
+
}
|
|
423
|
+
(0, telemetry_1.track)("CLI_NEW");
|
|
424
|
+
const { starter, root, skipDb, skipMigrations, skipEnv, seed, useDefaults, dbUser, dbDatabase, dbPass, dbPort, dbHost, v2, branch, } = args;
|
|
425
|
+
const dbCredentials = removeUndefined({
|
|
426
|
+
user: dbUser,
|
|
427
|
+
database: dbDatabase,
|
|
428
|
+
password: dbPass,
|
|
429
|
+
port: dbPort,
|
|
430
|
+
host: dbHost,
|
|
431
|
+
});
|
|
432
|
+
const { starterPath, rootPath, selectedOtherStarter } = await getPaths(starter, root, v2);
|
|
433
|
+
const urlObject = url_1.default.parse(rootPath);
|
|
434
|
+
if (selectedOtherStarter) {
|
|
435
|
+
reporter_1.default.info(`Find the url of the Medusa starter you wish to create and run:
|
|
436
|
+
|
|
437
|
+
medusa new ${rootPath} [url-to-starter]
|
|
438
|
+
|
|
439
|
+
`);
|
|
440
|
+
return;
|
|
441
|
+
}
|
|
442
|
+
if (urlObject.protocol && urlObject.host) {
|
|
443
|
+
const isStarterAUrl = starter && !url_1.default.parse(starter).hostname && !url_1.default.parse(starter).protocol;
|
|
444
|
+
if (/medusa-starter/gi.test(rootPath) && isStarterAUrl) {
|
|
445
|
+
reporter_1.default.panic({
|
|
446
|
+
id: panic_handler_1.PanicId.InvalidProjectName,
|
|
447
|
+
context: {
|
|
448
|
+
starter,
|
|
449
|
+
rootPath,
|
|
450
|
+
},
|
|
451
|
+
});
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
reporter_1.default.panic({
|
|
455
|
+
id: panic_handler_1.PanicId.InvalidProjectName,
|
|
456
|
+
context: {
|
|
457
|
+
rootPath,
|
|
458
|
+
},
|
|
459
|
+
});
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
if (!(0, is_valid_path_1.default)(rootPath)) {
|
|
463
|
+
reporter_1.default.panic({
|
|
464
|
+
id: panic_handler_1.PanicId.InvalidPath,
|
|
465
|
+
context: {
|
|
466
|
+
path: path_1.default.resolve(rootPath),
|
|
467
|
+
},
|
|
468
|
+
});
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
if ((0, fs_exists_cached_1.sync)(path_1.default.join(rootPath, `package.json`))) {
|
|
472
|
+
reporter_1.default.panic({
|
|
473
|
+
id: panic_handler_1.PanicId.AlreadyNodeProject,
|
|
474
|
+
context: {
|
|
475
|
+
rootPath,
|
|
476
|
+
},
|
|
477
|
+
});
|
|
478
|
+
return;
|
|
479
|
+
}
|
|
480
|
+
const hostedInfo = hosted_git_info_1.default.fromUrl(starterPath);
|
|
481
|
+
if (hostedInfo) {
|
|
482
|
+
await clone(hostedInfo, rootPath, v2, branch);
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
await copy(starterPath, rootPath);
|
|
486
|
+
}
|
|
487
|
+
(0, telemetry_1.track)("CLI_NEW_LAYOUT_COMPLETED");
|
|
488
|
+
let creds = dbCredentials;
|
|
489
|
+
const dbName = `medusa-db-${Math.random().toString(36).substring(2, 7)}`; // generate random 5 character string
|
|
490
|
+
if (!useDefaults && !skipDb && !skipEnv) {
|
|
491
|
+
creds = await interactiveDbCreds(dbName, dbCredentials);
|
|
492
|
+
}
|
|
493
|
+
if (creds === null) {
|
|
494
|
+
reporter_1.default.info("Skipping automatic database setup. Please note that you need to create a database and run migrations before you can run your Medusa backend");
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
if (!skipDb) {
|
|
498
|
+
(0, telemetry_1.track)("CLI_NEW_SETUP_DB");
|
|
499
|
+
await setupDB(dbName, creds);
|
|
500
|
+
}
|
|
501
|
+
if (!skipEnv) {
|
|
502
|
+
(0, telemetry_1.track)("CLI_NEW_SETUP_ENV");
|
|
503
|
+
await setupEnvVars(rootPath, dbName, creds);
|
|
504
|
+
}
|
|
505
|
+
if (!skipMigrations) {
|
|
506
|
+
(0, telemetry_1.track)("CLI_NEW_RUN_MIGRATIONS");
|
|
507
|
+
await runMigrations(rootPath);
|
|
508
|
+
}
|
|
509
|
+
if (seed) {
|
|
510
|
+
(0, telemetry_1.track)("CLI_NEW_SEED_DB");
|
|
511
|
+
await attemptSeed(rootPath);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
if (!selectedOtherStarter) {
|
|
515
|
+
reporter_1.default.info("Final project preparations...");
|
|
516
|
+
// remove demo files
|
|
517
|
+
(0, clear_project_1.clearProject)(rootPath);
|
|
518
|
+
// remove .git directory
|
|
519
|
+
fs_extra_1.default.rmSync(path_2.default.join(rootPath, ".git"), {
|
|
520
|
+
recursive: true,
|
|
521
|
+
force: true,
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
successMessage(rootPath);
|
|
525
|
+
(0, telemetry_1.track)("CLI_NEW_SUCCEEDED");
|
|
526
|
+
};
|
|
527
|
+
exports.newStarter = newStarter;
|
|
528
|
+
//# sourceMappingURL=new.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-cli.d.ts","sourceRoot":"","sources":["../src/create-cli.ts"],"names":[],"mappings":";AAmiBA,wBA0EC"}
|