@donut-games/create-game 0.1.0 → 0.1.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/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -69,14 +69,15 @@ async function main() {
|
|
|
69
69
|
return;
|
|
70
70
|
}
|
|
71
71
|
const parsedArguments = parseCommandLineArguments(rawArguments);
|
|
72
|
-
resolveTemplateDirectory();
|
|
72
|
+
const templateDirectory = resolveTemplateDirectory();
|
|
73
73
|
const absoluteTargetDirectory = path.resolve(parsedArguments.targetDirectory);
|
|
74
74
|
const projectName = path.basename(absoluteTargetDirectory);
|
|
75
75
|
await initializeProject({
|
|
76
76
|
projectName,
|
|
77
77
|
rendererTarget: parsedArguments.rendererTarget,
|
|
78
78
|
targetDirectory: absoluteTargetDirectory,
|
|
79
|
-
skipInstall: parsedArguments.skipInstall
|
|
79
|
+
skipInstall: parsedArguments.skipInstall,
|
|
80
|
+
templateDirectory
|
|
80
81
|
});
|
|
81
82
|
}
|
|
82
83
|
main().catch((error) => {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { existsSync } from 'node:fs';\nimport { initializeProject, type RendererTarget } from '@donut-games/cli';\n\n/**\n * Print CLI usage to stdout.\n */\nfunction printUsage(): void {\n const usage = [\n 'Usage: npx @donut-games/create-game <targetDirectory> [--2d|--3d] [--skip-install]',\n '',\n 'Options:',\n ' --2d Scaffold a Pixi 2D game (default).',\n ' --3d Scaffold a Three.js 3D game.',\n ' --skip-install Do not run the post-scaffold dependency install.',\n ' --help, -h Show this message.',\n ].join('\\n');\n console.log(usage);\n}\n\n/**\n * Resolve the `template/` directory that ships alongside this package.\n *\n * Shipped layout places `template/` next to `dist/` in the tarball, so the\n * first candidate works in production. The fallback targets the source-tree\n * layout used when the file is invoked directly out of `src/` during local\n * development (rare, but keeps dev ergonomics predictable).\n */\nfunction resolveTemplateDirectory(): string {\n const shippedCandidate = fileURLToPath(new URL('../template', import.meta.url));\n if (existsSync(shippedCandidate)) {\n return shippedCandidate;\n }\n const devCandidate = fileURLToPath(new URL('../../template', import.meta.url));\n if (existsSync(devCandidate)) {\n return devCandidate;\n }\n throw new Error(\n `Unable to locate the create-game template directory. Checked:\\n ${shippedCandidate}\\n ${devCandidate}`,\n );\n}\n\n/**\n * Minimal argv parser. Keeps the package dependency-free.\n */\nfunction parseCommandLineArguments(rawArguments: readonly string[]): {\n readonly targetDirectory: string;\n readonly rendererTarget: RendererTarget;\n readonly skipInstall: boolean;\n} {\n let rendererTarget: RendererTarget = 'pixi-2d';\n let skipInstall = false;\n const positionalArguments: string[] = [];\n\n for (const argument of rawArguments) {\n if (argument === '--2d') {\n rendererTarget = 'pixi-2d';\n continue;\n }\n if (argument === '--3d') {\n rendererTarget = 'three-3d';\n continue;\n }\n if (argument === '--skip-install') {\n skipInstall = true;\n continue;\n }\n if (argument.startsWith('--')) {\n throw new Error(`Unknown option: ${argument}`);\n }\n positionalArguments.push(argument);\n }\n\n if (positionalArguments.length === 0) {\n throw new Error('Missing <targetDirectory> argument.');\n }\n if (positionalArguments.length > 1) {\n throw new Error(`Unexpected extra arguments: ${positionalArguments.slice(1).join(' ')}`);\n }\n\n return { targetDirectory: positionalArguments[0], rendererTarget, skipInstall };\n}\n\n/**\n * Entry point. Parses argv, resolves the template directory, and delegates to\n * `initializeProject` from `@donut-games/cli`.\n */\nasync function main(): Promise<void> {\n const rawArguments = process.argv.slice(2);\n if (rawArguments.includes('--help') || rawArguments.includes('-h') || rawArguments.length === 0) {\n printUsage();\n return;\n }\n\n const parsedArguments = parseCommandLineArguments(rawArguments);\n
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import path from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport { existsSync } from 'node:fs';\nimport { initializeProject, type RendererTarget } from '@donut-games/cli';\n\n/**\n * Print CLI usage to stdout.\n */\nfunction printUsage(): void {\n const usage = [\n 'Usage: npx @donut-games/create-game <targetDirectory> [--2d|--3d] [--skip-install]',\n '',\n 'Options:',\n ' --2d Scaffold a Pixi 2D game (default).',\n ' --3d Scaffold a Three.js 3D game.',\n ' --skip-install Do not run the post-scaffold dependency install.',\n ' --help, -h Show this message.',\n ].join('\\n');\n console.log(usage);\n}\n\n/**\n * Resolve the `template/` directory that ships alongside this package.\n *\n * Shipped layout places `template/` next to `dist/` in the tarball, so the\n * first candidate works in production. The fallback targets the source-tree\n * layout used when the file is invoked directly out of `src/` during local\n * development (rare, but keeps dev ergonomics predictable).\n */\nfunction resolveTemplateDirectory(): string {\n const shippedCandidate = fileURLToPath(new URL('../template', import.meta.url));\n if (existsSync(shippedCandidate)) {\n return shippedCandidate;\n }\n const devCandidate = fileURLToPath(new URL('../../template', import.meta.url));\n if (existsSync(devCandidate)) {\n return devCandidate;\n }\n throw new Error(\n `Unable to locate the create-game template directory. Checked:\\n ${shippedCandidate}\\n ${devCandidate}`,\n );\n}\n\n/**\n * Minimal argv parser. Keeps the package dependency-free.\n */\nfunction parseCommandLineArguments(rawArguments: readonly string[]): {\n readonly targetDirectory: string;\n readonly rendererTarget: RendererTarget;\n readonly skipInstall: boolean;\n} {\n let rendererTarget: RendererTarget = 'pixi-2d';\n let skipInstall = false;\n const positionalArguments: string[] = [];\n\n for (const argument of rawArguments) {\n if (argument === '--2d') {\n rendererTarget = 'pixi-2d';\n continue;\n }\n if (argument === '--3d') {\n rendererTarget = 'three-3d';\n continue;\n }\n if (argument === '--skip-install') {\n skipInstall = true;\n continue;\n }\n if (argument.startsWith('--')) {\n throw new Error(`Unknown option: ${argument}`);\n }\n positionalArguments.push(argument);\n }\n\n if (positionalArguments.length === 0) {\n throw new Error('Missing <targetDirectory> argument.');\n }\n if (positionalArguments.length > 1) {\n throw new Error(`Unexpected extra arguments: ${positionalArguments.slice(1).join(' ')}`);\n }\n\n return { targetDirectory: positionalArguments[0], rendererTarget, skipInstall };\n}\n\n/**\n * Entry point. Parses argv, resolves the template directory, and delegates to\n * `initializeProject` from `@donut-games/cli`.\n */\nasync function main(): Promise<void> {\n const rawArguments = process.argv.slice(2);\n if (rawArguments.includes('--help') || rawArguments.includes('-h') || rawArguments.length === 0) {\n printUsage();\n return;\n }\n\n const parsedArguments = parseCommandLineArguments(rawArguments);\n const templateDirectory = resolveTemplateDirectory();\n\n const absoluteTargetDirectory = path.resolve(parsedArguments.targetDirectory);\n const projectName = path.basename(absoluteTargetDirectory);\n\n await initializeProject({\n projectName,\n rendererTarget: parsedArguments.rendererTarget,\n targetDirectory: absoluteTargetDirectory,\n skipInstall: parsedArguments.skipInstall,\n templateDirectory,\n });\n}\n\nmain().catch((error: unknown) => {\n const message = error instanceof Error ? error.message : String(error);\n console.error(`create-game: ${message}`);\n process.exit(1);\n});\n"],"mappings":";;;AAAA,OAAO,UAAU;AACjB,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,yBAA8C;AAKvD,SAAS,aAAmB;AAC1B,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACX,UAAQ,IAAI,KAAK;AACnB;AAUA,SAAS,2BAAmC;AAC1C,QAAM,mBAAmB,cAAc,IAAI,IAAI,eAAe,YAAY,GAAG,CAAC;AAC9E,MAAI,WAAW,gBAAgB,GAAG;AAChC,WAAO;AAAA,EACT;AACA,QAAM,eAAe,cAAc,IAAI,IAAI,kBAAkB,YAAY,GAAG,CAAC;AAC7E,MAAI,WAAW,YAAY,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,QAAM,IAAI;AAAA,IACR;AAAA,IAAoE,gBAAgB;AAAA,IAAO,YAAY;AAAA,EACzG;AACF;AAKA,SAAS,0BAA0B,cAIjC;AACA,MAAI,iBAAiC;AACrC,MAAI,cAAc;AAClB,QAAM,sBAAgC,CAAC;AAEvC,aAAW,YAAY,cAAc;AACnC,QAAI,aAAa,QAAQ;AACvB,uBAAiB;AACjB;AAAA,IACF;AACA,QAAI,aAAa,QAAQ;AACvB,uBAAiB;AACjB;AAAA,IACF;AACA,QAAI,aAAa,kBAAkB;AACjC,oBAAc;AACd;AAAA,IACF;AACA,QAAI,SAAS,WAAW,IAAI,GAAG;AAC7B,YAAM,IAAI,MAAM,mBAAmB,QAAQ,EAAE;AAAA,IAC/C;AACA,wBAAoB,KAAK,QAAQ;AAAA,EACnC;AAEA,MAAI,oBAAoB,WAAW,GAAG;AACpC,UAAM,IAAI,MAAM,qCAAqC;AAAA,EACvD;AACA,MAAI,oBAAoB,SAAS,GAAG;AAClC,UAAM,IAAI,MAAM,+BAA+B,oBAAoB,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE;AAAA,EACzF;AAEA,SAAO,EAAE,iBAAiB,oBAAoB,CAAC,GAAG,gBAAgB,YAAY;AAChF;AAMA,eAAe,OAAsB;AACnC,QAAM,eAAe,QAAQ,KAAK,MAAM,CAAC;AACzC,MAAI,aAAa,SAAS,QAAQ,KAAK,aAAa,SAAS,IAAI,KAAK,aAAa,WAAW,GAAG;AAC/F,eAAW;AACX;AAAA,EACF;AAEA,QAAM,kBAAkB,0BAA0B,YAAY;AAC9D,QAAM,oBAAoB,yBAAyB;AAEnD,QAAM,0BAA0B,KAAK,QAAQ,gBAAgB,eAAe;AAC5E,QAAM,cAAc,KAAK,SAAS,uBAAuB;AAEzD,QAAM,kBAAkB;AAAA,IACtB;AAAA,IACA,gBAAgB,gBAAgB;AAAA,IAChC,iBAAiB;AAAA,IACjB,aAAa,gBAAgB;AAAA,IAC7B;AAAA,EACF,CAAC;AACH;AAEA,KAAK,EAAE,MAAM,CAAC,UAAmB;AAC/B,QAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AACrE,UAAQ,MAAM,gBAAgB,OAAO,EAAE;AACvC,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@donut-games/create-game",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"README.md"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@donut-games/cli": "0.1.
|
|
19
|
+
"@donut-games/cli": "0.1.2"
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"tsup": "^8.3.0",
|