1- import { ArrayParameterSetting , ArrayStatefulParameter , getPty } from 'codify-plugin-lib' ;
1+ import { ArrayParameterSetting , ArrayStatefulParameter , getPty , SpawnStatus } from 'codify-plugin-lib' ;
22import fs from 'node:fs/promises' ;
33import semver from 'semver' ;
44
5- import { SpawnStatus , codifySpawn } from '../../../utils/codify-spawn.js' ;
65import { FileUtils } from '../../../utils/file-utils.js' ;
76import { Utils } from '../../../utils/index.js' ;
87import { JenvConfig } from './jenv.js' ;
@@ -93,13 +92,14 @@ export class JenvAddParameter extends ArrayStatefulParameter<JenvConfig, string>
9392 throw new Error ( `Unsupported version of java specified. Only [${ OPENJDK_SUPPORTED_VERSIONS . join ( ', ' ) } ] is supported` )
9493 }
9594
95+ const $ = getPty ( ) ;
9696 const openjdkName = ( parsedVersion === 22 ) ? 'openjdk' : `openjdk@${ parsedVersion } ` ;
97- const { status } = await codifySpawn ( `brew list --formula -1 ${ openjdkName } ` , { throws : false } ) ;
97+ const { status } = await $ . spawnSafe ( `brew list --formula -1 ${ openjdkName } ` , { interactive : true } ) ;
9898
9999 // That version is not currently installed with homebrew. Let's install it
100100 if ( status === SpawnStatus . ERROR ) {
101101 console . log ( `Homebrew detected. Attempting to install java version ${ openjdkName } automatically using homebrew` )
102- await codifySpawn ( `brew install ${ openjdkName } ` )
102+ await $ . spawn ( `brew install ${ openjdkName } ` , { interactive : true } )
103103 }
104104
105105 location = ( await this . getHomebrewInstallLocation ( openjdkName ) ) ! ;
@@ -117,8 +117,9 @@ export class JenvAddParameter extends ArrayStatefulParameter<JenvConfig, string>
117117 }
118118 }
119119
120+ const $ = getPty ( ) ;
120121 try {
121- await codifySpawn ( `jenv add ${ location } ` , { throws : true } ) ;
122+ await $ . spawn ( `jenv add ${ location } ` , { interactive : true } ) ;
122123 } catch ( error : unknown ) {
123124 if ( error instanceof Error && error . message . includes ( 'jenv: cannot rehash' ) ) {
124125 await this . rehash ( ) ;
@@ -130,6 +131,7 @@ export class JenvAddParameter extends ArrayStatefulParameter<JenvConfig, string>
130131 }
131132
132133 override async removeItem ( param : string ) : Promise < void > {
134+ const $ = getPty ( ) ;
133135 const isHomebrewInstalled = await Utils . isHomebrewInstalled ( ) ;
134136
135137 if ( isHomebrewInstalled && param . startsWith ( '/opt/homebrew/Cellar/openjdk@' ) ) {
@@ -143,18 +145,19 @@ export class JenvAddParameter extends ArrayStatefulParameter<JenvConfig, string>
143145
144146 const location = await this . getHomebrewInstallLocation ( openjdkName ) ;
145147 if ( location ) {
146- await codifySpawn ( `jenv remove ${ location } ` )
147- await codifySpawn ( `brew uninstall ${ openjdkName } ` )
148+ await $ . spawn ( `jenv remove ${ location } ` , { interactive : true } )
149+ await $ . spawn ( `brew uninstall ${ openjdkName } ` , { interactive : true } )
148150 }
149151
150152 return
151153 }
152154
153- await codifySpawn ( `jenv remove ${ param } ` ) ;
155+ await $ . spawn ( `jenv remove ${ param } ` , { interactive : true } ) ;
154156 }
155157
156158 private async getHomebrewInstallLocation ( openjdkName : string ) : Promise < null | string > {
157- const { data : installInfo } = await codifySpawn ( `brew list --formula -1 ${ openjdkName } ` )
159+ const $ = getPty ( ) ;
160+ const { data : installInfo } = await $ . spawn ( `brew list --formula -1 ${ openjdkName } ` , { interactive : true } )
158161
159162 // Example: /opt/homebrew/Cellar/openjdk@17/17.0.11/libexec/
160163 const libexec = installInfo
@@ -171,7 +174,8 @@ export class JenvAddParameter extends ArrayStatefulParameter<JenvConfig, string>
171174 }
172175
173176 private async rehash ( ) : Promise < void > {
174- const { data : output } = await codifySpawn ( 'jenv rehash' , { throws : false } )
177+ const $ = getPty ( ) ;
178+ const { data : output } = await $ . spawnSafe ( 'jenv rehash' , { interactive : true } )
175179
176180 if ( output . includes ( 'jenv: cannot rehash' ) ) {
177181 const existingShims = output . match ( / j e n v : c a n n o t r e h a s h : ( .* ) e x i s t s / ) ?. at ( 1 ) ;
@@ -180,7 +184,7 @@ export class JenvAddParameter extends ArrayStatefulParameter<JenvConfig, string>
180184 }
181185
182186 await fs . rename ( existingShims , `${ existingShims } -${ nanoid ( 4 ) } ` ) ;
183- await codifySpawn ( 'jenv rehash' , { throws : true } )
187+ await $ . spawn ( 'jenv rehash' , { interactive : true } )
184188 }
185189 }
186190}
0 commit comments