@@ -46,11 +46,18 @@ const getApiVersion = Effect.fn('getApiVersion')(function* (project: SfProject)
4646 ) ;
4747} ) ;
4848
49- const getDefaultOutputDir = Effect . fn ( 'getDefaultOutputDir ' ) ( function * ( project : SfProject ) {
49+ const promptForOutputDir = Effect . fn ( 'promptForOutputDir ' ) ( function * ( project : SfProject ) {
5050 const api = yield * ( yield * ExtensionProviderService ) . getServicesApi ;
51+ const promptService = yield * api . services . PromptService ;
5152 const workspaceInfo = yield * api . services . WorkspaceService . getWorkspaceInfoOrThrow ( ) ;
53+
5254 const defaultPkg = project . getDefaultPackage ( ) ;
53- return Utils . joinPath ( workspaceInfo . uri , defaultPkg . path , 'main' , 'default' , 'classes' ) ;
55+ const defaultUri = Utils . joinPath ( workspaceInfo . uri , defaultPkg . path , 'main' , 'default' , 'classes' ) ;
56+
57+ return yield * promptService . promptForOutputDir ( {
58+ defaultUri,
59+ pickerPlaceHolder : nls . localize ( 'apex_test_class_output_dir_prompt' )
60+ } ) ;
5461} ) ;
5562
5663const promptForClassName = Effect . fn ( 'promptForClassName' ) ( function * ( ) {
@@ -104,22 +111,22 @@ export const apexGenerateUnitTestClassCommand = Effect.fn('apexGenerateUnitTestC
104111) {
105112 const api = yield * ( yield * ExtensionProviderService ) . getServicesApi ;
106113 const promptService = yield * api . services . PromptService ;
114+ const fsService = yield * api . services . FsService ;
107115 const project = yield * api . services . ProjectService . getSfProject ( ) ;
108- const workspaceInfo = yield * api . services . WorkspaceService . getWorkspaceInfoOrThrow ( ) ;
109116
110117 const className = params ?. name ?? ( yield * promptForClassName ( ) ) ;
111118
112- const outputDirUri = params ?. outputDir ?? outputDirectory ?? ( yield * getDefaultOutputDir ( project ) ) ;
119+ const outputDirUri = params ?. outputDir ?? outputDirectory ?? ( yield * promptForOutputDir ( project ) ) ;
113120
114121 const template = params ?. template ?? ( yield * promptForTemplate ( ) ) ;
115122
123+ const workspaceInfo = yield * api . services . WorkspaceService . getWorkspaceInfoOrThrow ( ) ;
116124 const apiVersion = yield * getApiVersion ( project ) ;
117- const cwd = workspaceInfo . uri . fsPath ;
118125 const uris = [ `${ className } .cls` , `${ className } .cls-meta.xml` ] . map ( uri => Utils . joinPath ( outputDirUri , uri ) ) ;
119126 yield * promptService . ensureMetadataOverwriteOrThrow ( { uris } ) ;
120127
121128 const result = yield * api . services . TemplateService . create ( {
122- cwd,
129+ cwd : yield * fsService . uriToPath ( workspaceInfo . uri ) ,
123130 templateType : api . services . TemplateType . ApexClass ,
124131 outputdir : outputDirUri ,
125132 options : { template, classname : className , apiversion : apiVersion }
0 commit comments