@@ -6,12 +6,14 @@ import { Manifest, ManifestDependency, ManifestVersion } from "./manifest.js";
66import { extractMcVersion , extractModuleVersion , getVersions } from "./versions.js" ;
77import * as logger from "./logger.js" ;
88import { VERSION } from "../constants.js" ;
9+ import { getUsername } from "./username.js" ;
910
1011const DEFAULT_ENGINE_VERSION : [ number , number , number ] | string = "1.20.0" ;
1112
1213interface ScaffoldOptions {
1314 targetDir : string ;
1415 projectName ?: string ;
16+ directoryName ?: string ;
1517 lib ?: boolean ;
1618 workflow ?: boolean ;
1719}
@@ -25,13 +27,14 @@ interface ResolvedDependencyInfo {
2527export async function scaffoldProject ( options : ScaffoldOptions ) : Promise < void > {
2628 const targetDir = path . resolve ( options . targetDir ) ;
2729 const projectName = options . projectName ?. trim ( ) || path . basename ( targetDir ) ;
30+ const directoryName = options . directoryName ?. trim ( ) || projectName ;
2831 const includeLibraryTemplate = options . lib === true ;
2932 const includeWorkflow = options . workflow !== false ;
3033
3134 fs . mkdirSync ( targetDir , { recursive : true } ) ;
3235
3336 const dependencyInfo = await resolveDependencyInfo ( ) ;
34- const files = createTemplateFiles ( projectName , dependencyInfo , includeWorkflow , includeLibraryTemplate ) ;
37+ const files = createTemplateFiles ( projectName , directoryName , dependencyInfo , includeWorkflow , includeLibraryTemplate ) ;
3538
3639 let createdCount = 0 ;
3740
@@ -135,13 +138,14 @@ async function resolveDependencyInfo(): Promise<ResolvedDependencyInfo> {
135138
136139function createTemplateFiles (
137140 projectName : string ,
141+ directoryName : string ,
138142 dependencyInfo : ResolvedDependencyInfo ,
139143 includeWorkflow : boolean ,
140144 includeLibraryTemplate : boolean ,
141145) : Record < string , string > {
142146 const libraryPackageName = includeLibraryTemplate ? resolveLibraryPackageName ( projectName ) : null ;
143147 const manifest = createManifest ( projectName , dependencyInfo . engineVersion , dependencyInfo . dependencies , includeLibraryTemplate ) ;
144- const packageJson = createPackageJson ( projectName , dependencyInfo . packageDependencies , includeLibraryTemplate , libraryPackageName ) ;
148+ const packageJson = createPackageJson ( projectName , directoryName , dependencyInfo . packageDependencies , includeLibraryTemplate , libraryPackageName ) ;
145149
146150 const files : Record < string , string > = {
147151 ".gitignore" : "node_modules/\nscripts\ndist\n*.mcpack\n*.mcaddon\n" ,
@@ -216,6 +220,7 @@ function createManifest(
216220
217221function createPackageJson (
218222 projectName : string ,
223+ directoryName : string ,
219224 dependencies : Record < string , string > ,
220225 includeLibraryTemplate : boolean ,
221226 libraryPackageName : string | null ,
@@ -247,7 +252,8 @@ function createPackageJson(
247252 } ,
248253 main : "./dist/main.js" ,
249254 types : "./dist/main.d.ts" ,
250- prepublishOnly : "scriptup build --release && node .github/workflows/ensure-dts-export.js" ,
255+ prepublishOnly : "scriptup build --release && node .github/workflows/ensure-dts-export.js" ,
256+ repository : `https://github.com/${ getUsername ( ) ?? "{{your-username}}" } /${ directoryName } .git` ,
251257 }
252258 : { } ) ,
253259 scripts : {
@@ -637,22 +643,7 @@ function resolveLibraryPackageName(projectName: string): string {
637643
638644function createLicense ( ) : string {
639645 const year = new Date ( ) . getFullYear ( ) ;
640- let author = "{{author}}" ;
641- try {
642- const gitNameResult = spawnSync ( "git" , [ "config" , "user.name" ] , {
643- encoding : "utf-8" ,
644- shell : true ,
645- } ) ;
646- if ( gitNameResult . status === 0 ) {
647- const gitName = gitNameResult . stdout . trim ( ) ;
648- if ( gitName ) {
649- author = gitName ;
650- }
651- }
652- } catch ( error ) {
653- logger . warn ( `Failed to get git user.name: ${ error instanceof Error ? error . message : String ( error ) } ` ) ;
654- logger . warn ( "Using placeholder author name in LICENSE." ) ;
655- }
646+ const author = getUsername ( ) || "{{author}}" ;
656647
657648 return `MIT License
658649
@@ -681,7 +672,7 @@ function normalizePackageName(projectName: string): string {
681672 const normalized = projectName
682673 . trim ( )
683674 . toLowerCase ( )
684- . replace ( / [ ^ a - z 0 - 9 - _ \s] / g, "" )
675+ . replace ( / [ ^ a - z 0 - 9 -@ \/ _ \s ] / g, "" )
685676 . replace ( / \s + / g, "-" )
686677 . replace ( / - + / g, "-" )
687678 . replace ( / ^ - | - $ / g, "" ) ;
0 commit comments