@quenty/nevermore-cli 4.12.4 → 4.13.0-canary.637.d86930c.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/dist/args/global-args.js +1 -2
- package/dist/commands/download-roblox-types.d.ts +1 -1
- package/dist/commands/download-roblox-types.d.ts.map +1 -1
- package/dist/commands/download-roblox-types.js +43 -88
- package/dist/commands/download-roblox-types.js.map +1 -1
- package/dist/commands/init-game-command.d.ts +1 -1
- package/dist/commands/init-game-command.d.ts.map +1 -1
- package/dist/commands/init-game-command.js +69 -113
- package/dist/commands/init-game-command.js.map +1 -1
- package/dist/commands/init-package-command.d.ts +1 -1
- package/dist/commands/init-package-command.d.ts.map +1 -1
- package/dist/commands/init-package-command.js +31 -75
- package/dist/commands/init-package-command.js.map +1 -1
- package/dist/commands/init-plugin-command.d.ts +1 -1
- package/dist/commands/init-plugin-command.d.ts.map +1 -1
- package/dist/commands/init-plugin-command.js +28 -70
- package/dist/commands/init-plugin-command.js.map +1 -1
- package/dist/commands/install-package-command.d.ts +2 -2
- package/dist/commands/install-package-command.d.ts.map +1 -1
- package/dist/commands/install-package-command.js +42 -62
- package/dist/commands/install-package-command.js.map +1 -1
- package/dist/commands/pack-command.d.ts +1 -1
- package/dist/commands/pack-command.d.ts.map +1 -1
- package/dist/commands/pack-command.js +19 -59
- package/dist/commands/pack-command.js.map +1 -1
- package/dist/commands/test-project-command.d.ts +1 -1
- package/dist/commands/test-project-command.d.ts.map +1 -1
- package/dist/commands/test-project-command.js +89 -124
- package/dist/commands/test-project-command.js.map +1 -1
- package/dist/nevermore.js +29 -25
- package/dist/nevermore.js.map +1 -1
- package/dist/utils/nevermore-cli-utils.d.ts +3 -3
- package/dist/utils/nevermore-cli-utils.d.ts.map +1 -1
- package/dist/utils/nevermore-cli-utils.js +19 -61
- package/dist/utils/nevermore-cli-utils.js.map +1 -1
- package/package.json +13 -12
- package/src/commands/download-roblox-types.ts +1 -1
- package/src/commands/init-game-command.ts +2 -3
- package/src/commands/init-package-command.ts +2 -2
- package/src/commands/init-plugin-command.ts +3 -3
- package/src/commands/install-package-command.ts +31 -27
- package/src/commands/pack-command.ts +2 -2
- package/src/commands/test-project-command.ts +2 -2
- package/src/nevermore.ts +20 -7
- package/src/utils/nevermore-cli-utils.ts +3 -3
- package/tsconfig.json +5 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,42 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
exports.TestProjectCommand = void 0;
|
|
36
|
-
const cli_output_helpers_1 = require("@quenty/cli-output-helpers");
|
|
37
|
-
const nevermore_cli_utils_1 = require("../utils/nevermore-cli-utils");
|
|
38
|
-
const fs = __importStar(require("fs/promises"));
|
|
39
|
-
const path = __importStar(require("path"));
|
|
1
|
+
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
2
|
+
import { runCommandAsync } from '../utils/nevermore-cli-utils.js';
|
|
3
|
+
import * as fs from 'fs/promises';
|
|
4
|
+
import * as path from 'path';
|
|
40
5
|
const TEMPLATE_BASE_URL = 'https://raw.githubusercontent.com/Quenty/NevermoreEngine/main/tests/test-place-template';
|
|
41
6
|
const TEMPLATE_FILES = [
|
|
42
7
|
'aftman.toml',
|
|
@@ -48,96 +13,96 @@ const TEMPLATE_FILES = [
|
|
|
48
13
|
/**
|
|
49
14
|
* Generate and run tests from a Nevermore package or project
|
|
50
15
|
*/
|
|
51
|
-
class TestProjectCommand {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
throw new Error(`Failed to fetch template file: ${file}`);
|
|
89
|
-
}
|
|
90
|
-
const content = yield response.text();
|
|
91
|
-
const targetPath = path.join(buildDir, file);
|
|
92
|
-
yield fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
93
|
-
yield fs.writeFile(targetPath, content);
|
|
94
|
-
cli_output_helpers_1.OutputHelper.info(`Copied template: ${file}`);
|
|
16
|
+
export class TestProjectCommand {
|
|
17
|
+
command = 'test';
|
|
18
|
+
describe = 'Generate and run tests from a package or project';
|
|
19
|
+
builder = (args) => {
|
|
20
|
+
return args;
|
|
21
|
+
};
|
|
22
|
+
validateProject = async (srcRoot) => {
|
|
23
|
+
try {
|
|
24
|
+
await fs.access(path.join(srcRoot, 'package.json'));
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
throw new Error('No package.json found - are you in a Nevermore project?');
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
buildDirExists = async (srcRoot) => {
|
|
32
|
+
try {
|
|
33
|
+
await fs.access(path.join(srcRoot, 'build'));
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
ensureBuildDir = async (srcRoot) => {
|
|
41
|
+
const buildDir = path.join(srcRoot, 'build');
|
|
42
|
+
await fs.mkdir(buildDir, { recursive: true });
|
|
43
|
+
return buildDir;
|
|
44
|
+
};
|
|
45
|
+
fetchTemplates = async (buildDir) => {
|
|
46
|
+
OutputHelper.info('Fetching test project templates...');
|
|
47
|
+
const fetch = (await import('node-fetch')).default;
|
|
48
|
+
for (const file of TEMPLATE_FILES) {
|
|
49
|
+
const fileUrl = `${TEMPLATE_BASE_URL}/${file}`;
|
|
50
|
+
const response = await fetch(fileUrl);
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
throw new Error(`Failed to fetch template file: ${file}`);
|
|
95
53
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
54
|
+
const content = await response.text();
|
|
55
|
+
const targetPath = path.join(buildDir, file);
|
|
56
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
57
|
+
await fs.writeFile(targetPath, content);
|
|
58
|
+
OutputHelper.info(`Copied template: ${file}`);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
modifyDefaultProject = async (buildDir, srcRoot) => {
|
|
62
|
+
const projectPath = path.join(buildDir, 'default.project.json');
|
|
63
|
+
const projectConfig = JSON.parse(await fs.readFile(projectPath, 'utf-8'));
|
|
64
|
+
projectConfig.tree.ServerScriptService.UnitTest.project = {
|
|
65
|
+
$path: path.relative(buildDir, path.join(srcRoot, 'src/modules')),
|
|
66
|
+
};
|
|
67
|
+
await fs.writeFile(projectPath, JSON.stringify(projectConfig, null, 2));
|
|
68
|
+
};
|
|
69
|
+
copyPackageDeps = async (srcRoot, buildDir) => {
|
|
70
|
+
const srcPkg = JSON.parse(await fs.readFile(path.join(srcRoot, 'package.json'), 'utf-8'));
|
|
71
|
+
const buildPkg = JSON.parse(await fs.readFile(path.join(buildDir, 'package.json'), 'utf-8'));
|
|
72
|
+
buildPkg.dependencies = {
|
|
73
|
+
...buildPkg.dependencies,
|
|
74
|
+
...srcPkg.dependencies,
|
|
75
|
+
};
|
|
76
|
+
await fs.writeFile(path.join(buildDir, 'package.json'), JSON.stringify(buildPkg, null, 2));
|
|
77
|
+
};
|
|
78
|
+
handler = async (args) => {
|
|
79
|
+
const srcRoot = process.cwd();
|
|
80
|
+
await this.validateProject(srcRoot);
|
|
81
|
+
const buildDir = path.join(srcRoot, 'build');
|
|
82
|
+
const buildExists = await this.buildDirExists(srcRoot);
|
|
83
|
+
if (!buildExists) {
|
|
84
|
+
OutputHelper.info('Setting up test environment...');
|
|
85
|
+
await this.ensureBuildDir(srcRoot);
|
|
86
|
+
await this.fetchTemplates(buildDir);
|
|
87
|
+
await this.modifyDefaultProject(buildDir, srcRoot);
|
|
88
|
+
await this.copyPackageDeps(srcRoot, buildDir);
|
|
89
|
+
OutputHelper.info('Installing Jest...');
|
|
90
|
+
await runCommandAsync(args, 'npm', ['install', 'https://github.com/quentystudios/jest-lua'], {
|
|
133
91
|
cwd: buildDir,
|
|
134
92
|
});
|
|
135
|
-
|
|
136
|
-
|
|
93
|
+
OutputHelper.info('Installing dependencies...');
|
|
94
|
+
await runCommandAsync(args, 'npm', ['install'], {
|
|
137
95
|
cwd: buildDir,
|
|
138
96
|
});
|
|
97
|
+
}
|
|
98
|
+
OutputHelper.info('Building test place...');
|
|
99
|
+
await runCommandAsync(args, 'rojo', ['build', 'default.project.json', '-o', 'testBuild.rbxl'], {
|
|
100
|
+
cwd: buildDir,
|
|
101
|
+
});
|
|
102
|
+
OutputHelper.info('Running tests...');
|
|
103
|
+
await runCommandAsync(args, 'run-in-roblox', ['--place', 'testBuild.rbxl', '--script', 'run-tests.luau'], {
|
|
104
|
+
cwd: buildDir,
|
|
139
105
|
});
|
|
140
|
-
}
|
|
106
|
+
};
|
|
141
107
|
}
|
|
142
|
-
exports.TestProjectCommand = TestProjectCommand;
|
|
143
108
|
//# sourceMappingURL=test-project-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-project-command.js","sourceRoot":"","sources":["../../src/commands/test-project-command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-project-command.js","sourceRoot":"","sources":["../../src/commands/test-project-command.ts"],"names":[],"mappings":"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"}
|
package/dist/nevermore.js
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";
|
|
3
2
|
/**
|
|
4
3
|
* Main entry point for Nevermore command helper
|
|
5
4
|
*/
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
import yargs from 'yargs';
|
|
6
|
+
import { hideBin } from 'yargs/helpers';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
import { dirname, join } from 'path';
|
|
9
|
+
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
10
|
+
import { checkForUpdatesAsync } from '@quenty/nevermore-cli-helpers';
|
|
11
|
+
import { InitGameCommand } from './commands/init-game-command.js';
|
|
12
|
+
import { InitPackageCommand } from './commands/init-package-command.js';
|
|
13
|
+
import { InitPluginCommand } from './commands/init-plugin-command.js';
|
|
14
|
+
import { PackCommand } from './commands/pack-command.js';
|
|
15
|
+
import { InstallPackageCommand } from './commands/install-package-command.js';
|
|
16
|
+
import { TestProjectCommand } from './commands/test-project-command.js';
|
|
17
|
+
import { DownloadRobloxTypes } from './commands/download-roblox-types.js';
|
|
18
|
+
await checkForUpdatesAsync({
|
|
19
|
+
humanReadableName: 'Nevermore CLI',
|
|
20
|
+
packageName: '@quenty/nevermore-cli',
|
|
21
|
+
registryUrl: 'https://registry.npmjs.org/',
|
|
22
|
+
packageJsonPath: join(dirname(fileURLToPath(import.meta.url)), '../package.json'),
|
|
23
|
+
});
|
|
24
|
+
yargs(hideBin(process.argv))
|
|
21
25
|
.scriptName('nevermore')
|
|
22
26
|
.version()
|
|
23
27
|
.option('yes', {
|
|
@@ -32,16 +36,16 @@ const download_roblox_types_1 = require("./commands/download-roblox-types");
|
|
|
32
36
|
global: true,
|
|
33
37
|
type: 'boolean',
|
|
34
38
|
})
|
|
35
|
-
.usage(
|
|
36
|
-
.command(new
|
|
37
|
-
.command(new
|
|
38
|
-
.command(new
|
|
39
|
-
.command(new
|
|
40
|
-
.command(new
|
|
41
|
-
.command(new
|
|
42
|
-
.command(new
|
|
39
|
+
.usage(OutputHelper.formatInfo('Usage: $0 <command> [options]'))
|
|
40
|
+
.command(new InitGameCommand())
|
|
41
|
+
.command(new InitPackageCommand())
|
|
42
|
+
.command(new InitPluginCommand())
|
|
43
|
+
.command(new PackCommand())
|
|
44
|
+
.command(new InstallPackageCommand())
|
|
45
|
+
.command(new TestProjectCommand())
|
|
46
|
+
.command(new DownloadRobloxTypes())
|
|
43
47
|
.recommendCommands()
|
|
44
|
-
.demandCommand(1,
|
|
48
|
+
.demandCommand(1, OutputHelper.formatHint("Hint: See 'nevermore help' for more help"))
|
|
45
49
|
.wrap(null)
|
|
46
50
|
.strict().argv;
|
|
47
51
|
//# sourceMappingURL=nevermore.js.map
|
package/dist/nevermore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nevermore.js","sourceRoot":"","sources":["../src/nevermore.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nevermore.js","sourceRoot":"","sources":["../src/nevermore.ts"],"names":[],"mappings":";AAEA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,oBAAoB,CAAC;IACzB,iBAAiB,EAAE,eAAe;IAClC,WAAW,EAAE,uBAAuB;IACpC,WAAW,EAAE,6BAA6B;IAC1C,eAAe,EAAE,IAAI,CACnB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,iBAAiB,CAClB;CACF,CAAC,CAAC;AAEH,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACzB,UAAU,CAAC,WAAW,CAAC;KACvB,OAAO,EAAE;KACT,MAAM,CAAC,KAAK,EAAE;IACb,WAAW,EAAE,wDAAwD;IACrE,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,SAAS;CAChB,CAAC;KACD,MAAM,CAAC,QAAQ,EAAE;IAChB,WAAW,EACT,mEAAmE;IACrE,OAAO,EAAE,KAAK;IACd,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,SAAS;CAChB,CAAC;KACD,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;KAC/D,OAAO,CAAC,IAAI,eAAe,EAAS,CAAC;KACrC,OAAO,CAAC,IAAI,kBAAkB,EAAS,CAAC;KACxC,OAAO,CAAC,IAAI,iBAAiB,EAAS,CAAC;KACvC,OAAO,CAAC,IAAI,WAAW,EAAS,CAAC;KACjC,OAAO,CAAC,IAAI,qBAAqB,EAAS,CAAC;KAC3C,OAAO,CAAC,IAAI,kBAAkB,EAAS,CAAC;KACxC,OAAO,CAAC,IAAI,mBAAmB,EAAS,CAAC;KACzC,iBAAiB,EAAE;KACnB,aAAa,CACZ,CAAC,EACD,YAAY,CAAC,UAAU,CAAC,0CAA0C,CAAC,CACpE;KACA,IAAI,CAAC,IAAI,CAAC;KACV,MAAM,EAAE,CAAC,IAAI,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { NevermoreGlobalArgs } from '../args/global-args';
|
|
2
|
-
import
|
|
1
|
+
import { NevermoreGlobalArgs } from '../args/global-args.js';
|
|
2
|
+
import { Options } from 'execa';
|
|
3
3
|
/**
|
|
4
4
|
* Gets a temlate path by name
|
|
5
5
|
* @param name
|
|
6
6
|
* @returns
|
|
7
7
|
*/
|
|
8
8
|
export declare function getTemplatePathByName(name: string): string;
|
|
9
|
-
export declare function runCommandAsync(initGameArgs: NevermoreGlobalArgs, command: string, args: string[], options?:
|
|
9
|
+
export declare function runCommandAsync(initGameArgs: NevermoreGlobalArgs, command: string, args: string[], options?: Options): Promise<any>;
|
|
10
10
|
//# sourceMappingURL=nevermore-cli-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nevermore-cli-utils.d.ts","sourceRoot":"","sources":["../../src/utils/nevermore-cli-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"nevermore-cli-utils.d.ts","sourceRoot":"","sources":["../../src/utils/nevermore-cli-utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAS,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,UAEjD;AAED,wBAAsB,eAAe,CACnC,YAAY,EAAE,mBAAmB,EACjC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,GAAG,CAAC,CAwBd"}
|
|
@@ -1,72 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
35
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
36
|
-
};
|
|
37
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
38
|
-
exports.runCommandAsync = exports.getTemplatePathByName = void 0;
|
|
39
|
-
const path = __importStar(require("path"));
|
|
40
|
-
const cli_output_helpers_1 = require("@quenty/cli-output-helpers");
|
|
41
|
-
const execa_1 = __importDefault(require("execa"));
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
3
|
+
import { execa } from 'execa';
|
|
42
4
|
/**
|
|
43
5
|
* Gets a temlate path by name
|
|
44
6
|
* @param name
|
|
45
7
|
* @returns
|
|
46
8
|
*/
|
|
47
|
-
function getTemplatePathByName(name) {
|
|
9
|
+
export function getTemplatePathByName(name) {
|
|
48
10
|
return path.join(__dirname, '..', '..', 'templates', name);
|
|
49
11
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
12
|
+
export async function runCommandAsync(initGameArgs, command, args, options) {
|
|
13
|
+
if (initGameArgs.dryrun) {
|
|
14
|
+
OutputHelper.info(`[DRYRUN]: Would have ran \`${command} ${args.join(' ')}\``);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
OutputHelper.info(`Running \`${command} ${args.join(' ')}\``);
|
|
18
|
+
const commandExec = execa(command, args, options);
|
|
19
|
+
if (commandExec.stdout) {
|
|
20
|
+
commandExec.stdout.pipe(process.stdout);
|
|
55
21
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const commandExec = (0, execa_1.default)(command, args, options);
|
|
59
|
-
if (commandExec.stdout) {
|
|
60
|
-
commandExec.stdout.pipe(process.stdout);
|
|
61
|
-
}
|
|
62
|
-
if (commandExec.stderr) {
|
|
63
|
-
commandExec.stderr.pipe(process.stderr);
|
|
64
|
-
}
|
|
65
|
-
const result = yield commandExec;
|
|
66
|
-
cli_output_helpers_1.OutputHelper.info(`Finished running '${result.command}'`);
|
|
67
|
-
return result;
|
|
22
|
+
if (commandExec.stderr) {
|
|
23
|
+
commandExec.stderr.pipe(process.stderr);
|
|
68
24
|
}
|
|
69
|
-
|
|
25
|
+
const result = await commandExec;
|
|
26
|
+
OutputHelper.info(`Finished running '${result.command}'`);
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
70
29
|
}
|
|
71
|
-
exports.runCommandAsync = runCommandAsync;
|
|
72
30
|
//# sourceMappingURL=nevermore-cli-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nevermore-cli-utils.js","sourceRoot":"","sources":["../../src/utils/nevermore-cli-utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nevermore-cli-utils.js","sourceRoot":"","sources":["../../src/utils/nevermore-cli-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAW,MAAM,OAAO,CAAC;AAEvC;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,YAAiC,EACjC,OAAe,EACf,IAAc,EACd,OAAiB;IAEjB,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,YAAY,CAAC,IAAI,CACf,8BAA8B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAC5D,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC,aAAa,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAE9D,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAElD,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;YACvB,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAEjC,YAAY,CAAC,IAAI,CAAC,qBAAqB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC;QAE1D,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/nevermore-cli",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.13.0-canary.637.d86930c.0",
|
|
4
4
|
"description": "CLI interface for Nevermore",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"keywords": [
|
|
6
7
|
"Roblox",
|
|
7
8
|
"Nevermore",
|
|
@@ -24,27 +25,27 @@
|
|
|
24
25
|
"Quenty"
|
|
25
26
|
],
|
|
26
27
|
"dependencies": {
|
|
27
|
-
"@quenty/cli-output-helpers": "1.
|
|
28
|
-
"@quenty/nevermore-
|
|
29
|
-
"
|
|
28
|
+
"@quenty/cli-output-helpers": "1.3.0-canary.637.d86930c.0",
|
|
29
|
+
"@quenty/nevermore-cli-helpers": "1.1.0-canary.637.d86930c.0",
|
|
30
|
+
"@quenty/nevermore-template-helpers": "1.5.0-canary.637.d86930c.0",
|
|
31
|
+
"execa": "^9.6.1",
|
|
30
32
|
"find-git-root": "^1.0.4",
|
|
31
|
-
"inquirer": "^
|
|
33
|
+
"inquirer": "^13.2.0",
|
|
32
34
|
"node-fetch": "^3.3.2",
|
|
33
35
|
"typescript-memoize": "^1.1.1",
|
|
34
|
-
"yargs": "^
|
|
36
|
+
"yargs": "^18.0.0"
|
|
35
37
|
},
|
|
36
38
|
"devDependencies": {
|
|
37
|
-
"@types/inquirer": "^9.0.
|
|
39
|
+
"@types/inquirer": "^9.0.9",
|
|
38
40
|
"@types/node": "^18.11.4",
|
|
39
41
|
"@types/yargs": "^17.0.13",
|
|
40
42
|
"prettier": "2.7.1",
|
|
41
|
-
"typescript": "^
|
|
43
|
+
"typescript": "^5.9.3"
|
|
42
44
|
},
|
|
43
45
|
"scripts": {
|
|
44
46
|
"build": "tsc --build",
|
|
45
|
-
"watch": "tsc --build --watch",
|
|
46
|
-
"clean": "tsc --build --clean"
|
|
47
|
-
"preinstall": "npx only-allow pnpm"
|
|
47
|
+
"build:watch": "tsc --build --watch",
|
|
48
|
+
"build:clean": "tsc --build --clean"
|
|
48
49
|
},
|
|
49
50
|
"publishConfig": {
|
|
50
51
|
"access": "public"
|
|
@@ -52,5 +53,5 @@
|
|
|
52
53
|
"engines": {
|
|
53
54
|
"node": ">=16"
|
|
54
55
|
},
|
|
55
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "d86930c85f24d879dee9ce5ce413488d1250246d"
|
|
56
57
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { Argv, CommandModule } from 'yargs';
|
|
6
|
-
import { NevermoreGlobalArgs } from '../args/global-args';
|
|
6
|
+
import { NevermoreGlobalArgs } from '../args/global-args.js';
|
|
7
7
|
import * as fs from 'fs/promises';
|
|
8
8
|
import * as fsSync from 'fs';
|
|
9
9
|
import * as https from 'https';
|
|
@@ -6,12 +6,11 @@ import { Argv, CommandModule } from 'yargs';
|
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
8
8
|
import { TemplateHelper } from '@quenty/nevermore-template-helpers';
|
|
9
|
-
import { NevermoreGlobalArgs } from '../args/global-args';
|
|
9
|
+
import { NevermoreGlobalArgs } from '../args/global-args.js';
|
|
10
10
|
import {
|
|
11
11
|
getTemplatePathByName,
|
|
12
12
|
runCommandAsync,
|
|
13
|
-
} from '../utils/nevermore-cli-utils';
|
|
14
|
-
|
|
13
|
+
} from '../utils/nevermore-cli-utils.js';
|
|
15
14
|
export interface InitGameArgs extends NevermoreGlobalArgs {
|
|
16
15
|
gameName: string;
|
|
17
16
|
}
|
|
@@ -6,8 +6,8 @@ import { Argv, CommandModule } from 'yargs';
|
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
8
8
|
import { TemplateHelper } from '@quenty/nevermore-template-helpers';
|
|
9
|
-
import { NevermoreGlobalArgs } from '../args/global-args';
|
|
10
|
-
import { getTemplatePathByName } from '../utils/nevermore-cli-utils';
|
|
9
|
+
import { NevermoreGlobalArgs } from '../args/global-args.js';
|
|
10
|
+
import { getTemplatePathByName } from '../utils/nevermore-cli-utils.js';
|
|
11
11
|
|
|
12
12
|
export interface InitPackageArgs extends NevermoreGlobalArgs {
|
|
13
13
|
packageName: string;
|
|
@@ -6,9 +6,9 @@ import { Argv, CommandModule } from 'yargs';
|
|
|
6
6
|
import * as path from 'path';
|
|
7
7
|
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
8
8
|
import { TemplateHelper } from '@quenty/nevermore-template-helpers';
|
|
9
|
-
import { NevermoreGlobalArgs } from '../args/global-args';
|
|
10
|
-
import { getTemplatePathByName } from '../utils/nevermore-cli-utils';
|
|
11
|
-
import { InitGameCommand } from './init-game-command';
|
|
9
|
+
import { NevermoreGlobalArgs } from '../args/global-args.js';
|
|
10
|
+
import { getTemplatePathByName } from '../utils/nevermore-cli-utils.js';
|
|
11
|
+
import { InitGameCommand } from './init-game-command.js';
|
|
12
12
|
|
|
13
13
|
export interface initGameArgs extends NevermoreGlobalArgs {
|
|
14
14
|
pluginName: string;
|