@quenty/nevermore-cli 4.16.1 → 4.16.2
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 +12 -0
- package/dist/commands/init-command/init-package-command.d.ts +2 -2
- package/dist/commands/init-command/init-package-command.d.ts.map +1 -1
- package/dist/commands/init-command/init-package-command.js +4 -4
- package/dist/commands/init-command/init-package-command.js.map +1 -1
- package/dist/commands/init-command/init-plugin-command.d.ts +2 -2
- package/dist/commands/init-command/init-plugin-command.d.ts.map +1 -1
- package/dist/commands/init-command/init-plugin-command.js +4 -4
- package/dist/commands/init-command/init-plugin-command.js.map +1 -1
- package/dist/commands/tools-command/ci-post-test-results.d.ts +1 -0
- package/dist/commands/tools-command/ci-post-test-results.d.ts.map +1 -1
- package/dist/commands/tools-command/ci-post-test-results.js +16 -3
- package/dist/commands/tools-command/ci-post-test-results.js.map +1 -1
- package/dist/commands/tools-command/download-roblox-types.d.ts +2 -2
- package/dist/commands/tools-command/download-roblox-types.d.ts.map +1 -1
- package/dist/commands/tools-command/download-roblox-types.js +15 -5
- package/dist/commands/tools-command/download-roblox-types.js.map +1 -1
- package/dist/nevermore.js +6 -1
- package/dist/nevermore.js.map +1 -1
- package/package.json +6 -6
- package/src/commands/init-command/init-package-command.ts +3 -3
- package/src/commands/init-command/init-plugin-command.ts +3 -3
- package/src/commands/tools-command/ci-post-test-results.ts +27 -9
- package/src/commands/tools-command/download-roblox-types.ts +22 -5
- package/src/nevermore.ts +6 -1
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,18 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.16.2](https://github.com/Quenty/Nevermore/compare/@quenty/nevermore-cli@4.16.1...@quenty/nevermore-cli@4.16.2) (2026-02-17)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* Fix download roblox types ([1dbaeda](https://github.com/Quenty/Nevermore/commit/1dbaeda3bc03469bf6ddee60297f747933366743))
|
|
12
|
+
* When no tests run we report that tests were not run ([66a8608](https://github.com/Quenty/Nevermore/commit/66a860829d7241a0055028669a0bf55d4670a245))
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
6
18
|
## [4.16.1](https://github.com/Quenty/Nevermore/compare/@quenty/nevermore-cli@4.16.0...@quenty/nevermore-cli@4.16.1) (2026-02-17)
|
|
7
19
|
|
|
8
20
|
**Note:** Version bump only for package @quenty/nevermore-cli
|
|
@@ -14,8 +14,8 @@ export interface InitPackageArgs extends NevermoreGlobalArgs {
|
|
|
14
14
|
export declare class InitPackageCommand<T> implements CommandModule<T, InitPackageArgs> {
|
|
15
15
|
command: string;
|
|
16
16
|
describe: string;
|
|
17
|
-
builder(args: Argv<T>)
|
|
18
|
-
handler(args: InitPackageArgs)
|
|
17
|
+
builder: (args: Argv<T>) => any;
|
|
18
|
+
handler: (args: InitPackageArgs) => Promise<void>;
|
|
19
19
|
private static _ensurePackageName;
|
|
20
20
|
private static validatePackageName;
|
|
21
21
|
private static _ensureDescription;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-package-command.d.ts","sourceRoot":"","sources":["../../../src/commands/init-command/init-package-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAC/B,YAAW,aAAa,CAAC,CAAC,EAAE,eAAe,CAAC;IAErC,OAAO,SAA6D;IACpE,QAAQ,SAA6C;IAErD,OAAO,
|
|
1
|
+
{"version":3,"file":"init-package-command.d.ts","sourceRoot":"","sources":["../../../src/commands/init-command/init-package-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,SAAS,GAAG,SAAS,CAAC;CACxC;AAED;;GAEG;AACH,qBAAa,kBAAkB,CAAC,CAAC,CAC/B,YAAW,aAAa,CAAC,CAAC,EAAE,eAAe,CAAC;IAErC,OAAO,SAA6D;IACpE,QAAQ,SAA6C;IAErD,OAAO,GAAI,MAAM,IAAI,CAAC,CAAC,CAAC,KAkBZ,GAAG,CACpB;IAEK,OAAO,GAAU,MAAM,eAAe,mBA2B5C;mBAEoB,kBAAkB;IAcvC,OAAO,CAAC,MAAM,CAAC,mBAAmB;mBAUb,kBAAkB;IAUvC,OAAO,CAAC,MAAM,CAAC,mBAAmB;CASnC"}
|
|
@@ -10,7 +10,7 @@ import { resolveTemplatePath, TemplateHelper } from '@quenty/nevermore-template-
|
|
|
10
10
|
export class InitPackageCommand {
|
|
11
11
|
command = 'package [package-name] [description] [package-template]';
|
|
12
12
|
describe = 'Scaffold a new package within Nevermore';
|
|
13
|
-
builder(args) {
|
|
13
|
+
builder = (args) => {
|
|
14
14
|
let result = args
|
|
15
15
|
.positional('package-name', {
|
|
16
16
|
describe: 'Name of the new package folder.',
|
|
@@ -28,8 +28,8 @@ export class InitPackageCommand {
|
|
|
28
28
|
choices: ['library', 'service'],
|
|
29
29
|
});
|
|
30
30
|
return result;
|
|
31
|
-
}
|
|
32
|
-
async
|
|
31
|
+
};
|
|
32
|
+
handler = async (args) => {
|
|
33
33
|
let rawPackageName = await InitPackageCommand._ensurePackageName(args);
|
|
34
34
|
const packageName = TemplateHelper.camelize(rawPackageName).toLowerCase();
|
|
35
35
|
const packageNameProper = TemplateHelper.camelize(rawPackageName);
|
|
@@ -42,7 +42,7 @@ export class InitPackageCommand {
|
|
|
42
42
|
packageNameProper: packageNameProper,
|
|
43
43
|
description: description,
|
|
44
44
|
}, args.dryrun);
|
|
45
|
-
}
|
|
45
|
+
};
|
|
46
46
|
static async _ensurePackageName(args) {
|
|
47
47
|
let { packageName } = args;
|
|
48
48
|
if (!packageName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-package-command.js","sourceRoot":"","sources":["../../../src/commands/init-command/init-package-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AASzF;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAGtB,OAAO,GAAG,yDAAyD,CAAC;IACpE,QAAQ,GAAG,yCAAyC,CAAC;IAErD,OAAO,CAAC,IAAa;
|
|
1
|
+
{"version":3,"file":"init-package-command.js","sourceRoot":"","sources":["../../../src/commands/init-command/init-package-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,8 +12,8 @@ export interface initGameArgs extends NevermoreGlobalArgs {
|
|
|
12
12
|
export declare class InitPluginCommand<T> implements CommandModule<T, initGameArgs> {
|
|
13
13
|
command: string;
|
|
14
14
|
describe: string;
|
|
15
|
-
builder(args: Argv<T>)
|
|
16
|
-
handler(args: initGameArgs)
|
|
15
|
+
builder: (args: Argv<T>) => Argv<initGameArgs>;
|
|
16
|
+
handler: (args: initGameArgs) => Promise<void>;
|
|
17
17
|
private static _ensurePluginName;
|
|
18
18
|
private static _validatePluginName;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-plugin-command.d.ts","sourceRoot":"","sources":["../../../src/commands/init-command/init-plugin-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,YAAY,CAAC;IAClE,OAAO,SAA0B;IACjC,QAAQ,SAAuD;IAE/D,OAAO,
|
|
1
|
+
{"version":3,"file":"init-plugin-command.d.ts","sourceRoot":"","sources":["../../../src/commands/init-command/init-plugin-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAGhE,MAAM,WAAW,YAAa,SAAQ,mBAAmB;IACvD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,iBAAiB,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,EAAE,YAAY,CAAC;IAClE,OAAO,SAA0B;IACjC,QAAQ,SAAuD;IAE/D,OAAO,GAAI,MAAM,IAAI,CAAC,CAAC,CAAC,KAMd,IAAI,CAAC,YAAY,CAAC,CACjC;IAEK,OAAO,GAAU,MAAM,YAAY,mBA0BzC;mBAEoB,iBAAiB;IAYtC,OAAO,CAAC,MAAM,CAAC,mBAAmB;CASnC"}
|
|
@@ -11,15 +11,15 @@ import { InitGameCommand } from './init-game-command.js';
|
|
|
11
11
|
export class InitPluginCommand {
|
|
12
12
|
command = 'plugin [plugin-name]';
|
|
13
13
|
describe = 'Scaffold a new plugin with Nevermore dependencies';
|
|
14
|
-
builder(args) {
|
|
14
|
+
builder = (args) => {
|
|
15
15
|
args.positional('plugin-name', {
|
|
16
16
|
describe: 'Name of the new package folder.',
|
|
17
17
|
demandOption: false,
|
|
18
18
|
type: 'string',
|
|
19
19
|
});
|
|
20
20
|
return args;
|
|
21
|
-
}
|
|
22
|
-
async
|
|
21
|
+
};
|
|
22
|
+
handler = async (args) => {
|
|
23
23
|
const rawPluginName = await InitPluginCommand._ensurePluginName(args);
|
|
24
24
|
const pluginName = TemplateHelper.camelize(rawPluginName).toLowerCase();
|
|
25
25
|
const pluginNameProper = TemplateHelper.camelize(rawPluginName);
|
|
@@ -32,7 +32,7 @@ export class InitPluginCommand {
|
|
|
32
32
|
}, args.dryrun);
|
|
33
33
|
const packages = ['@quenty/loader', '@quenty/servicebag'];
|
|
34
34
|
await InitGameCommand.initToolChainAsync(args, srcRoot, packages);
|
|
35
|
-
}
|
|
35
|
+
};
|
|
36
36
|
static async _ensurePluginName(args) {
|
|
37
37
|
let { pluginName } = args;
|
|
38
38
|
if (!pluginName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-plugin-command.js","sourceRoot":"","sources":["../../../src/commands/init-command/init-plugin-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACrB,OAAO,GAAG,sBAAsB,CAAC;IACjC,QAAQ,GAAG,mDAAmD,CAAC;IAE/D,OAAO,CAAC,IAAa;
|
|
1
|
+
{"version":3,"file":"init-plugin-command.js","sourceRoot":"","sources":["../../../src/commands/init-command/init-plugin-command.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACrB,OAAO,GAAG,sBAAsB,CAAC;IACjC,QAAQ,GAAG,mDAAmD,CAAC;IAE/D,OAAO,GAAG,CAAC,IAAa,EAAE,EAAE;QACjC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YAC7B,QAAQ,EAAE,iCAAiC;YAC3C,YAAY,EAAE,KAAK;YACnB,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QACH,OAAO,IAA0B,CAAC;IACpC,CAAC,CAAC;IAEK,OAAO,GAAG,KAAK,EAAE,IAAkB,EAAE,EAAE;QAC5C,MAAM,aAAa,GAAG,MAAM,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,CAAC;QACxE,MAAM,gBAAgB,GAAG,cAAc,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAEhE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QAE7E,YAAY,CAAC,IAAI,CACf,6BAA6B,OAAO,oBAAoB,YAAY,GAAG,CACxE,CAAC;QAEF,MAAM,cAAc,CAAC,4BAA4B,CAC/C,YAAY,EACZ,OAAO,EACP;YACE,UAAU,EAAE,UAAU;YACtB,gBAAgB,EAAE,gBAAgB;SACnC,EACD,IAAI,CAAC,MAAM,CACZ,CAAC;QAEF,MAAM,QAAQ,GAAG,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;QAE1D,MAAM,eAAe,CAAC,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpE,CAAC,CAAA;IAEO,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAkB;QACvD,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QAE1B,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,iBAAiB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAElD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,mBAAmB,CAAC,IAAY;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
|
|
@@ -2,6 +2,7 @@ import { CommandModule } from 'yargs';
|
|
|
2
2
|
import { NevermoreGlobalArgs } from '../../args/global-args.js';
|
|
3
3
|
interface CiPostTestResultsArgs extends NevermoreGlobalArgs {
|
|
4
4
|
input: string;
|
|
5
|
+
runOutcome?: string;
|
|
5
6
|
}
|
|
6
7
|
export declare const ciPostTestResultsCommand: CommandModule<NevermoreGlobalArgs, CiPostTestResultsArgs>;
|
|
7
8
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-post-test-results.d.ts","sourceRoot":"","sources":["../../../src/commands/tools-command/ci-post-test-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOhE,UAAU,qBAAsB,SAAQ,mBAAmB;IACzD,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ci-post-test-results.d.ts","sourceRoot":"","sources":["../../../src/commands/tools-command/ci-post-test-results.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAOhE,UAAU,qBAAsB,SAAQ,mBAAmB;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,wBAAwB,EAAE,aAAa,CAClD,mBAAmB,EACnB,qBAAqB,CAsDtB,CAAC"}
|
|
@@ -4,10 +4,17 @@ export const ciPostTestResultsCommand = {
|
|
|
4
4
|
command: 'post-test-results <input>',
|
|
5
5
|
describe: 'Post test results as a PR comment (requires GITHUB_TOKEN and CI context)',
|
|
6
6
|
builder: (yargs) => {
|
|
7
|
-
return yargs
|
|
7
|
+
return yargs
|
|
8
|
+
.positional('input', {
|
|
8
9
|
describe: 'Path to test-results.json',
|
|
9
10
|
type: 'string',
|
|
10
11
|
demandOption: true,
|
|
12
|
+
})
|
|
13
|
+
.option('run-outcome', {
|
|
14
|
+
describe: 'Outcome of the test step (e.g. "success", "failure"). ' +
|
|
15
|
+
'When the results file is missing and run-outcome is "success", ' +
|
|
16
|
+
'posts a neutral "no tests" comment instead of an error.',
|
|
17
|
+
type: 'string',
|
|
11
18
|
});
|
|
12
19
|
},
|
|
13
20
|
handler: async (args) => {
|
|
@@ -20,8 +27,14 @@ export const ciPostTestResultsCommand = {
|
|
|
20
27
|
}
|
|
21
28
|
catch {
|
|
22
29
|
OutputHelper.warn(`Results file not found: ${args.input}`);
|
|
23
|
-
|
|
24
|
-
|
|
30
|
+
if (args.runOutcome === 'success') {
|
|
31
|
+
OutputHelper.info('Test step succeeded — posting informational comment to PR...');
|
|
32
|
+
reporter.setNoTestsRun('No changed packages with test targets were discovered for this PR.');
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
OutputHelper.info('Test step failed — posting failure comment to PR...');
|
|
36
|
+
reporter.setError(`Results file not found: ${args.input}\nThe test run likely crashed before completing.`);
|
|
37
|
+
}
|
|
25
38
|
await reporter.stopAsync();
|
|
26
39
|
return;
|
|
27
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci-post-test-results.js","sourceRoot":"","sources":["../../../src/commands/tools-command/ci-post-test-results.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"ci-post-test-results.js","sourceRoot":"","sources":["../../../src/commands/tools-command/ci-post-test-results.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,wCAAwC,CAAC;AAOhD,MAAM,CAAC,MAAM,wBAAwB,GAGjC;IACF,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EACN,0EAA0E;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;QACjB,OAAO,KAAK;aACT,UAAU,CAAC,OAAO,EAAE;YACnB,QAAQ,EAAE,2BAA2B;YACrC,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,IAAI;SACnB,CAAC;aACD,MAAM,CAAC,aAAa,EAAE;YACrB,QAAQ,EACN,wDAAwD;gBACxD,iEAAiE;gBACjE,yDAAyD;YAC3D,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACP,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,iBAAiB,GAAG,uBAAuB,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,0BAA0B,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,IAAI,KAAyB,CAAC;YAC9B,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY,CAAC,IAAI,CAAC,2BAA2B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAE3D,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBAClC,YAAY,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;oBAClF,QAAQ,CAAC,aAAa,CACpB,oEAAoE,CACrE,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,YAAY,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;oBACzE,QAAQ,CAAC,QAAQ,CACf,2BAA2B,IAAI,CAAC,KAAK,kDAAkD,CACxF,CAAC;gBACJ,CAAC;gBAED,MAAM,QAAQ,CAAC,SAAS,EAAE,CAAC;gBAC3B,OAAO;YACT,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;YACpF,MAAM,eAAe,CAAC,SAAS,EAAE,CAAC;QACpC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAY,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -12,8 +12,8 @@ export interface DownloadRobloxTypesArgs extends NevermoreGlobalArgs {
|
|
|
12
12
|
export declare class DownloadRobloxTypes<T> implements CommandModule<T, DownloadRobloxTypesArgs> {
|
|
13
13
|
command: string;
|
|
14
14
|
describe: string;
|
|
15
|
-
builder(args: Argv<T>)
|
|
16
|
-
handler(args: DownloadRobloxTypesArgs)
|
|
15
|
+
builder: (args: Argv<T>) => Argv<DownloadRobloxTypesArgs>;
|
|
16
|
+
handler: (args: DownloadRobloxTypesArgs) => Promise<void>;
|
|
17
17
|
private static _download;
|
|
18
18
|
private static _needsDownload;
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-roblox-types.d.ts","sourceRoot":"","sources":["../../../src/commands/tools-command/download-roblox-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"download-roblox-types.d.ts","sourceRoot":"","sources":["../../../src/commands/tools-command/download-roblox-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAKhE,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,qBAAa,mBAAmB,CAAC,CAAC,CAChC,YAAW,aAAa,CAAC,CAAC,EAAE,uBAAuB,CAAC;IAE7C,OAAO,SAAuC;IAC9C,QAAQ,SAAiD;IAEzD,OAAO,GAAI,MAAM,IAAI,CAAC,CAAC,CAAC,KAOd,IAAI,CAAC,uBAAuB,CAAC,CAC5C;IAEK,OAAO,GAAU,MAAM,uBAAuB,mBAOnD;mBAEmB,SAAS;mBAyCT,cAAc;CAoBpC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Download roblox types command
|
|
3
3
|
*/
|
|
4
|
+
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
4
5
|
import * as fs from 'fs/promises';
|
|
5
6
|
import * as fsSync from 'fs';
|
|
6
7
|
import * as https from 'https';
|
|
@@ -10,7 +11,7 @@ import * as https from 'https';
|
|
|
10
11
|
export class DownloadRobloxTypes {
|
|
11
12
|
command = 'download-roblox-types [file-name]';
|
|
12
13
|
describe = 'Downloads the Roblox Luau type definitions.';
|
|
13
|
-
builder(args) {
|
|
14
|
+
builder = (args) => {
|
|
14
15
|
args.positional('file-name', {
|
|
15
16
|
describe: 'Path to save the downloaded Roblox Luau type definitions.',
|
|
16
17
|
demandOption: false,
|
|
@@ -18,20 +19,29 @@ export class DownloadRobloxTypes {
|
|
|
18
19
|
default: 'globalTypes.d.lua',
|
|
19
20
|
});
|
|
20
21
|
return args;
|
|
21
|
-
}
|
|
22
|
-
async
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
};
|
|
23
|
+
handler = async (args) => {
|
|
24
|
+
const filename = args.fileName ?? 'globalTypes.d.lua';
|
|
25
|
+
await DownloadRobloxTypes._download(filename, 'https://raw.githubusercontent.com/JohnnyMorganz/luau-lsp/main/scripts/globalTypes.d.lua');
|
|
26
|
+
};
|
|
25
27
|
static async _download(filename, url) {
|
|
26
28
|
if (!(await DownloadRobloxTypes._needsDownload(filename))) {
|
|
29
|
+
OutputHelper.verbose(`Skipping download, ${filename} is up to date`);
|
|
27
30
|
return;
|
|
28
31
|
}
|
|
32
|
+
OutputHelper.verbose(`Downloading Roblox type definitions to ${filename}...`);
|
|
29
33
|
return new Promise((resolve, reject) => {
|
|
30
34
|
const file = fsSync.createWriteStream(filename);
|
|
31
35
|
const request = https.get(url, (response) => {
|
|
36
|
+
if (response.statusCode !== 200) {
|
|
37
|
+
fsSync.unlink(filename, () => { });
|
|
38
|
+
reject(new Error(`Failed to download ${url}: HTTP ${response.statusCode}`));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
32
41
|
response.pipe(file);
|
|
33
42
|
file.on('finish', () => {
|
|
34
43
|
file.close();
|
|
44
|
+
OutputHelper.verbose(`Downloaded ${filename}`);
|
|
35
45
|
resolve();
|
|
36
46
|
});
|
|
37
47
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-roblox-types.js","sourceRoot":"","sources":["../../../src/commands/tools-command/download-roblox-types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"download-roblox-types.js","sourceRoot":"","sources":["../../../src/commands/tools-command/download-roblox-types.ts"],"names":[],"mappings":"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"}
|
package/dist/nevermore.js
CHANGED
|
@@ -73,5 +73,10 @@ yargs(hideBin(process.argv))
|
|
|
73
73
|
.recommendCommands()
|
|
74
74
|
.demandCommand(1, OutputHelper.formatHint("Hint: See 'nevermore help' for more help"))
|
|
75
75
|
.wrap(null)
|
|
76
|
-
.strict()
|
|
76
|
+
.strict()
|
|
77
|
+
.parseAsync()
|
|
78
|
+
.catch((err) => {
|
|
79
|
+
console.error(err);
|
|
80
|
+
process.exitCode = 1;
|
|
81
|
+
});
|
|
77
82
|
//# 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":"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
|
|
1
|
+
{"version":3,"file":"nevermore.js","sourceRoot":"","sources":["../src/nevermore.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quenty/nevermore-cli",
|
|
3
|
-
"version": "4.16.
|
|
3
|
+
"version": "4.16.2",
|
|
4
4
|
"description": "CLI interface for Nevermore",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"Quenty"
|
|
26
26
|
],
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@quenty/cli-output-helpers": "1.5.
|
|
29
|
-
"@quenty/nevermore-cli-helpers": "1.3.
|
|
30
|
-
"@quenty/nevermore-template-helpers": "1.6.
|
|
31
|
-
"@quenty/studio-bridge": "0.2.
|
|
28
|
+
"@quenty/cli-output-helpers": "1.5.2",
|
|
29
|
+
"@quenty/nevermore-cli-helpers": "1.3.2",
|
|
30
|
+
"@quenty/nevermore-template-helpers": "1.6.2",
|
|
31
|
+
"@quenty/studio-bridge": "0.2.2",
|
|
32
32
|
"execa": "^9.6.1",
|
|
33
33
|
"find-git-root": "^1.0.4",
|
|
34
34
|
"inquirer": "^13.2.0",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"engines": {
|
|
55
55
|
"node": ">=16"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "ed3614f05895a2e2c7b31648d887510379246dba"
|
|
58
58
|
}
|
|
@@ -23,7 +23,7 @@ export class InitPackageCommand<T>
|
|
|
23
23
|
public command = 'package [package-name] [description] [package-template]';
|
|
24
24
|
public describe = 'Scaffold a new package within Nevermore';
|
|
25
25
|
|
|
26
|
-
public builder(args: Argv<T>) {
|
|
26
|
+
public builder = (args: Argv<T>) => {
|
|
27
27
|
let result = args
|
|
28
28
|
.positional('package-name', {
|
|
29
29
|
describe: 'Name of the new package folder.',
|
|
@@ -42,9 +42,9 @@ export class InitPackageCommand<T>
|
|
|
42
42
|
});
|
|
43
43
|
|
|
44
44
|
return result as any;
|
|
45
|
-
}
|
|
45
|
+
};
|
|
46
46
|
|
|
47
|
-
public async
|
|
47
|
+
public handler = async (args: InitPackageArgs) => {
|
|
48
48
|
let rawPackageName = await InitPackageCommand._ensurePackageName(args);
|
|
49
49
|
|
|
50
50
|
const packageName = TemplateHelper.camelize(rawPackageName).toLowerCase();
|
|
@@ -20,16 +20,16 @@ export class InitPluginCommand<T> implements CommandModule<T, initGameArgs> {
|
|
|
20
20
|
public command = 'plugin [plugin-name]';
|
|
21
21
|
public describe = 'Scaffold a new plugin with Nevermore dependencies';
|
|
22
22
|
|
|
23
|
-
public builder(args: Argv<T>) {
|
|
23
|
+
public builder = (args: Argv<T>) => {
|
|
24
24
|
args.positional('plugin-name', {
|
|
25
25
|
describe: 'Name of the new package folder.',
|
|
26
26
|
demandOption: false,
|
|
27
27
|
type: 'string',
|
|
28
28
|
});
|
|
29
29
|
return args as Argv<initGameArgs>;
|
|
30
|
-
}
|
|
30
|
+
};
|
|
31
31
|
|
|
32
|
-
public async
|
|
32
|
+
public handler = async (args: initGameArgs) => {
|
|
33
33
|
const rawPluginName = await InitPluginCommand._ensurePluginName(args);
|
|
34
34
|
|
|
35
35
|
const pluginName = TemplateHelper.camelize(rawPluginName).toLowerCase();
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
|
|
10
10
|
interface CiPostTestResultsArgs extends NevermoreGlobalArgs {
|
|
11
11
|
input: string;
|
|
12
|
+
runOutcome?: string;
|
|
12
13
|
}
|
|
13
14
|
|
|
14
15
|
export const ciPostTestResultsCommand: CommandModule<
|
|
@@ -19,11 +20,19 @@ export const ciPostTestResultsCommand: CommandModule<
|
|
|
19
20
|
describe:
|
|
20
21
|
'Post test results as a PR comment (requires GITHUB_TOKEN and CI context)',
|
|
21
22
|
builder: (yargs) => {
|
|
22
|
-
return yargs
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
23
|
+
return yargs
|
|
24
|
+
.positional('input', {
|
|
25
|
+
describe: 'Path to test-results.json',
|
|
26
|
+
type: 'string',
|
|
27
|
+
demandOption: true,
|
|
28
|
+
})
|
|
29
|
+
.option('run-outcome', {
|
|
30
|
+
describe:
|
|
31
|
+
'Outcome of the test step (e.g. "success", "failure"). ' +
|
|
32
|
+
'When the results file is missing and run-outcome is "success", ' +
|
|
33
|
+
'posts a neutral "no tests" comment instead of an error.',
|
|
34
|
+
type: 'string',
|
|
35
|
+
});
|
|
27
36
|
},
|
|
28
37
|
handler: async (args) => {
|
|
29
38
|
const testCommentConfig = createTestCommentConfig();
|
|
@@ -35,10 +44,19 @@ export const ciPostTestResultsCommand: CommandModule<
|
|
|
35
44
|
state = await LoadedStateTracker.fromFileAsync(args.input);
|
|
36
45
|
} catch {
|
|
37
46
|
OutputHelper.warn(`Results file not found: ${args.input}`);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
47
|
+
|
|
48
|
+
if (args.runOutcome === 'success') {
|
|
49
|
+
OutputHelper.info('Test step succeeded — posting informational comment to PR...');
|
|
50
|
+
reporter.setNoTestsRun(
|
|
51
|
+
'No changed packages with test targets were discovered for this PR.'
|
|
52
|
+
);
|
|
53
|
+
} else {
|
|
54
|
+
OutputHelper.info('Test step failed — posting failure comment to PR...');
|
|
55
|
+
reporter.setError(
|
|
56
|
+
`Results file not found: ${args.input}\nThe test run likely crashed before completing.`
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
|
|
42
60
|
await reporter.stopAsync();
|
|
43
61
|
return;
|
|
44
62
|
}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
5
|
import { Argv, CommandModule } from 'yargs';
|
|
6
|
+
import { OutputHelper } from '@quenty/cli-output-helpers';
|
|
6
7
|
import { NevermoreGlobalArgs } from '../../args/global-args.js';
|
|
7
8
|
import * as fs from 'fs/promises';
|
|
8
9
|
import * as fsSync from 'fs';
|
|
@@ -21,7 +22,7 @@ export class DownloadRobloxTypes<T>
|
|
|
21
22
|
public command = 'download-roblox-types [file-name]';
|
|
22
23
|
public describe = 'Downloads the Roblox Luau type definitions.';
|
|
23
24
|
|
|
24
|
-
public builder(args: Argv<T>) {
|
|
25
|
+
public builder = (args: Argv<T>) => {
|
|
25
26
|
args.positional('file-name', {
|
|
26
27
|
describe: 'Path to save the downloaded Roblox Luau type definitions.',
|
|
27
28
|
demandOption: false,
|
|
@@ -29,26 +30,42 @@ export class DownloadRobloxTypes<T>
|
|
|
29
30
|
default: 'globalTypes.d.lua',
|
|
30
31
|
});
|
|
31
32
|
return args as Argv<DownloadRobloxTypesArgs>;
|
|
32
|
-
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
public handler = async (args: DownloadRobloxTypesArgs) => {
|
|
36
|
+
const filename = args.fileName ?? 'globalTypes.d.lua';
|
|
33
37
|
|
|
34
|
-
public async handler(args: DownloadRobloxTypesArgs) {
|
|
35
38
|
await DownloadRobloxTypes._download(
|
|
36
|
-
|
|
39
|
+
filename,
|
|
37
40
|
'https://raw.githubusercontent.com/JohnnyMorganz/luau-lsp/main/scripts/globalTypes.d.lua'
|
|
38
41
|
);
|
|
39
|
-
}
|
|
42
|
+
};
|
|
40
43
|
|
|
41
44
|
private static async _download(filename: string, url: string): Promise<void> {
|
|
42
45
|
if (!(await DownloadRobloxTypes._needsDownload(filename))) {
|
|
46
|
+
OutputHelper.verbose(`Skipping download, ${filename} is up to date`);
|
|
43
47
|
return;
|
|
44
48
|
}
|
|
45
49
|
|
|
50
|
+
OutputHelper.verbose(`Downloading Roblox type definitions to ${filename}...`);
|
|
51
|
+
|
|
46
52
|
return new Promise((resolve, reject) => {
|
|
47
53
|
const file = fsSync.createWriteStream(filename);
|
|
48
54
|
const request = https.get(url, (response: any) => {
|
|
55
|
+
if (response.statusCode !== 200) {
|
|
56
|
+
fsSync.unlink(filename, () => {});
|
|
57
|
+
reject(
|
|
58
|
+
new Error(
|
|
59
|
+
`Failed to download ${url}: HTTP ${response.statusCode}`
|
|
60
|
+
)
|
|
61
|
+
);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
49
65
|
response.pipe(file);
|
|
50
66
|
file.on('finish', () => {
|
|
51
67
|
file.close();
|
|
68
|
+
OutputHelper.verbose(`Downloaded ${filename}`);
|
|
52
69
|
resolve();
|
|
53
70
|
});
|
|
54
71
|
});
|
package/src/nevermore.ts
CHANGED