@ducky7go/ducky-cli 0.0.1 → 0.0.3-dev.6
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/nuget/pack.d.ts.map +1 -1
- package/dist/commands/nuget/pack.js +28 -8
- package/dist/commands/nuget/pack.js.map +1 -1
- package/dist/commands/nuget/push.d.ts.map +1 -1
- package/dist/commands/nuget/push.js +32 -14
- package/dist/commands/nuget/push.js.map +1 -1
- package/dist/formats/nuget/client.d.ts +2 -1
- package/dist/formats/nuget/client.d.ts.map +1 -1
- package/dist/formats/nuget/client.js +11 -4
- package/dist/formats/nuget/client.js.map +1 -1
- package/dist/formats/nuget/nuspec.d.ts +4 -2
- package/dist/formats/nuget/nuspec.d.ts.map +1 -1
- package/dist/formats/nuget/nuspec.js +117 -32
- package/dist/formats/nuget/nuspec.js.map +1 -1
- package/dist/formats/nuget/parser.d.ts +28 -0
- package/dist/formats/nuget/parser.d.ts.map +1 -1
- package/dist/formats/nuget/parser.js +78 -2
- package/dist/formats/nuget/parser.js.map +1 -1
- package/package.json +8 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../../src/commands/nuget/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"pack.d.ts","sourceRoot":"","sources":["../../../src/commands/nuget/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SA8FzB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { resolve, join, basename } from 'path';
|
|
2
|
+
import { resolve, join, basename, relative } from 'path';
|
|
3
3
|
import { writeFile, mkdir } from 'fs/promises';
|
|
4
4
|
import { createLogger, LogLevel } from '../../utils/index.js';
|
|
5
|
-
import { parseInfoIni, generateNuspec, collectFilesForPackage, validateMod, } from '../../formats/nuget/index.js';
|
|
5
|
+
import { parseInfoIni, generateNuspec, collectFilesForPackage, validateMod, loadDescription, loadReleaseNotes, } from '../../formats/nuget/index.js';
|
|
6
6
|
import { NuGetCliManager } from '../../formats/nuget/client.js';
|
|
7
7
|
import { FileSystemError, ValidationError } from '../../utils/errors.js';
|
|
8
8
|
const logger = createLogger();
|
|
@@ -22,7 +22,10 @@ export const nugetPackCommand = new Command('pack')
|
|
|
22
22
|
logger.setLevel(LogLevel.DEBUG);
|
|
23
23
|
}
|
|
24
24
|
const modPath = resolve(path);
|
|
25
|
-
|
|
25
|
+
// Default output to project root pkg directory
|
|
26
|
+
const projectRoot = process.cwd();
|
|
27
|
+
const defaultOutputPath = join(projectRoot, 'pkg');
|
|
28
|
+
const outputPath = options.output ? resolve(options.output) : defaultOutputPath;
|
|
26
29
|
logger.header('NuGet Pack');
|
|
27
30
|
logger.info(`Mod path: ${modPath}`);
|
|
28
31
|
logger.info(`Output path: ${outputPath}`);
|
|
@@ -41,10 +44,29 @@ export const nugetPackCommand = new Command('pack')
|
|
|
41
44
|
throw new ValidationError('Mod validation failed');
|
|
42
45
|
}
|
|
43
46
|
logger.success('Validation passed');
|
|
47
|
+
// Ensure output directory exists
|
|
48
|
+
await mkdir(outputPath, { recursive: true });
|
|
49
|
+
// Load description (README)
|
|
50
|
+
logger.info('Loading description...');
|
|
51
|
+
const longDescription = await loadDescription(modPath, metadata);
|
|
52
|
+
logger.success(`Loaded description: ${longDescription.length} characters`);
|
|
53
|
+
// Write README.md to pkg directory if description was loaded
|
|
54
|
+
let readmeFilePath = '';
|
|
55
|
+
if (longDescription && longDescription.length > 0) {
|
|
56
|
+
const readmePath = join(outputPath, 'README.md');
|
|
57
|
+
await writeFile(readmePath, longDescription, 'utf-8');
|
|
58
|
+
// Compute relative path from modPath to outputPath
|
|
59
|
+
readmeFilePath = join(relative(modPath, outputPath), 'README.md');
|
|
60
|
+
logger.info('Generated README.md in pkg directory');
|
|
61
|
+
}
|
|
62
|
+
// Load release notes
|
|
63
|
+
logger.info('Loading release notes...');
|
|
64
|
+
const releaseNotes = await loadReleaseNotes(modPath, metadata);
|
|
65
|
+
logger.success(`Loaded release notes: ${releaseNotes.length} characters`);
|
|
44
66
|
// Generate .nuspec
|
|
45
67
|
logger.info('Generating .nuspec file...');
|
|
46
|
-
const nuspecContent = generateNuspec(metadata);
|
|
47
|
-
const nuspecPath = join(
|
|
68
|
+
const nuspecContent = await generateNuspec(metadata, readmeFilePath, releaseNotes);
|
|
69
|
+
const nuspecPath = join(outputPath, `${metadata.name}.nuspec`);
|
|
48
70
|
await writeFile(nuspecPath, nuspecContent, 'utf-8');
|
|
49
71
|
logger.success(`Generated: ${basename(nuspecPath)}`);
|
|
50
72
|
// Collect files
|
|
@@ -55,11 +77,9 @@ export const nugetPackCommand = new Command('pack')
|
|
|
55
77
|
recursive: true,
|
|
56
78
|
});
|
|
57
79
|
logger.success(`Found ${files.length} files`);
|
|
58
|
-
// Ensure output directory exists
|
|
59
|
-
await mkdir(outputPath, { recursive: true });
|
|
60
80
|
// Pack using NuGet CLI
|
|
61
81
|
const client = new NuGetCliManager();
|
|
62
|
-
const nupkgPath = await client.pack(nuspecPath, outputPath);
|
|
82
|
+
const nupkgPath = await client.pack(nuspecPath, outputPath, modPath);
|
|
63
83
|
logger.blank();
|
|
64
84
|
logger.success(`Package created: ${nupkgPath}`);
|
|
65
85
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../src/commands/nuget/pack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"pack.js","sourceRoot":"","sources":["../../../src/commands/nuget/pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/commands/nuget/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../../src/commands/nuget/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;;GAGG;AACH,eAAO,MAAM,gBAAgB,SAqIzB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { resolve } from 'path';
|
|
2
|
+
import { resolve, relative } from 'path';
|
|
3
3
|
import { fileExists } from '../../utils/fs.js';
|
|
4
4
|
import { createLogger, resolveConfig, getApiKey, getServerUrl, LogLevel } from '../../utils/index.js';
|
|
5
|
-
import { parseInfoIni, validateMod } from '../../formats/nuget/index.js';
|
|
5
|
+
import { parseInfoIni, generateNuspec, validateMod, loadDescription, loadReleaseNotes } from '../../formats/nuget/index.js';
|
|
6
6
|
import { NuGetCliManager } from '../../formats/nuget/client.js';
|
|
7
7
|
import { FileSystemError, ValidationError, ConfigError } from '../../utils/errors.js';
|
|
8
8
|
const logger = createLogger();
|
|
@@ -29,7 +29,11 @@ export const nugetPushCommand = new Command('push')
|
|
|
29
29
|
if (options.pack) {
|
|
30
30
|
logger.header('NuGet Push (with Pack)');
|
|
31
31
|
const modPath = resolve(path);
|
|
32
|
-
|
|
32
|
+
// Default output to project root pkg directory
|
|
33
|
+
const { join } = await import('path');
|
|
34
|
+
const projectRoot = process.cwd();
|
|
35
|
+
const defaultOutputPath = join(projectRoot, 'pkg');
|
|
36
|
+
const outputPath = options.output ? resolve(options.output) : defaultOutputPath;
|
|
33
37
|
logger.info(`Mod path: ${modPath}`);
|
|
34
38
|
logger.info(`Output path: ${outputPath}`);
|
|
35
39
|
// Parse metadata
|
|
@@ -47,20 +51,34 @@ export const nugetPushCommand = new Command('push')
|
|
|
47
51
|
throw new ValidationError('Mod validation failed');
|
|
48
52
|
}
|
|
49
53
|
logger.success('Validation passed');
|
|
50
|
-
// Generate .nuspec
|
|
51
|
-
logger.info('Generating .nuspec file...');
|
|
52
|
-
const { generateNuspec } = await import('../../formats/nuget/nuspec.js');
|
|
53
|
-
const nuspecContent = generateNuspec(metadata);
|
|
54
|
-
const { writeFile } = await import('fs/promises');
|
|
55
|
-
const { join } = await import('path');
|
|
56
|
-
const nuspecPath = join(modPath, `${metadata.name}.nuspec`);
|
|
57
|
-
await writeFile(nuspecPath, nuspecContent, 'utf-8');
|
|
58
|
-
logger.success('Generated .nuspec file');
|
|
59
54
|
// Pack using NuGet CLI
|
|
60
|
-
const { mkdir } = await import('fs/promises');
|
|
55
|
+
const { mkdir, writeFile } = await import('fs/promises');
|
|
61
56
|
await mkdir(outputPath, { recursive: true });
|
|
57
|
+
// Load description (README)
|
|
58
|
+
logger.info('Loading description...');
|
|
59
|
+
const longDescription = await loadDescription(modPath, metadata);
|
|
60
|
+
logger.success(`Loaded description: ${longDescription.length} characters`);
|
|
61
|
+
// Write README.md to pkg directory if description was loaded
|
|
62
|
+
let readmeFilePath = '';
|
|
63
|
+
if (longDescription && longDescription.length > 0) {
|
|
64
|
+
const readmePath = join(outputPath, 'README.md');
|
|
65
|
+
await writeFile(readmePath, longDescription, 'utf-8');
|
|
66
|
+
// Compute relative path from modPath to outputPath
|
|
67
|
+
readmeFilePath = join(relative(modPath, outputPath), 'README.md');
|
|
68
|
+
logger.info('Generated README.md in pkg directory');
|
|
69
|
+
}
|
|
70
|
+
// Load release notes
|
|
71
|
+
logger.info('Loading release notes...');
|
|
72
|
+
const releaseNotes = await loadReleaseNotes(modPath, metadata);
|
|
73
|
+
logger.success(`Loaded release notes: ${releaseNotes.length} characters`);
|
|
74
|
+
// Generate .nuspec from template
|
|
75
|
+
logger.info('Generating .nuspec file from template...');
|
|
76
|
+
const nuspecPath = join(outputPath, `${metadata.name}.nuspec`);
|
|
77
|
+
const nuspecContent = await generateNuspec(metadata, readmeFilePath, releaseNotes);
|
|
78
|
+
await writeFile(nuspecPath, nuspecContent, 'utf-8');
|
|
79
|
+
logger.success('Generated .nuspec file');
|
|
62
80
|
const client = new NuGetCliManager();
|
|
63
|
-
nupkgPath = await client.pack(nuspecPath, outputPath);
|
|
81
|
+
nupkgPath = await client.pack(nuspecPath, outputPath, modPath);
|
|
64
82
|
logger.success(`Package created: ${nupkgPath}`);
|
|
65
83
|
}
|
|
66
84
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/nuget/push.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/
|
|
1
|
+
{"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/commands/nuget/push.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,9 +43,10 @@ export declare class NuGetCliManager {
|
|
|
43
43
|
* T14: Pack a .nuspec file into a .nupkg package
|
|
44
44
|
* @param nuspecPath - Path to .nuspec file
|
|
45
45
|
* @param outputPath - Directory for output .nupkg file
|
|
46
|
+
* @param basePath - Base path for resolving file references (default: nuspec directory)
|
|
46
47
|
* @returns Path to created .nupkg file
|
|
47
48
|
*/
|
|
48
|
-
pack(nuspecPath: string, outputPath: string): Promise<string>;
|
|
49
|
+
pack(nuspecPath: string, outputPath: string, basePath?: string): Promise<string>;
|
|
49
50
|
/**
|
|
50
51
|
* T15: Push a .nupkg package to a NuGet server
|
|
51
52
|
* @param nupkgPath - Path to .nupkg file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/formats/nuget/client.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,UAAU,WAAW;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,MAAM,GAAE,WAAgB;IAMpC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAoBnC;;OAEG;YACW,UAAU;IAcxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;YACW,aAAa;IA8C3B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/formats/nuget/client.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,UAAU,WAAW;IACnB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAkB;gBAEtB,MAAM,GAAE,WAAgB;IAMpC;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAoBnC;;OAEG;YACW,UAAU;IAcxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAKxB;;OAEG;YACW,aAAa;IA8C3B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAwC5D;;;;;;OAMG;IACG,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqCtF;;;;;;OAMG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyB7E"}
|
|
@@ -105,12 +105,14 @@ export class NuGetCliManager {
|
|
|
105
105
|
*/
|
|
106
106
|
async execute(args, cwd) {
|
|
107
107
|
const exePath = await this.getExePath();
|
|
108
|
-
|
|
108
|
+
// On non-Windows platforms, use mono to run nuget.exe
|
|
109
|
+
const command = this.platform === 'win32' ? exePath : 'mono';
|
|
110
|
+
const commandArgs = this.platform === 'win32' ? args : [exePath, ...args];
|
|
111
|
+
logger.debug(`Executing: ${command} ${commandArgs.join(' ')}`);
|
|
109
112
|
return new Promise((resolve, reject) => {
|
|
110
|
-
const child = spawn(
|
|
113
|
+
const child = spawn(command, commandArgs, {
|
|
111
114
|
cwd,
|
|
112
115
|
stdio: ['inherit', 'pipe', 'pipe'],
|
|
113
|
-
shell: true,
|
|
114
116
|
});
|
|
115
117
|
let stdout = '';
|
|
116
118
|
let stderr = '';
|
|
@@ -137,12 +139,17 @@ export class NuGetCliManager {
|
|
|
137
139
|
* T14: Pack a .nuspec file into a .nupkg package
|
|
138
140
|
* @param nuspecPath - Path to .nuspec file
|
|
139
141
|
* @param outputPath - Directory for output .nupkg file
|
|
142
|
+
* @param basePath - Base path for resolving file references (default: nuspec directory)
|
|
140
143
|
* @returns Path to created .nupkg file
|
|
141
144
|
*/
|
|
142
|
-
async pack(nuspecPath, outputPath) {
|
|
145
|
+
async pack(nuspecPath, outputPath, basePath) {
|
|
143
146
|
logger.info(`Creating NuGet package from ${nuspecPath}...`);
|
|
144
147
|
const outputDir = resolve(outputPath);
|
|
145
148
|
const args = ['pack', nuspecPath, '-OutputDirectory', outputDir, '-NoDefaultExcludes'];
|
|
149
|
+
// Add -BasePath if specified (resolves file paths relative to this directory)
|
|
150
|
+
if (basePath) {
|
|
151
|
+
args.push('-BasePath', resolve(basePath));
|
|
152
|
+
}
|
|
146
153
|
try {
|
|
147
154
|
const stdout = await this.execute(args);
|
|
148
155
|
// Extract .nupkg path from output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/formats/nuget/client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/formats/nuget/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAa,KAAK,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAU,MAAM,IAAI,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAc9B;;;GAGG;AACH,MAAM,OAAO,eAAe;IAClB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,QAAQ,CAAkB;IAElC,YAAY,SAAsB,EAAE;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,QAAQ,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,UAAU;QACd,mCAAmC;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;YAClD,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,cAAc;QACd,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,MAAM,CAAC,KAAK,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;YACjD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oBAAoB;QACpB,MAAM,CAAC,IAAI,CAAC,kDAAkD,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC;QACjF,OAAO,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,UAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC;YAC9E,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC9B,IAAI,KAAK,EAAE,CAAC;oBACV,OAAO,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;qBAAM,CAAC;oBACN,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1C,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,aAAa;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExC,gCAAgC;QAChC,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,6DAA6D;QAC7D,0EAA0E;QAC1E,MAAM,QAAQ,GAAG,6DAA6D,CAAC;QAE/E,MAAM,CAAC,IAAI,CAAC,0BAA0B,QAAQ,KAAK,CAAC,CAAC;QAErD,0DAA0D;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,YAAY,GAChB,IAAI,CAAC,QAAQ,KAAK,OAAO;YACvB,CAAC,CAAC;gBACE,UAAU;gBACV,2BAA2B,QAAQ,eAAe,OAAO,GAAG;aAC7D;YACH,CAAC,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAErE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,MAAM,CAAC,OAAO,CAAC,uBAAuB,OAAO,EAAE,CAAC,CAAC;oBAEjD,uCAAuC;oBACvC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;wBAC9B,MAAM,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC9B,CAAC;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;gBACnB,CAAC;qBAAM,CAAC;oBACN,MAAM,CACJ,IAAI,KAAK,CACP,uCAAuC,IAAI,oGAAoG,CAChJ,CACF,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAc,EAAE,GAAY;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExC,sDAAsD;QACtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;QAE1E,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAE/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,WAAW,EAAE;gBACxC,GAAG;gBACH,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;aACnC,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,KAAK,CAAC,mCAAmC,IAAI,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1B,MAAM,CAAC,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,UAAkB,EAAE,UAAkB,EAAE,QAAiB;QAClE,MAAM,CAAC,IAAI,CAAC,+BAA+B,UAAU,KAAK,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAEvF,8EAA8E;QAC9E,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExC,kCAAkC;YAClC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YAC9C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC7C,MAAM,CAAC,OAAO,CAAC,oBAAoB,SAAS,EAAE,CAAC,CAAC;gBAChD,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,oCAAoC;YACpC,MAAM,IAAI,UAAU,CAAC,wDAAwD,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,UAAU,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,EAAE;oBACvE,sCAAsC;oBACtC,mCAAmC;oBACnC,qCAAqC;iBACtC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,SAAiB,EAAE,MAAc,EAAE,MAAc;QAC1D,MAAM,CAAC,IAAI,CAAC,WAAW,SAAS,OAAO,MAAM,KAAK,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEvE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAExC,IAAI,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,UAAU,CAAC,2BAA2B,KAAK,CAAC,OAAO,EAAE,EAAE;oBAC/D,+BAA+B;oBAC/B,kCAAkC;oBAClC,iEAAiE;oBACjE,qCAAqC;iBACtC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { ModMetadata } from './parser.js';
|
|
2
2
|
/**
|
|
3
|
-
* Generate .nuspec XML content from mod metadata
|
|
3
|
+
* Generate .nuspec XML content from mod metadata using template
|
|
4
4
|
* Based on NuGet Mod Packaging Specification v1.0
|
|
5
5
|
*
|
|
6
6
|
* @param metadata - Parsed mod metadata
|
|
7
|
+
* @param readmeFilePath - Relative path from mod dir to README.md (e.g., "../pkg/README.md")
|
|
8
|
+
* @param releaseNotes - Optional release notes content
|
|
7
9
|
* @returns .nuspec XML content
|
|
8
10
|
*/
|
|
9
|
-
export declare function generateNuspec(metadata: ModMetadata): string
|
|
11
|
+
export declare function generateNuspec(metadata: ModMetadata, readmeFilePath?: string, releaseNotes?: string): Promise<string>;
|
|
10
12
|
//# sourceMappingURL=nuspec.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nuspec.d.ts","sourceRoot":"","sources":["../../../src/formats/nuget/nuspec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"nuspec.d.ts","sourceRoot":"","sources":["../../../src/formats/nuget/nuspec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAgC/C;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,WAAW,EACrB,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAmEjB"}
|
|
@@ -1,49 +1,134 @@
|
|
|
1
|
+
// Inline template following NuGet Mod Packaging Specification v1.0
|
|
2
|
+
const NUSPEC_TEMPLATE = `<?xml version="1.0" encoding="utf-8"?>
|
|
3
|
+
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
|
|
4
|
+
<metadata>
|
|
5
|
+
<id>{{NAME}}</id>
|
|
6
|
+
<version>{{VERSION}}</version>
|
|
7
|
+
<title>{{TITLE}}</title>
|
|
8
|
+
<authors>{{AUTHOR}}</authors>
|
|
9
|
+
<description>{{DESCRIPTION}}</description>
|
|
10
|
+
<tags>{{TAGS}}</tags>
|
|
11
|
+
<icon>icon.png</icon>
|
|
12
|
+
{{PROJECT_URL_BLOCK}}
|
|
13
|
+
{{LICENSE_BLOCK}}
|
|
14
|
+
{{COPYRIGHT_BLOCK}}
|
|
15
|
+
{{DEPENDENCIES}}
|
|
16
|
+
{{README_BLOCK}}
|
|
17
|
+
{{RELEASE_NOTES_BLOCK}}
|
|
18
|
+
</metadata>
|
|
19
|
+
<files>
|
|
20
|
+
<!-- Icon to package root (for NuGet gallery display) -->
|
|
21
|
+
<file src="preview.png" target="icon.png" />
|
|
22
|
+
<!-- Icon also in content/ (preserves original mod structure) -->
|
|
23
|
+
<file src="preview.png" target="content/preview.png" />
|
|
24
|
+
<!-- README.md to docs/ (for NuGet gallery display) -->
|
|
25
|
+
{{README_FILE}}
|
|
26
|
+
<!-- ALL other mod files to content/ -->
|
|
27
|
+
<file src="**" target="content/" exclude="preview.png;README.md;*.nupkg;*.nuspec" />
|
|
28
|
+
</files>
|
|
29
|
+
</package>`;
|
|
1
30
|
/**
|
|
2
|
-
* Generate .nuspec XML content from mod metadata
|
|
31
|
+
* Generate .nuspec XML content from mod metadata using template
|
|
3
32
|
* Based on NuGet Mod Packaging Specification v1.0
|
|
4
33
|
*
|
|
5
34
|
* @param metadata - Parsed mod metadata
|
|
35
|
+
* @param readmeFilePath - Relative path from mod dir to README.md (e.g., "../pkg/README.md")
|
|
36
|
+
* @param releaseNotes - Optional release notes content
|
|
6
37
|
* @returns .nuspec XML content
|
|
7
38
|
*/
|
|
8
|
-
export function generateNuspec(metadata) {
|
|
9
|
-
|
|
39
|
+
export async function generateNuspec(metadata, readmeFilePath, releaseNotes) {
|
|
40
|
+
let template = NUSPEC_TEMPLATE;
|
|
41
|
+
// Default tags (per spec: duckymod game-mod)
|
|
42
|
+
const defaultTags = 'duckymod game-mod';
|
|
43
|
+
const tags = metadata.tags?.length ? metadata.tags.join(' ') + ' ' + defaultTags : defaultTags;
|
|
44
|
+
// Title: use displayName, fallback to name
|
|
45
|
+
const title = metadata.displayName || metadata.name;
|
|
46
|
+
// Format dependencies
|
|
10
47
|
const dependencies = formatDependencies(metadata.dependencies);
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
48
|
+
// Handle optional blocks
|
|
49
|
+
let projectUrlBlock = '';
|
|
50
|
+
if (metadata.projectUrl) {
|
|
51
|
+
projectUrlBlock = `<projectUrl>${escapeXml(metadata.projectUrl)}</projectUrl>`;
|
|
52
|
+
}
|
|
53
|
+
let licenseBlock = '';
|
|
54
|
+
if (metadata.license) {
|
|
55
|
+
licenseBlock = `<license type="expression">${escapeXml(metadata.license)}</license>`;
|
|
56
|
+
}
|
|
57
|
+
let copyrightBlock = '';
|
|
58
|
+
if (metadata.copyright) {
|
|
59
|
+
copyrightBlock = `<copyright>${escapeXml(metadata.copyright)}</copyright>`;
|
|
60
|
+
}
|
|
61
|
+
// Description: use metadata.description for short description
|
|
62
|
+
const description = metadata.description || '';
|
|
63
|
+
// README: add <readme> block if readmeFilePath is provided
|
|
64
|
+
let readmeBlock = '';
|
|
65
|
+
let readmeFile = '';
|
|
66
|
+
if (readmeFilePath) {
|
|
67
|
+
readmeBlock = `<readme>docs/README.md</readme>`;
|
|
68
|
+
readmeFile = `<file src="${escapeXml(readmeFilePath)}" target="docs/" />`;
|
|
69
|
+
}
|
|
70
|
+
// Release notes: add <releaseNotes> block if provided
|
|
71
|
+
let releaseNotesBlock = '';
|
|
72
|
+
if (releaseNotes && releaseNotes.length > 0) {
|
|
73
|
+
// Use CDATA for multi-line content
|
|
74
|
+
if (releaseNotes.includes('\n') || releaseNotes.length > 400) {
|
|
75
|
+
releaseNotesBlock = `<releaseNotes><![CDATA[${releaseNotes}]]></releaseNotes>`;
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
releaseNotesBlock = `<releaseNotes>${escapeXml(releaseNotes)}</releaseNotes>`;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
// Replace placeholders
|
|
82
|
+
template = template.replace(/\{\{NAME\}\}/g, escapeXml(metadata.name));
|
|
83
|
+
template = template.replace(/\{\{VERSION\}\}/g, escapeXml(metadata.version));
|
|
84
|
+
template = template.replace(/\{\{TITLE\}\}/g, escapeXml(title));
|
|
85
|
+
template = template.replace(/\{\{AUTHOR\}\}/g, escapeXml(metadata.author || 'Unknown'));
|
|
86
|
+
template = template.replace(/\{\{DESCRIPTION\}\}/g, formatDescription(description));
|
|
87
|
+
template = template.replace(/\{\{TAGS\}\}/g, escapeXml(tags));
|
|
88
|
+
template = template.replace(/\{\{PROJECT_URL_BLOCK\}\}/g, projectUrlBlock);
|
|
89
|
+
template = template.replace(/\{\{LICENSE_BLOCK\}\}/g, licenseBlock);
|
|
90
|
+
template = template.replace(/\{\{COPYRIGHT_BLOCK\}\}/g, copyrightBlock);
|
|
91
|
+
template = template.replace(/\{\{DEPENDENCIES\}\}/g, dependencies);
|
|
92
|
+
template = template.replace(/\{\{README_BLOCK\}\}/g, readmeBlock);
|
|
93
|
+
template = template.replace(/\{\{README_FILE\}\}/g, readmeFile);
|
|
94
|
+
template = template.replace(/\{\{RELEASE_NOTES_BLOCK\}\}/g, releaseNotesBlock);
|
|
95
|
+
return template;
|
|
27
96
|
}
|
|
28
97
|
/**
|
|
29
98
|
* Format dependencies as NuGet dependency groups
|
|
99
|
+
* Always declares .NETStandard2.1 framework support
|
|
30
100
|
*/
|
|
31
101
|
function formatDependencies(dependencies) {
|
|
32
|
-
|
|
33
|
-
|
|
102
|
+
// Build mod dependency items
|
|
103
|
+
let depItems = '';
|
|
104
|
+
if (dependencies && dependencies.length > 0) {
|
|
105
|
+
const items = dependencies
|
|
106
|
+
.map((dep) => {
|
|
107
|
+
const [id, version] = dep.split(':');
|
|
108
|
+
if (version) {
|
|
109
|
+
return ` <dependency id="${escapeXml(id)}" version="${escapeXml(version)}" />`;
|
|
110
|
+
}
|
|
111
|
+
return ` <dependency id="${escapeXml(dep)}" />`;
|
|
112
|
+
})
|
|
113
|
+
.join('\n');
|
|
114
|
+
depItems = '\n' + items;
|
|
34
115
|
}
|
|
35
|
-
|
|
36
|
-
.map((dep) => {
|
|
37
|
-
const [id, version] = dep.split(':');
|
|
38
|
-
if (version) {
|
|
39
|
-
return `<dependency id="${escapeXml(id)}" version="${escapeXml(version)}" />`;
|
|
40
|
-
}
|
|
41
|
-
return `<dependency id="${escapeXml(dep)}" />`;
|
|
42
|
-
})
|
|
43
|
-
.join('\n ');
|
|
116
|
+
// Always declare .NETStandard2.1 framework support
|
|
44
117
|
return `<dependencies>
|
|
45
|
-
|
|
46
|
-
|
|
118
|
+
<group targetFramework=".NETStandard2.1">${depItems}
|
|
119
|
+
</group>
|
|
120
|
+
</dependencies>`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Format description for nuspec
|
|
124
|
+
* Uses CDATA for multi-line or long content (e.g., markdown README)
|
|
125
|
+
*/
|
|
126
|
+
function formatDescription(description) {
|
|
127
|
+
// Use CDATA for multi-line content or markdown
|
|
128
|
+
if (description.includes('\n') || description.length > 400) {
|
|
129
|
+
return `<![CDATA[${description}]]>`;
|
|
130
|
+
}
|
|
131
|
+
return escapeXml(description);
|
|
47
132
|
}
|
|
48
133
|
/**
|
|
49
134
|
* Escape special XML characters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nuspec.js","sourceRoot":"","sources":["../../../src/formats/nuget/nuspec.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"nuspec.js","sourceRoot":"","sources":["../../../src/formats/nuget/nuspec.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export interface ModMetadata {
|
|
5
5
|
name: string;
|
|
6
|
+
displayName?: string;
|
|
6
7
|
version: string;
|
|
7
8
|
description?: string;
|
|
9
|
+
readme?: string;
|
|
10
|
+
releaseNotes?: string;
|
|
8
11
|
author?: string;
|
|
9
12
|
icon?: string;
|
|
10
13
|
tags?: string[];
|
|
@@ -12,6 +15,7 @@ export interface ModMetadata {
|
|
|
12
15
|
projectUrl?: string;
|
|
13
16
|
license?: string;
|
|
14
17
|
copyright?: string;
|
|
18
|
+
publishedFileId?: string;
|
|
15
19
|
}
|
|
16
20
|
/**
|
|
17
21
|
* Parse info.ini file from a mod directory
|
|
@@ -28,4 +32,28 @@ export declare function parseInfoIni(modPath: string): Promise<ModMetadata>;
|
|
|
28
32
|
* @throws {ValidationError} If required fields are missing or invalid
|
|
29
33
|
*/
|
|
30
34
|
export declare function parseInfoIniContent(content: string): ModMetadata;
|
|
35
|
+
/**
|
|
36
|
+
* Load description with precedence order:
|
|
37
|
+
* 1. readme file (if info.ini readme is a file path that exists)
|
|
38
|
+
* 2. readme content (if info.ini readme is not a file but has content)
|
|
39
|
+
* 3. description/zh.md
|
|
40
|
+
* 4. description/en.md
|
|
41
|
+
* 5. info.ini description field
|
|
42
|
+
*
|
|
43
|
+
* @param modPath - Path to the mod directory
|
|
44
|
+
* @param metadata - Parsed mod metadata
|
|
45
|
+
* @returns Description content
|
|
46
|
+
*/
|
|
47
|
+
export declare function loadDescription(modPath: string, metadata: ModMetadata): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* Load release notes with precedence order:
|
|
50
|
+
* 1. releaseNotes file (if info.ini releaseNotes is a file path that exists)
|
|
51
|
+
* 2. releaseNotes content (if info.ini releaseNotes is not a file but has content)
|
|
52
|
+
* 3. releaseNotes.md file in mod directory
|
|
53
|
+
*
|
|
54
|
+
* @param modPath - Path to the mod directory
|
|
55
|
+
* @param metadata - Parsed mod metadata
|
|
56
|
+
* @returns Release notes content
|
|
57
|
+
*/
|
|
58
|
+
export declare function loadReleaseNotes(modPath: string, metadata: ModMetadata): Promise<string>;
|
|
31
59
|
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/formats/nuget/parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/formats/nuget/parser.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAkBxE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAkEhE;AA4ED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAkCjB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,MAAM,CAAC,CAuBjB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { readTextFile } from '../../utils/fs.js';
|
|
1
|
+
import { readTextFile, fileExists } from '../../utils/fs.js';
|
|
2
2
|
import { FileSystemError, ValidationError } from '../../utils/errors.js';
|
|
3
|
+
import { join } from 'path';
|
|
3
4
|
/**
|
|
4
5
|
* Parse info.ini file from a mod directory
|
|
5
6
|
* @param modPath - Path to the mod directory
|
|
@@ -63,15 +64,19 @@ export function parseInfoIniContent(content) {
|
|
|
63
64
|
}
|
|
64
65
|
return {
|
|
65
66
|
name,
|
|
67
|
+
displayName: metadata.displayName?.trim(),
|
|
66
68
|
version,
|
|
67
69
|
description: metadata.description?.trim(),
|
|
70
|
+
readme: metadata.readme?.trim(),
|
|
71
|
+
releaseNotes: metadata.releaseNotes?.trim(),
|
|
68
72
|
author: metadata.author?.trim(),
|
|
69
73
|
icon: metadata.icon?.trim(),
|
|
70
74
|
tags: parseList(metadata.tags),
|
|
71
75
|
dependencies: parseList(metadata.dependencies),
|
|
72
|
-
projectUrl: metadata.projectUrl?.trim(),
|
|
76
|
+
projectUrl: metadata.projectUrl?.trim() || metadata.homepage?.trim(),
|
|
73
77
|
license: metadata.license?.trim(),
|
|
74
78
|
copyright: metadata.copyright?.trim(),
|
|
79
|
+
publishedFileId: metadata.publishedFileId?.trim(),
|
|
75
80
|
};
|
|
76
81
|
}
|
|
77
82
|
/**
|
|
@@ -137,4 +142,75 @@ function isValidSemVer(version) {
|
|
|
137
142
|
const semverPattern = /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/;
|
|
138
143
|
return semverPattern.test(version);
|
|
139
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Load description with precedence order:
|
|
147
|
+
* 1. readme file (if info.ini readme is a file path that exists)
|
|
148
|
+
* 2. readme content (if info.ini readme is not a file but has content)
|
|
149
|
+
* 3. description/zh.md
|
|
150
|
+
* 4. description/en.md
|
|
151
|
+
* 5. info.ini description field
|
|
152
|
+
*
|
|
153
|
+
* @param modPath - Path to the mod directory
|
|
154
|
+
* @param metadata - Parsed mod metadata
|
|
155
|
+
* @returns Description content
|
|
156
|
+
*/
|
|
157
|
+
export async function loadDescription(modPath, metadata) {
|
|
158
|
+
// 1. Try readme file if specified (highest priority)
|
|
159
|
+
if (metadata.readme) {
|
|
160
|
+
const readmePath = join(modPath, metadata.readme);
|
|
161
|
+
if (await fileExists(readmePath)) {
|
|
162
|
+
return await readTextFile(readmePath);
|
|
163
|
+
}
|
|
164
|
+
// 2. If readme is not a file but has content, use it directly
|
|
165
|
+
if (metadata.readme.trim().length > 0) {
|
|
166
|
+
return metadata.readme;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// 3. Try description/zh.md
|
|
170
|
+
const zhMdPath = join(modPath, 'description', 'zh.md');
|
|
171
|
+
if (await fileExists(zhMdPath)) {
|
|
172
|
+
return await readTextFile(zhMdPath);
|
|
173
|
+
}
|
|
174
|
+
// 4. Try description/en.md
|
|
175
|
+
const enMdPath = join(modPath, 'description', 'en.md');
|
|
176
|
+
if (await fileExists(enMdPath)) {
|
|
177
|
+
return await readTextFile(enMdPath);
|
|
178
|
+
}
|
|
179
|
+
// 5. Use info.ini description field (fallback)
|
|
180
|
+
if (metadata.description) {
|
|
181
|
+
return metadata.description;
|
|
182
|
+
}
|
|
183
|
+
// Final fallback: return empty string
|
|
184
|
+
return '';
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Load release notes with precedence order:
|
|
188
|
+
* 1. releaseNotes file (if info.ini releaseNotes is a file path that exists)
|
|
189
|
+
* 2. releaseNotes content (if info.ini releaseNotes is not a file but has content)
|
|
190
|
+
* 3. releaseNotes.md file in mod directory
|
|
191
|
+
*
|
|
192
|
+
* @param modPath - Path to the mod directory
|
|
193
|
+
* @param metadata - Parsed mod metadata
|
|
194
|
+
* @returns Release notes content
|
|
195
|
+
*/
|
|
196
|
+
export async function loadReleaseNotes(modPath, metadata) {
|
|
197
|
+
// 1. Try releaseNotes file if specified (highest priority)
|
|
198
|
+
if (metadata.releaseNotes) {
|
|
199
|
+
const releaseNotesPath = join(modPath, metadata.releaseNotes);
|
|
200
|
+
if (await fileExists(releaseNotesPath)) {
|
|
201
|
+
return await readTextFile(releaseNotesPath);
|
|
202
|
+
}
|
|
203
|
+
// 2. If releaseNotes is not a file but has content, use it directly
|
|
204
|
+
if (metadata.releaseNotes.trim().length > 0) {
|
|
205
|
+
return metadata.releaseNotes;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
// 3. Try releaseNotes.md file
|
|
209
|
+
const releaseNotesMdPath = join(modPath, 'releaseNotes.md');
|
|
210
|
+
if (await fileExists(releaseNotesMdPath)) {
|
|
211
|
+
return await readTextFile(releaseNotesMdPath);
|
|
212
|
+
}
|
|
213
|
+
// Final fallback: return empty string
|
|
214
|
+
return '';
|
|
215
|
+
}
|
|
140
216
|
//# sourceMappingURL=parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/formats/nuget/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/formats/nuget/parser.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ducky7go/ducky-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3-dev.6",
|
|
4
4
|
"description": "CLI tool for packaging and publishing game mods to NuGet",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
"scripts": {
|
|
20
20
|
"build": "tsc",
|
|
21
21
|
"dev": "tsx src/cli.ts",
|
|
22
|
-
"test": "vitest",
|
|
22
|
+
"test": "vitest --run",
|
|
23
|
+
"test:watch": "vitest",
|
|
24
|
+
"test:coverage": "vitest --run --coverage",
|
|
23
25
|
"lint": "eslint src",
|
|
24
26
|
"format": "prettier --write src",
|
|
25
27
|
"prepublishOnly": "npm run build && npm test"
|
|
@@ -44,6 +46,7 @@
|
|
|
44
46
|
"devDependencies": {
|
|
45
47
|
"@eslint/js": "^9.39.2",
|
|
46
48
|
"@types/node": "^25.0.3",
|
|
49
|
+
"@vitest/coverage-v8": "^2.1.9",
|
|
47
50
|
"eslint": "^9.0.0",
|
|
48
51
|
"prettier": "^3.0.0",
|
|
49
52
|
"tsx": "^4.21.0",
|
|
@@ -59,7 +62,7 @@
|
|
|
59
62
|
"ini": "^4.1.0",
|
|
60
63
|
"ora": "^8.0.0"
|
|
61
64
|
},
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
"publishConfig": {
|
|
66
|
+
"access": "public"
|
|
67
|
+
}
|
|
65
68
|
}
|