create-checkly 0.0.2 → 0.0.3
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/commands/bootstrap.js +49 -40
- package/dist/commands/bootstrap.js.map +1 -1
- package/dist/utils/directory.d.ts +0 -2
- package/dist/utils/directory.js +0 -14
- package/dist/utils/directory.js.map +1 -1
- package/dist/utils/messages.d.ts +1 -1
- package/dist/utils/messages.js +2 -4
- package/dist/utils/messages.js.map +1 -1
- package/package.json +2 -3
- package/dist/actions/creates.d.ts +0 -3
- package/dist/actions/creates.js +0 -31
- package/dist/actions/creates.js.map +0 -1
- package/dist/actions/dependencies.d.ts +0 -3
- package/dist/actions/dependencies.js +0 -43
- package/dist/actions/dependencies.js.map +0 -1
- package/dist/actions/template.d.ts +0 -6
- package/dist/actions/template.js +0 -26
- package/dist/actions/template.js.map +0 -1
- package/dist/utils/package.d.ts +0 -8
- package/dist/utils/package.js +0 -8
- package/dist/utils/package.js.map +0 -1
|
@@ -2,14 +2,13 @@ import Debug from 'debug';
|
|
|
2
2
|
import { Command, Flags } from '@oclif/core';
|
|
3
3
|
import { uniqueNamesGenerator, colors, animals } from 'unique-names-generator';
|
|
4
4
|
import prompts from 'prompts';
|
|
5
|
-
import {
|
|
5
|
+
import { downloadTemplate } from 'giget';
|
|
6
|
+
import { execa, execaCommand } from 'execa';
|
|
7
|
+
import detectPackageManager from 'which-pm-runs';
|
|
6
8
|
import chalk from 'chalk';
|
|
7
|
-
import {
|
|
9
|
+
import { isValidProjectDirectory, hasGitDir } from '../utils/directory.js';
|
|
10
|
+
import { spinner } from '../utils/terminal.js';
|
|
8
11
|
import { getUserGreeting, getVersion, header, bail, hint, footer, } from '../utils/messages.js';
|
|
9
|
-
import { createCustomBrowserCheck } from '../actions/creates.js';
|
|
10
|
-
import { addDevDependecies, installDependencies } from '../actions/dependencies.js';
|
|
11
|
-
import { hasPackageJsonFile, readPackageJson } from '../utils/package.js';
|
|
12
|
-
import { copyTemplate } from '../actions/template.js';
|
|
13
12
|
/**
|
|
14
13
|
* This code is heavily inspired by the amazing create-astro package over at
|
|
15
14
|
* https://github.com/withastro/astro/tree/main/packages/create-astro
|
|
@@ -38,35 +37,6 @@ export default class Bootstrap extends Command {
|
|
|
38
37
|
}
|
|
39
38
|
const [version, greeting] = await Promise.all([getVersion(), getUserGreeting()]);
|
|
40
39
|
await header(version, greeting);
|
|
41
|
-
// Init Checkly CLI for an existing project
|
|
42
|
-
if (hasPackageJsonFile()) {
|
|
43
|
-
debug('Existing package.json detected');
|
|
44
|
-
const projectInitResponse = await prompts({
|
|
45
|
-
type: 'confirm',
|
|
46
|
-
name: 'useDirectory',
|
|
47
|
-
message: 'It looks like you are already in a project, would you like to initialize?',
|
|
48
|
-
initial: true,
|
|
49
|
-
}, { onCancel });
|
|
50
|
-
if (projectInitResponse.useDirectory) {
|
|
51
|
-
const packageJson = readPackageJson();
|
|
52
|
-
const temporaryDir = generateProjectName();
|
|
53
|
-
debug('Add dependencies to existing package.json');
|
|
54
|
-
addDevDependecies(packageJson);
|
|
55
|
-
debug('Copy boilerplate project to temporary folder');
|
|
56
|
-
await copyTemplate({
|
|
57
|
-
template: 'boilerplate-project',
|
|
58
|
-
templatePath: `github:${templateBaseRepo}/boilerplate-project#v${version}`,
|
|
59
|
-
targetDir: temporaryDir,
|
|
60
|
-
});
|
|
61
|
-
copyTemporaryFiles(temporaryDir);
|
|
62
|
-
usePackageName(packageJson.name);
|
|
63
|
-
debug('Create custom Browser check');
|
|
64
|
-
await createCustomBrowserCheck({ onCancel });
|
|
65
|
-
await installDependencies();
|
|
66
|
-
await footer();
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
40
|
debug('Ask for directory name');
|
|
71
41
|
const projectDirResponse = await prompts({
|
|
72
42
|
type: 'text',
|
|
@@ -95,12 +65,51 @@ export default class Bootstrap extends Command {
|
|
|
95
65
|
],
|
|
96
66
|
}, { onCancel });
|
|
97
67
|
debug('Downloading template');
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
68
|
+
const downloadTemplateSpinner = spinner('Downloading example template...');
|
|
69
|
+
const templatePath = `github:${templateBaseRepo}/${templateResponse.template}#v${version}`;
|
|
70
|
+
try {
|
|
71
|
+
debug(`Attempting download of template: ${templatePath}`);
|
|
72
|
+
await downloadTemplate(templatePath, {
|
|
73
|
+
force: true,
|
|
74
|
+
cwd: targetDir,
|
|
75
|
+
dir: '.',
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
if (e.message.includes('404')) {
|
|
80
|
+
downloadTemplateSpinner.text = chalk.red(`Couldn't find template "${templateResponse.template}"`);
|
|
81
|
+
downloadTemplateSpinner.fail();
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.error(e.message);
|
|
85
|
+
}
|
|
86
|
+
process.exit(1);
|
|
87
|
+
}
|
|
88
|
+
downloadTemplateSpinner.text = chalk.green('Example template copied!');
|
|
89
|
+
downloadTemplateSpinner.succeed();
|
|
90
|
+
const installDepsResponse = await prompts({
|
|
91
|
+
type: 'confirm',
|
|
92
|
+
name: 'installDeps',
|
|
93
|
+
message: 'Would you like to install NPM dependencies? (recommended)',
|
|
94
|
+
initial: true,
|
|
102
95
|
});
|
|
103
|
-
|
|
96
|
+
if (installDepsResponse.installDeps) {
|
|
97
|
+
const packageManager = detectPackageManager()?.name || 'npm';
|
|
98
|
+
const installExec = execa(packageManager, ['install'], { cwd: targetDir });
|
|
99
|
+
const installSpinner = spinner('installing packages');
|
|
100
|
+
await new Promise((resolve, reject) => {
|
|
101
|
+
installExec.stdout?.on('data', function (data) {
|
|
102
|
+
installSpinner.text = `installing \n${packageManager} ${data}`;
|
|
103
|
+
});
|
|
104
|
+
installExec.on('error', (error) => reject(error));
|
|
105
|
+
installExec.on('close', () => resolve());
|
|
106
|
+
});
|
|
107
|
+
installSpinner.text = 'Packages installed successfully';
|
|
108
|
+
installSpinner.succeed();
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
await hint('No worries.', 'Just remember to install the dependencies after this setup');
|
|
112
|
+
}
|
|
104
113
|
const initGitResponse = await prompts({
|
|
105
114
|
type: 'confirm',
|
|
106
115
|
name: 'initGit',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/directory.js
CHANGED
|
@@ -8,18 +8,4 @@ export function isValidProjectDirectory(dirPath) {
|
|
|
8
8
|
export function hasGitDir() {
|
|
9
9
|
return fs.existsSync('./.git');
|
|
10
10
|
}
|
|
11
|
-
export function copyTemporaryFiles(dirPath) {
|
|
12
|
-
const FILE_TO_KEEP = ['__checks__', 'checkly.config.ts'];
|
|
13
|
-
for (const file of FILE_TO_KEEP) {
|
|
14
|
-
fs.renameSync(`${dirPath}/${file}`, `./${file}`);
|
|
15
|
-
}
|
|
16
|
-
fs.rmSync(dirPath, { recursive: true });
|
|
17
|
-
}
|
|
18
|
-
export function usePackageName(packageName) {
|
|
19
|
-
const filePath = './checkly.config.ts';
|
|
20
|
-
const checklyConfig = fs.readFileSync(filePath, 'utf-8');
|
|
21
|
-
fs.writeFileSync(filePath, checklyConfig
|
|
22
|
-
.replace(/Boilerplate Project/, packageName)
|
|
23
|
-
.replace(/boilerplate-project/, packageName));
|
|
24
|
-
}
|
|
25
11
|
//# sourceMappingURL=directory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/utils/directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,MAAM,UAAU,uBAAuB,CAAE,OAAe;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC
|
|
1
|
+
{"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/utils/directory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AAExB,MAAM,UAAU,uBAAuB,CAAE,OAAe;IACtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;QAC3B,OAAO,IAAI,CAAA;KACZ;IACD,OAAO,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAChC,CAAC"}
|
package/dist/utils/messages.d.ts
CHANGED
|
@@ -3,4 +3,4 @@ export declare function getUserGreeting(): Promise<string>;
|
|
|
3
3
|
export declare function bail(): void;
|
|
4
4
|
export declare function header(version: string, greeting: string): Promise<void>;
|
|
5
5
|
export declare function hint(prefix: string, text: string): Promise<void>;
|
|
6
|
-
export declare function footer(targetDir
|
|
6
|
+
export declare function footer(targetDir: string): Promise<void>;
|
package/dist/utils/messages.js
CHANGED
|
@@ -37,10 +37,8 @@ export async function footer(targetDir) {
|
|
|
37
37
|
const prefix = max < 80 ? ' ' : ' '.repeat(9);
|
|
38
38
|
await sleep(200);
|
|
39
39
|
console.log(`\n ${chalk.bgCyan(` ${chalk.black.bold('next')} `)} ${chalk.bold('All done. Time to get testing & monitoring with Checkly\n')}`);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
console.log(`${prefix}> Enter your project directory using ${chalk.cyan(`cd ./${targetDir}`)}`);
|
|
43
|
-
}
|
|
40
|
+
await sleep(200);
|
|
41
|
+
console.log(`${prefix}> Enter your project directory using ${chalk.cyan(`cd ./${targetDir}`)}`);
|
|
44
42
|
await sleep(200);
|
|
45
43
|
console.log(`${prefix}> Run ${chalk.cyan('npx checkly login')} to login to your Checkly account`);
|
|
46
44
|
await sleep(200);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"AAAA,8BAA8B;AAE9B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,SAAS,KAAK,CAAE,EAAU;IACxB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU;IAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAA;IAC7E,OAAO,IAAI,CAAC,OAAO,CAAA;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAA;IAC7B,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,CAAA;AAC3C,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAE,OAAe,EAAE,QAAgB;IAC7D,OAAO,CAAC,GAAG,CACT,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,CAC/D,qCAAqC,CAAC,IAAI,CAC7C,CAAA;IACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAA;IACjB,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,kCAAkC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAA;IAC7G,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAE,MAAc,EAAE,IAAY;IACtD,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IAChB,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,EAAE;QAC/B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACxD,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KACpD;SAAM;QACL,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;KAC9E;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAE,
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-checkly",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Checkly Create CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"private": false,
|
|
9
9
|
"scripts": {
|
|
10
|
-
"clean": "rimraf ./dist",
|
|
10
|
+
"clean" : "rimraf ./dist",
|
|
11
11
|
"test": "jest --selectProjects unit",
|
|
12
12
|
"prepare": "npm run clean && tsc --build",
|
|
13
13
|
"lint": "eslint src",
|
|
@@ -44,7 +44,6 @@
|
|
|
44
44
|
"execa": "^6.1.0",
|
|
45
45
|
"fullname": "4.0.1",
|
|
46
46
|
"giget": "^1.1.2",
|
|
47
|
-
"normalize-url": "8.0.0",
|
|
48
47
|
"ora": "^6.1.2",
|
|
49
48
|
"prompts": "^2.4.2",
|
|
50
49
|
"unique-names-generator": "^4.7.1",
|
package/dist/actions/creates.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import prompts from 'prompts';
|
|
3
|
-
import normalizeUrl from 'normalize-url';
|
|
4
|
-
// Default Playwright-based Browser Check
|
|
5
|
-
const defaultBrowserCheck = `import { test, expect } from '@playwright/test'
|
|
6
|
-
|
|
7
|
-
// You can override the default Playwright test timeout of 30s
|
|
8
|
-
// test.setTimeout(60_000);
|
|
9
|
-
|
|
10
|
-
test('Custom Browser Check', async ({ page }) => {
|
|
11
|
-
const response = await page.goto('URL_TO_CHECK')
|
|
12
|
-
expect(response?.status()).toBeLessThan(400)
|
|
13
|
-
await page.screenshot({ path: 'screenshot.jpg' })
|
|
14
|
-
})`;
|
|
15
|
-
export async function createCustomBrowserCheck({ onCancel }) {
|
|
16
|
-
const createInitialBrowserCheckResponse = await prompts({
|
|
17
|
-
type: 'confirm',
|
|
18
|
-
name: 'value',
|
|
19
|
-
message: 'Would you like to create a custom Playwright-based Browser Check to check a URL?',
|
|
20
|
-
initial: true,
|
|
21
|
-
}, { onCancel });
|
|
22
|
-
if (createInitialBrowserCheckResponse.value) {
|
|
23
|
-
const userWebsiteResponse = await prompts({
|
|
24
|
-
type: 'text',
|
|
25
|
-
name: 'url',
|
|
26
|
-
message: 'Please provide the URL of the site you want to check.',
|
|
27
|
-
}, { onCancel });
|
|
28
|
-
fs.writeFileSync('./__checks__/custom.spec.ts', defaultBrowserCheck.replace(/URL_TO_CHECK/i, normalizeUrl(userWebsiteResponse.url)));
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=creates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"creates.js","sourceRoot":"","sources":["../../src/actions/creates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,YAAY,MAAM,eAAe,CAAA;AAExC,yCAAyC;AACzC,MAAM,mBAAmB,GAAG;;;;;;;;;GASzB,CAAA;AAEH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,EAAE,QAAQ,EAA4B;IAEtC,MAAM,iCAAiC,GAAG,MAAM,OAAO,CAAC;QACtD,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,kFAAkF;QAC3F,OAAO,EAAE,IAAI;KACd,EACD,EAAE,QAAQ,EAAE,CACX,CAAA;IAED,IAAI,iCAAiC,CAAC,KAAK,EAAE;QAC3C,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC;YACxC,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,KAAK;YACX,OAAO,EAAE,uDAAuD;SACjE,EACD,EAAE,QAAQ,EAAE,CACX,CAAA;QAED,EAAE,CAAC,aAAa,CAAC,6BAA6B,EAAE,mBAAmB,CAAC,OAAO,CAAC,eAAe,EAAE,YAAY,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KACrI;AACH,CAAC"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import * as fs from 'fs';
|
|
2
|
-
import prompts from 'prompts';
|
|
3
|
-
import detectPackageManager from 'which-pm-runs';
|
|
4
|
-
import { execa } from 'execa';
|
|
5
|
-
import { spinner } from '../utils/terminal.js';
|
|
6
|
-
import { hint } from '../utils/messages.js';
|
|
7
|
-
export function addDevDependecies(packageJson) {
|
|
8
|
-
if (!Reflect.has(packageJson, 'devDependencies')) {
|
|
9
|
-
packageJson.devDependencies = {};
|
|
10
|
-
}
|
|
11
|
-
Object.assign(packageJson.devDependencies, {
|
|
12
|
-
'checkly': 'latest',
|
|
13
|
-
'ts-node': 'latest',
|
|
14
|
-
typescript: 'latest',
|
|
15
|
-
});
|
|
16
|
-
fs.writeFileSync('./package.json', JSON.stringify(packageJson, null, 2));
|
|
17
|
-
}
|
|
18
|
-
export async function installDependencies() {
|
|
19
|
-
const installDepsResponse = await prompts({
|
|
20
|
-
type: 'confirm',
|
|
21
|
-
name: 'installDeps',
|
|
22
|
-
message: 'Would you like to install NPM dependencies? (recommended)',
|
|
23
|
-
initial: true,
|
|
24
|
-
});
|
|
25
|
-
if (installDepsResponse.installDeps) {
|
|
26
|
-
const packageManager = detectPackageManager()?.name || 'npm';
|
|
27
|
-
const installExec = execa(packageManager, ['install'], { cwd: './' });
|
|
28
|
-
const installSpinner = spinner('installing packages');
|
|
29
|
-
await new Promise((resolve, reject) => {
|
|
30
|
-
installExec.stdout?.on('data', function (data) {
|
|
31
|
-
installSpinner.text = `installing \n${packageManager} ${data}`;
|
|
32
|
-
});
|
|
33
|
-
installExec.on('error', (error) => reject(error));
|
|
34
|
-
installExec.on('close', () => resolve());
|
|
35
|
-
});
|
|
36
|
-
installSpinner.text = 'Packages installed successfully';
|
|
37
|
-
installSpinner.succeed();
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
await hint('No worries.', 'Just remember to install the dependencies after this setup');
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=dependencies.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../src/actions/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,oBAAoB,MAAM,eAAe,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAA;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAG3C,MAAM,UAAU,iBAAiB,CAAE,WAAwB;IACzD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,iBAAiB,CAAC,EAAE;QAChD,WAAW,CAAC,eAAe,GAAG,EAAE,CAAA;KACjC;IAED,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE;QACzC,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,QAAQ;QACnB,UAAU,EAAE,QAAQ;KACrB,CAAC,CAAA;IAEF,EAAE,CAAC,aAAa,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC1E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB;IACvC,MAAM,mBAAmB,GAAG,MAAM,OAAO,CAAC;QACxC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,2DAA2D;QACpE,OAAO,EAAE,IAAI;KACd,CAAC,CAAA;IAEF,IAAI,mBAAmB,CAAC,WAAW,EAAE;QACnC,MAAM,cAAc,GAAG,oBAAoB,EAAE,EAAE,IAAI,IAAI,KAAK,CAAA;QAC5D,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;QACrE,MAAM,cAAc,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;QACrD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI;gBAC3C,cAAc,CAAC,IAAI,GAAG,gBAAgB,cAAc,IAAI,IAAI,EAAE,CAAA;YAChE,CAAC,CAAC,CAAA;YACF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;YACjD,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QACF,cAAc,CAAC,IAAI,GAAG,iCAAiC,CAAA;QACvD,cAAc,CAAC,OAAO,EAAE,CAAA;KACzB;SAAM;QACL,MAAM,IAAI,CAAC,aAAa,EAAE,4DAA4D,CAAC,CAAA;KACxF;AACH,CAAC"}
|
package/dist/actions/template.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import chalk from 'chalk';
|
|
2
|
-
import { downloadTemplate } from 'giget';
|
|
3
|
-
import { spinner } from '../utils/terminal.js';
|
|
4
|
-
export async function copyTemplate({ template, templatePath, targetDir }) {
|
|
5
|
-
const downloadTemplateSpinner = spinner('Downloading example template...');
|
|
6
|
-
try {
|
|
7
|
-
await downloadTemplate(templatePath, {
|
|
8
|
-
force: true,
|
|
9
|
-
cwd: targetDir,
|
|
10
|
-
dir: '.',
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
catch (e) {
|
|
14
|
-
if (e.message.includes('404')) {
|
|
15
|
-
downloadTemplateSpinner.text = chalk.red(`Couldn't find template "${template}"`);
|
|
16
|
-
downloadTemplateSpinner.fail();
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
console.error(e.message);
|
|
20
|
-
}
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
downloadTemplateSpinner.text = chalk.green('Example template copied!');
|
|
24
|
-
downloadTemplateSpinner.succeed();
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=template.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/actions/template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAQ9C,MAAM,CAAC,KAAK,UAAU,YAAY,CAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAqB;IAC1F,MAAM,uBAAuB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAA;IAE1E,IAAI;QACF,MAAM,gBAAgB,CAAC,YAAY,EAAE;YACnC,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,SAAS;YACd,GAAG,EAAE,GAAG;SACT,CAAC,CAAA;KACH;IAAC,OAAO,CAAM,EAAE;QACf,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC7B,uBAAuB,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,2BAA2B,QAAQ,GAAG,CAAC,CAAA;YAChF,uBAAuB,CAAC,IAAI,EAAE,CAAA;SAC/B;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;SACzB;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;KAChB;IAED,uBAAuB,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;IACtE,uBAAuB,CAAC,OAAO,EAAE,CAAA;AACnC,CAAC"}
|
package/dist/utils/package.d.ts
DELETED
package/dist/utils/package.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/utils/package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AASxB,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAA;AAC/D,CAAC"}
|