@@ -49,8 +49,10 @@ class InitServiceImpl implements InitService {
4949 async run ( config : InitConfig ) : Promise < GeneratedFiles > {
5050 logger . info ( 'Starting APIM repository initialization...' ) ;
5151
52- // Validate that the CLI package tarball exists
53- await this . validateCliPackage ( config . cliPackage ) ;
52+ // Validate that the CLI package tarball exists (only if provided)
53+ if ( config . cliPackage ) {
54+ await this . validateCliPackage ( config . cliPackage ) ;
55+ }
5456
5557 // Gather configuration (interactive or from flags)
5658 const finalConfig = await this . gatherConfiguration ( config ) ;
@@ -247,17 +249,24 @@ class InitServiceImpl implements InitService {
247249 await fs . writeFile ( gitkeepPath , '' ) ;
248250 generatedFiles . directories . push ( config . artifactDir ) ;
249251
250- // Copy CLI tarball into .apiops/ directory
251- const apiopsDir = path . join ( config . outputDir , '.apiops' ) ;
252- await fs . mkdir ( apiopsDir , { recursive : true } ) ;
253- const tarballFilename = path . basename ( config . cliPackage ) ;
254- const tarballDest = path . join ( apiopsDir , tarballFilename ) ;
255- await fs . copyFile ( path . resolve ( config . cliPackage ) , tarballDest ) ;
256- generatedFiles . directories . push ( '.apiops' ) ;
257-
258- // Generate package.json with local tarball dependency
259- const tarballRelPath = path . join ( '.apiops' , tarballFilename ) ;
260- const packageJsonContent = generatePackageJson ( { tarballRelPath } ) ;
252+ // Generate package.json - mode depends on whether cliPackage is provided
253+ let packageJsonContent : string ;
254+ if ( config . cliPackage ) {
255+ // Local tarball mode: copy tarball and reference via file: dependency
256+ const apiopsDir = path . join ( config . outputDir , '.apiops' ) ;
257+ await fs . mkdir ( apiopsDir , { recursive : true } ) ;
258+ const tarballFilename = path . basename ( config . cliPackage ) ;
259+ const tarballDest = path . join ( apiopsDir , tarballFilename ) ;
260+ await fs . copyFile ( path . resolve ( config . cliPackage ) , tarballDest ) ;
261+ generatedFiles . directories . push ( '.apiops' ) ;
262+
263+ const tarballRelPath = path . join ( '.apiops' , tarballFilename ) ;
264+ packageJsonContent = generatePackageJson ( { mode : 'local' , tarballRelPath } ) ;
265+ } else {
266+ // Public npm mode: use registry package
267+ packageJsonContent = generatePackageJson ( { mode : 'npm' } ) ;
268+ }
269+
261270 const packageJsonPath = path . join ( config . outputDir , 'package.json' ) ;
262271 await fs . writeFile ( packageJsonPath , packageJsonContent ) ;
263272 generatedFiles . configs . push ( 'package.json' ) ;
0 commit comments