@@ -42,6 +42,10 @@ import { LocalizationsService } from 'vs/platform/localizations/node/localizatio
4242import { Schemas } from 'vs/base/common/network' ;
4343import { SpdLogService } from 'vs/platform/log/node/spdlogService' ;
4444import { buildTelemetryMessage } from 'vs/platform/telemetry/node/telemetry' ;
45+ import { FileService } from 'vs/platform/files/common/fileService' ;
46+ import { IFileService } from 'vs/platform/files/common/files' ;
47+ import { DiskFileSystemProvider } from 'vs/platform/files/node/diskFileSystemProvider' ;
48+ import { DisposableStore } from 'vs/base/common/lifecycle' ;
4549
4650const notFound = ( id : string ) => localize ( 'notFound' , "Extension '{0}' not found." , id ) ;
4751const notInstalled = ( id : string ) => localize ( 'notInstalled' , "Extension '{0}' is not installed." , id ) ;
@@ -280,6 +284,7 @@ const eventPrefix = 'monacoworkbench';
280284
281285export async function main ( argv : ParsedArgs ) : Promise < void > {
282286 const services = new ServiceCollection ( ) ;
287+ const disposables = new DisposableStore ( ) ;
283288
284289 const environmentService = new EnvironmentService ( argv , process . execPath ) ;
285290 const logService : ILogService = new SpdLogService ( 'cli' , environmentService . logsPath , getLogLevel ( environmentService ) ) ;
@@ -289,13 +294,23 @@ export async function main(argv: ParsedArgs): Promise<void> {
289294 await Promise . all ( [ environmentService . appSettingsHome . fsPath , environmentService . extensionsPath ] . map ( p => mkdirp ( p ) ) ) ;
290295
291296 const configurationService = new ConfigurationService ( environmentService . settingsResource ) ;
297+ disposables . add ( configurationService ) ;
292298 await configurationService . initialize ( ) ;
293299
294300 services . set ( IEnvironmentService , environmentService ) ;
295301 services . set ( ILogService , logService ) ;
296302 services . set ( IConfigurationService , configurationService ) ;
297303 services . set ( IStateService , new SyncDescriptor ( StateService ) ) ;
298304
305+ // Files
306+ const fileService = new FileService ( logService ) ;
307+ disposables . add ( fileService ) ;
308+ services . set ( IFileService , fileService ) ;
309+
310+ const diskFileSystemProvider = new DiskFileSystemProvider ( logService ) ;
311+ disposables . add ( diskFileSystemProvider ) ;
312+ fileService . registerProvider ( Schemas . file , diskFileSystemProvider ) ;
313+
299314 const instantiationService : IInstantiationService = new InstantiationService ( services ) ;
300315
301316 return instantiationService . invokeFunction ( accessor => {
@@ -305,6 +320,8 @@ export async function main(argv: ParsedArgs): Promise<void> {
305320 const { appRoot, extensionsPath, extensionDevelopmentLocationURI : extensionDevelopmentLocationURI , isBuilt, installSourcePath } = envService ;
306321
307322 const services = new ServiceCollection ( ) ;
323+
324+
308325 services . set ( IRequestService , new SyncDescriptor ( RequestService ) ) ;
309326 services . set ( IExtensionManagementService , new SyncDescriptor ( ExtensionManagementService ) ) ;
310327 services . set ( IExtensionGalleryService , new SyncDescriptor ( ExtensionGalleryService ) ) ;
@@ -323,6 +340,9 @@ export async function main(argv: ParsedArgs): Promise<void> {
323340 } ;
324341
325342 services . set ( ITelemetryService , new SyncDescriptor ( TelemetryService , [ config ] ) ) ;
343+
344+ // Dispose the AI adapter so that remaining data gets flushed.
345+ disposables . add ( combinedAppender ( ...appenders ) ) ;
326346 } else {
327347 services . set ( ITelemetryService , NullTelemetryService ) ;
328348 }
@@ -331,8 +351,7 @@ export async function main(argv: ParsedArgs): Promise<void> {
331351 const main = instantiationService2 . createInstance ( Main ) ;
332352
333353 return main . run ( argv ) . then ( ( ) => {
334- // Dispose the AI adapter so that remaining data gets flushed.
335- return combinedAppender ( ...appenders ) . dispose ( ) ;
354+ disposables . dispose ( ) ;
336355 } ) ;
337356 } ) ;
338357}
0 commit comments