create-checkly 0.0.1
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/actions/creates.d.ts +3 -0
- package/dist/actions/creates.js +31 -0
- package/dist/actions/creates.js.map +1 -0
- package/dist/actions/dependencies.d.ts +3 -0
- package/dist/actions/dependencies.js +43 -0
- package/dist/actions/dependencies.js.map +1 -0
- package/dist/actions/template.d.ts +6 -0
- package/dist/actions/template.js +26 -0
- package/dist/actions/template.js.map +1 -0
- package/dist/commands/bootstrap.d.ts +8 -0
- package/dist/commands/bootstrap.js +128 -0
- package/dist/commands/bootstrap.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/directory.d.ts +4 -0
- package/dist/utils/directory.js +25 -0
- package/dist/utils/directory.js.map +1 -0
- package/dist/utils/messages.d.ts +6 -0
- package/dist/utils/messages.js +55 -0
- package/dist/utils/messages.js.map +1 -0
- package/dist/utils/package.d.ts +8 -0
- package/dist/utils/package.js +8 -0
- package/dist/utils/package.js.map +1 -0
- package/dist/utils/terminal.d.ts +2 -0
- package/dist/utils/terminal.js +7 -0
- package/dist/utils/terminal.js.map +1 -0
- package/index.mjs +13 -0
- package/package.json +125 -0
|
@@ -0,0 +1,31 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
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/cli': '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
|
|
@@ -0,0 +1 @@
|
|
|
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,cAAc,EAAE,QAAQ;QACxB,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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Bootstrap extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static flags: {
|
|
5
|
+
template: import("@oclif/core/lib/interfaces/parser.js").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces/parser.js").CustomOptions>;
|
|
6
|
+
};
|
|
7
|
+
run(): Promise<void>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import Debug from 'debug';
|
|
2
|
+
import { Command, Flags } from '@oclif/core';
|
|
3
|
+
import { uniqueNamesGenerator, colors, animals } from 'unique-names-generator';
|
|
4
|
+
import prompts from 'prompts';
|
|
5
|
+
import { execaCommand } from 'execa';
|
|
6
|
+
import chalk from 'chalk';
|
|
7
|
+
import { hasGitDir, isValidProjectDirectory, copyTemporaryFiles, usePackageName } from '../utils/directory.js';
|
|
8
|
+
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
|
+
/**
|
|
14
|
+
* This code is heavily inspired by the amazing create-astro package over at
|
|
15
|
+
* https://github.com/withastro/astro/tree/main/packages/create-astro
|
|
16
|
+
*/
|
|
17
|
+
const debug = Debug('checkly:create-cli');
|
|
18
|
+
const templateBaseRepo = 'checkly/checkly-cli/examples';
|
|
19
|
+
function generateProjectName() {
|
|
20
|
+
return uniqueNamesGenerator({
|
|
21
|
+
dictionaries: [colors, animals],
|
|
22
|
+
separator: '-',
|
|
23
|
+
length: 2,
|
|
24
|
+
style: 'lowerCase',
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function onCancel() {
|
|
28
|
+
bail();
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
export default class Bootstrap extends Command {
|
|
32
|
+
async run() {
|
|
33
|
+
const { flags } = await this.parse(Bootstrap);
|
|
34
|
+
const { template } = flags;
|
|
35
|
+
// This overrides the template prompt and skips to the next prompt
|
|
36
|
+
if (template) {
|
|
37
|
+
prompts.override({ template });
|
|
38
|
+
}
|
|
39
|
+
const [version, greeting] = await Promise.all([getVersion(), getUserGreeting()]);
|
|
40
|
+
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
|
+
debug('Ask for directory name');
|
|
71
|
+
const projectDirResponse = await prompts({
|
|
72
|
+
type: 'text',
|
|
73
|
+
name: 'projectDirectory',
|
|
74
|
+
message: 'Where do you want to create your new project?',
|
|
75
|
+
initial: generateProjectName(),
|
|
76
|
+
validate(dirName) {
|
|
77
|
+
if (!isValidProjectDirectory(dirName)) {
|
|
78
|
+
return `"${chalk.bold(dirName)}" is not empty!`;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
},
|
|
82
|
+
}, { onCancel });
|
|
83
|
+
const targetDir = projectDirResponse.projectDirectory;
|
|
84
|
+
if (!targetDir) {
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
await hint('Cool.', `Your project will be created in the directory "${targetDir}"`);
|
|
88
|
+
const templateResponse = await prompts({
|
|
89
|
+
type: 'select',
|
|
90
|
+
name: 'template',
|
|
91
|
+
message: 'Which template would you like to use for your new project',
|
|
92
|
+
choices: [
|
|
93
|
+
{ value: 'advanced-project', title: 'An advanced project with multiple examples and best practices (recommended)' },
|
|
94
|
+
{ value: 'boilerplate-project', title: 'A boilerplate project with basic config' },
|
|
95
|
+
],
|
|
96
|
+
}, { onCancel });
|
|
97
|
+
debug('Downloading template');
|
|
98
|
+
await copyTemplate({
|
|
99
|
+
template: templateResponse.template,
|
|
100
|
+
templatePath: `github:${templateBaseRepo}/${templateResponse.template}#v${version}`,
|
|
101
|
+
targetDir,
|
|
102
|
+
});
|
|
103
|
+
await installDependencies();
|
|
104
|
+
const initGitResponse = await prompts({
|
|
105
|
+
type: 'confirm',
|
|
106
|
+
name: 'initGit',
|
|
107
|
+
message: 'Would you like to initialize a new git repo? (optional)',
|
|
108
|
+
initial: true,
|
|
109
|
+
});
|
|
110
|
+
if (initGitResponse.initGit) {
|
|
111
|
+
if (hasGitDir()) {
|
|
112
|
+
await hint('Oh wait!', 'A .git directory already exists. Skipping...');
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
await execaCommand('git init', { cwd: targetDir });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
await footer(targetDir);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
Bootstrap.description = 'Bootstrap a Checkly project';
|
|
122
|
+
Bootstrap.flags = {
|
|
123
|
+
template: Flags.string({
|
|
124
|
+
char: 't',
|
|
125
|
+
description: 'An optional template name',
|
|
126
|
+
}),
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=bootstrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../src/commands/bootstrap.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function main(): Promise<void>;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAE/C,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,MAAM,SAAS,CAAC,GAAG,EAAE,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
export function isValidProjectDirectory(dirPath) {
|
|
3
|
+
if (!fs.existsSync(dirPath)) {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
return fs.readdirSync(dirPath).length === 0;
|
|
7
|
+
}
|
|
8
|
+
export function hasGitDir() {
|
|
9
|
+
return fs.existsSync('./.git');
|
|
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
|
+
//# sourceMappingURL=directory.js.map
|
|
@@ -0,0 +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;AAED,MAAM,UAAU,kBAAkB,CAAE,OAAe;IACjD,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAA;IAExD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE;QAC/B,EAAE,CAAC,UAAU,CAAC,GAAG,OAAO,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC,CAAA;KACjD;IAED,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;AACzC,CAAC;AAED,MAAM,UAAU,cAAc,CAAE,WAAmB;IACjD,MAAM,QAAQ,GAAG,qBAAqB,CAAA;IACtC,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAExD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa;SACrC,OAAO,CAAC,qBAAqB,EAAE,WAAW,CAAC;SAC3C,OAAO,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAC7C,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function getVersion(): Promise<string>;
|
|
2
|
+
export declare function getUserGreeting(): Promise<string>;
|
|
3
|
+
export declare function bail(): void;
|
|
4
|
+
export declare function header(version: string, greeting: string): Promise<void>;
|
|
5
|
+
export declare function hint(prefix: string, text: string): Promise<void>;
|
|
6
|
+
export declare function footer(targetDir?: string): Promise<void>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/* eslint no-console: 'off' */
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
import chalk from 'chalk';
|
|
4
|
+
import fullName from 'fullname';
|
|
5
|
+
function sleep(ms) {
|
|
6
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
7
|
+
}
|
|
8
|
+
export async function getVersion() {
|
|
9
|
+
const { data } = await axios.get('https://registry.npmjs.org/@checkly/cli/latest');
|
|
10
|
+
return data.version;
|
|
11
|
+
}
|
|
12
|
+
export async function getUserGreeting() {
|
|
13
|
+
const name = await fullName();
|
|
14
|
+
return name ? `Hi ${name}!` : 'Hi there!';
|
|
15
|
+
}
|
|
16
|
+
export function bail() {
|
|
17
|
+
console.log(chalk.dim('Bailing, hope to see you again soon!\n'));
|
|
18
|
+
}
|
|
19
|
+
export async function header(version, greeting) {
|
|
20
|
+
console.log(`${chalk.black.bgCyan.bold(' checkly ')} v${version} ${chalk.bold('Build and Run Synthetics That Scale')}\n`);
|
|
21
|
+
await sleep(1000);
|
|
22
|
+
console.log(`${greeting} Let's get you started on your ${chalk.green.bold('monitoring as code')} journey!\n`);
|
|
23
|
+
await sleep(500);
|
|
24
|
+
}
|
|
25
|
+
export async function hint(prefix, text) {
|
|
26
|
+
await sleep(100);
|
|
27
|
+
if (process.stdout.columns < 80) {
|
|
28
|
+
console.log(`${chalk.cyan('◼')} ${chalk.cyan(prefix)}`);
|
|
29
|
+
console.log(`${' '.repeat(3)}${chalk.dim(text)}\n`);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
console.log(`${chalk.cyan('◼')} ${chalk.cyan(prefix)} ${chalk.dim(text)}\n`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export async function footer(targetDir) {
|
|
36
|
+
const max = process.stdout.columns;
|
|
37
|
+
const prefix = max < 80 ? ' ' : ' '.repeat(9);
|
|
38
|
+
await sleep(200);
|
|
39
|
+
console.log(`\n ${chalk.bgCyan(` ${chalk.black.bold('next')} `)} ${chalk.bold('All done. Time to get testing & monitoring with Checkly\n')}`);
|
|
40
|
+
if (targetDir) {
|
|
41
|
+
await sleep(200);
|
|
42
|
+
console.log(`${prefix}> Enter your project directory using ${chalk.cyan(`cd ./${targetDir}`)}`);
|
|
43
|
+
}
|
|
44
|
+
await sleep(200);
|
|
45
|
+
console.log(`${prefix}> Run ${chalk.cyan('npx checkly login')} to login to your Checkly account`);
|
|
46
|
+
await sleep(200);
|
|
47
|
+
console.log(`${prefix}> Run ${chalk.cyan('npx checkly test')} to dry run your checks`);
|
|
48
|
+
await sleep(200);
|
|
49
|
+
console.log(`${prefix}> Run ${chalk.cyan('npx checkly deploy')} to deploy your checks to the Checkly cloud`);
|
|
50
|
+
await sleep(200);
|
|
51
|
+
console.log(`\n${prefix}Questions?\n`);
|
|
52
|
+
console.log(`${prefix}- Check the docs at ${chalk.cyan('https://checklyhq.com/docs/cli')}`);
|
|
53
|
+
console.log(`${prefix}- Join the Checkly Slack community at ${chalk.cyan('https://checklyhq.com/slack')}\n`);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/utils/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../src/utils/terminal.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,KAAK,CAAA;AAErB,MAAM,UAAU,OAAO,CAAE,IAAY;IACnC,OAAO,GAAG,CAAC;QACT,IAAI,EAAE,GAAG,IAAI,EAAE;KAChB,CAAC,CAAC,KAAK,EAAE,CAAA;AACZ,CAAC"}
|
package/index.mjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/* eslint-disable no-console */
|
|
3
|
+
|
|
4
|
+
const currentVersion = process.versions.node;
|
|
5
|
+
const requiredVersion = parseInt(currentVersion.split('.')[0], 10);
|
|
6
|
+
const minimumVersion = 16;
|
|
7
|
+
|
|
8
|
+
if (requiredVersion < minimumVersion) {
|
|
9
|
+
console.error(`You are running Node.js v${currentVersion}. The Checkly CLI requires Node.js v${minimumVersion} or higher.`)
|
|
10
|
+
process.exit(1);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
import('./dist/index.js').then(({ main }) => main());
|
package/package.json
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-checkly",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Checkly Create CLI",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"private": false,
|
|
9
|
+
"scripts": {
|
|
10
|
+
"clean": "rimraf ./dist",
|
|
11
|
+
"test": "jest --selectProjects unit",
|
|
12
|
+
"prepare": "npm run clean && tsc --build",
|
|
13
|
+
"lint": "eslint src",
|
|
14
|
+
"start": "node ./index.mjs"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/checkly/checkly-cli.git"
|
|
19
|
+
},
|
|
20
|
+
"author": "Checkly Engineering <support@checklyhq.com>",
|
|
21
|
+
"license": "Apache-2.0",
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/checkly/checkly-cli/issues"
|
|
24
|
+
},
|
|
25
|
+
"exports": {
|
|
26
|
+
".": "./index.mjs"
|
|
27
|
+
},
|
|
28
|
+
"bin": {
|
|
29
|
+
"create-cli": "./index.mjs"
|
|
30
|
+
},
|
|
31
|
+
"files": [
|
|
32
|
+
"dist",
|
|
33
|
+
"create-cli.js"
|
|
34
|
+
],
|
|
35
|
+
"homepage": "https://github.com/checkly/checkly-cli#readme",
|
|
36
|
+
"dependencies": {
|
|
37
|
+
"@oclif/core": "2.0.7",
|
|
38
|
+
"@oclif/plugin-help": "5.1.20",
|
|
39
|
+
"@oclif/plugin-plugins": "2.3.0",
|
|
40
|
+
"@typescript-eslint/typescript-estree": "5.46.1",
|
|
41
|
+
"axios": "1.3.1",
|
|
42
|
+
"chalk": "4.1.2",
|
|
43
|
+
"debug": "^4.3.4",
|
|
44
|
+
"execa": "^6.1.0",
|
|
45
|
+
"fullname": "4.0.1",
|
|
46
|
+
"giget": "^1.1.2",
|
|
47
|
+
"normalize-url": "8.0.0",
|
|
48
|
+
"ora": "^6.1.2",
|
|
49
|
+
"prompts": "^2.4.2",
|
|
50
|
+
"unique-names-generator": "^4.7.1",
|
|
51
|
+
"which-pm-runs": "^1.1.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@checkly/eslint-config": "0.14.1",
|
|
55
|
+
"@types/config": "3.3.0",
|
|
56
|
+
"@types/debug": "^4.1.7",
|
|
57
|
+
"@types/glob": "8.0.0",
|
|
58
|
+
"@types/jest": "29.2.4",
|
|
59
|
+
"@types/luxon": "3.2.0",
|
|
60
|
+
"@types/node": "18.11.18",
|
|
61
|
+
"@types/prompts": "^2.4.2",
|
|
62
|
+
"@types/uuid": "9.0.1",
|
|
63
|
+
"@types/which-pm-runs": "^1.0.0",
|
|
64
|
+
"@types/ws": "8.5.3",
|
|
65
|
+
"@typescript-eslint/eslint-plugin": "5.46.1",
|
|
66
|
+
"@typescript-eslint/parser": "5.46.1",
|
|
67
|
+
"config": "3.3.8",
|
|
68
|
+
"eslint": "8.30.0",
|
|
69
|
+
"jest": "29.3.1",
|
|
70
|
+
"ts-jest": "29.0.3",
|
|
71
|
+
"ts-node": "10.9.1",
|
|
72
|
+
"typescript": "4.9.4"
|
|
73
|
+
},
|
|
74
|
+
"eslintConfig": {
|
|
75
|
+
"rules": {
|
|
76
|
+
"@typescript-eslint/type-annotation-spacing": 2,
|
|
77
|
+
"@typescript-eslint/no-explicit-any": 0,
|
|
78
|
+
"@typescript-eslint/ban-ts-comment": 0,
|
|
79
|
+
"no-console": 2
|
|
80
|
+
},
|
|
81
|
+
"extends": [
|
|
82
|
+
"@checkly/eslint-config",
|
|
83
|
+
"plugin:@typescript-eslint/recommended"
|
|
84
|
+
],
|
|
85
|
+
"parser": "@typescript-eslint/parser",
|
|
86
|
+
"plugins": [
|
|
87
|
+
"@typescript-eslint"
|
|
88
|
+
],
|
|
89
|
+
"overrides": [
|
|
90
|
+
{
|
|
91
|
+
"files": [
|
|
92
|
+
"src/commands/*",
|
|
93
|
+
"src/reporters/*"
|
|
94
|
+
],
|
|
95
|
+
"rules": {
|
|
96
|
+
"no-console": 0
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
},
|
|
101
|
+
"jest": {
|
|
102
|
+
"projects": [
|
|
103
|
+
{
|
|
104
|
+
"displayName": "unit",
|
|
105
|
+
"testMatch": [
|
|
106
|
+
"<rootDir>/src/**/*.spec.ts"
|
|
107
|
+
],
|
|
108
|
+
"preset": "ts-jest",
|
|
109
|
+
"testEnvironment": "node"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"displayName": "E2E",
|
|
113
|
+
"testMatch": [
|
|
114
|
+
"<rootDir>/e2e/__tests__/**/*.spec.ts"
|
|
115
|
+
],
|
|
116
|
+
"preset": "ts-jest",
|
|
117
|
+
"testEnvironment": "node"
|
|
118
|
+
}
|
|
119
|
+
],
|
|
120
|
+
"reporters": [
|
|
121
|
+
"default",
|
|
122
|
+
"github-actions"
|
|
123
|
+
]
|
|
124
|
+
}
|
|
125
|
+
}
|