@@ -3,12 +3,12 @@ import { createTempDirectory, removeDirectory, readTspLocation, getEmitterFromRe
33import { Logger , printBanner , enableDebug , printVersion } from "./log.js" ;
44import { TspLocation , compileTsp , discoverMainFile , resolveTspConfigUrl } from "./typespec.js" ;
55import { getOptions } from "./options.js" ;
6- import { mkdir , writeFile , cp , readFile , stat , rename , unlink } from "node:fs/promises" ;
6+ import { mkdir , cp , readFile , stat , rename , unlink } from "node:fs/promises" ;
77import { addSpecFiles , checkoutCommit , cloneRepo , getRepoRoot , sparseCheckout } from "./git.js" ;
88import { doesFileExist } from "./network.js" ;
99import { parse as parseYaml } from "yaml" ;
1010import { joinPaths , normalizePath , resolvePath } from "@typespec/compiler" ;
11- import { formatAdditionalDirectories , getAdditionalDirectoryName , getPathToDependency , getServiceDir , makeSparseSpecDir } from "./utils.js" ;
11+ import { getAdditionalDirectoryName , getPathToDependency , getServiceDir , makeSparseSpecDir , writeTspLocationYaml } from "./utils.js" ;
1212import { resolve } from "node:path" ;
1313import { config as dotenvConfig } from "dotenv" ;
1414
@@ -58,10 +58,13 @@ async function sdkInit(
5858 }
5959 const newPackageDir = joinPaths ( outputDir , serviceDir , packageDir ! )
6060 await mkdir ( newPackageDir , { recursive : true } ) ;
61- const additionalDirOutput = formatAdditionalDirectories ( configYaml ?. parameters ?. dependencies ?. additionalDirectories ) ;
62- await writeFile (
63- joinPaths ( newPackageDir , "tsp-location.yaml" ) ,
64- `directory: ${ resolvedConfigUrl . path } \ncommit: ${ resolvedConfigUrl . commit } \nrepo: ${ resolvedConfigUrl . repo } \nadditionalDirectories:${ additionalDirOutput } \n` ) ;
61+ const tspLocationData : TspLocation = {
62+ directory : resolvedConfigUrl . path ,
63+ commit : resolvedConfigUrl . commit ,
64+ repo : resolvedConfigUrl . repo ,
65+ additionalDirectories : configYaml ?. parameters ?. dependencies ?. additionalDirectories ,
66+ } ;
67+ await writeTspLocationYaml ( tspLocationData , newPackageDir ) ;
6568 Logger . debug ( `Removing sparse-checkout directory ${ cloneDir } ` ) ;
6669 await removeDirectory ( cloneDir ) ;
6770 return newPackageDir ;
@@ -81,7 +84,6 @@ async function sdkInit(
8184 }
8285 const configYaml = parseYaml ( data ) ;
8386 const serviceDir = getServiceDir ( configYaml , emitter ) ;
84- const additionalDirOutput = formatAdditionalDirectories ( configYaml ?. parameters ?. dependencies ?. additionalDirectories ) ;
8587 const packageDir = configYaml ?. options ?. [ emitter ] ?. [ "package-dir" ] ;
8688 if ( ! packageDir ) {
8789 throw new Error ( `Missing package-dir in ${ emitter } options of tspconfig.yaml. Please refer to https://github.com/Azure/azure-rest-api-specs/blob/main/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml for the right schema.` ) ;
@@ -96,8 +98,13 @@ async function sdkInit(
9698 directory = matchRes . groups ! [ "path" ] ! ;
9799 }
98100 }
99- writeFile ( joinPaths ( newPackageDir , "tsp-location.yaml" ) ,
100- `directory: ${ directory } \ncommit: ${ commit } \nrepo: ${ repo } \nadditionalDirectories:${ additionalDirOutput } \n` ) ;
101+ const tspLocationData : TspLocation = {
102+ directory : directory ,
103+ commit : commit ?? "" ,
104+ repo : repo ?? "" ,
105+ additionalDirectories : configYaml ?. parameters ?. dependencies ?. additionalDirectories ,
106+ } ;
107+ await writeTspLocationYaml ( tspLocationData , newPackageDir ) ;
101108 return newPackageDir ;
102109 }
103110}
@@ -321,13 +328,13 @@ async function main() {
321328 const tspLocation : TspLocation = await readTspLocation ( rootUrl ) ;
322329 tspLocation . commit = options . commit ?? tspLocation . commit ;
323330 tspLocation . repo = options . repo ?? tspLocation . repo ;
324- await writeFile ( joinPaths ( rootUrl , "tsp-location.yaml" ) , `directory: ${ tspLocation . directory } \ncommit: ${ tspLocation . commit } \nrepo: ${ tspLocation . repo } \nadditionalDirectories: ${ tspLocation . additionalDirectories } ` ) ;
331+ await writeTspLocationYaml ( tspLocation , rootUrl ) ;
325332 } else if ( options . tspConfig ) {
326333 const tspLocation : TspLocation = await readTspLocation ( rootUrl ) ;
327334 const tspConfig = resolveTspConfigUrl ( options . tspConfig ) ;
328335 tspLocation . commit = tspConfig . commit ?? tspLocation . commit ;
329336 tspLocation . repo = tspConfig . repo ?? tspLocation . repo ;
330- await writeFile ( joinPaths ( rootUrl , "tsp-location.yaml" ) , `directory: ${ tspLocation . directory } \ncommit: ${ tspLocation . commit } \nrepo: ${ tspLocation . repo } \nadditionalDirectories: ${ tspLocation . additionalDirectories } ` ) ;
337+ await writeTspLocationYaml ( tspLocation , rootUrl ) ;
331338 }
332339 await syncTspFiles ( rootUrl , options . localSpecRepo ) ;
333340 await generate ( { rootUrl, noCleanup : options . noCleanup , additionalEmitterOptions : options . emitterOptions } ) ;
0 commit comments