142 lines
4.3 KiB
TypeScript
142 lines
4.3 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
|
|
import { URI } from 'vs/base/common/uri';
|
|
import { NativeParsedArgs } from 'vs/platform/environment/common/argv';
|
|
|
|
export const IEnvironmentService = createDecorator<IEnvironmentService>('environmentService');
|
|
export const INativeEnvironmentService = createDecorator<INativeEnvironmentService>('nativeEnvironmentService');
|
|
|
|
export interface IDebugParams {
|
|
port: number | null;
|
|
break: boolean;
|
|
}
|
|
|
|
export interface IExtensionHostDebugParams extends IDebugParams {
|
|
debugId?: string;
|
|
}
|
|
|
|
/**
|
|
* A basic environment service that can be used in various processes,
|
|
* such as main, renderer and shared process. Use subclasses of this
|
|
* service for specific environment.
|
|
*/
|
|
export interface IEnvironmentService {
|
|
|
|
readonly _serviceBrand: undefined;
|
|
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//
|
|
// NOTE: KEEP THIS INTERFACE AS SMALL AS POSSIBLE.
|
|
//
|
|
// AS SUCH:
|
|
// - PUT NON-WEB PROPERTIES INTO NATIVE ENVIRONMENT SERVICE
|
|
// - PUT WORKBENCH ONLY PROPERTIES INTO WORKBENCH ENVIRONMENT SERVICE
|
|
// - PUT ELECTRON-MAIN ONLY PROPERTIES INTO MAIN ENVIRONMENT SERVICE
|
|
//
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
// --- user roaming data
|
|
userRoamingDataHome: URI;
|
|
settingsResource: URI;
|
|
keybindingsResource: URI;
|
|
keyboardLayoutResource: URI;
|
|
argvResource: URI;
|
|
snippetsHome: URI;
|
|
|
|
// --- data paths
|
|
untitledWorkspacesHome: URI;
|
|
globalStorageHome: URI;
|
|
workspaceStorageHome: URI;
|
|
|
|
// --- settings sync
|
|
userDataSyncHome: URI;
|
|
userDataSyncLogResource: URI;
|
|
sync: 'on' | 'off' | undefined;
|
|
|
|
// --- extension development
|
|
debugExtensionHost: IExtensionHostDebugParams;
|
|
isExtensionDevelopment: boolean;
|
|
disableExtensions: boolean | string[];
|
|
extensionDevelopmentLocationURI?: URI[];
|
|
extensionTestsLocationURI?: URI;
|
|
|
|
// --- logging
|
|
logsPath: string;
|
|
logLevel?: string;
|
|
verbose: boolean;
|
|
isBuilt: boolean;
|
|
|
|
// --- telemetry
|
|
disableTelemetry: boolean;
|
|
telemetryLogResource: URI;
|
|
serviceMachineIdResource: URI;
|
|
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//
|
|
// NOTE: KEEP THIS INTERFACE AS SMALL AS POSSIBLE.
|
|
//
|
|
// AS SUCH:
|
|
// - PUT NON-WEB PROPERTIES INTO NATIVE ENVIRONMENT SERVICE
|
|
// - PUT WORKBENCH ONLY PROPERTIES INTO WORKBENCH ENVIRONMENT SERVICE
|
|
// - PUT ELECTRON-MAIN ONLY PROPERTIES INTO MAIN ENVIRONMENT SERVICE
|
|
//
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
}
|
|
|
|
/**
|
|
* A subclass of the `IEnvironmentService` to be used only in native
|
|
* environments (Windows, Linux, macOS) but not e.g. web.
|
|
*/
|
|
export interface INativeEnvironmentService extends IEnvironmentService {
|
|
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//
|
|
// NOTE: KEEP THIS INTERFACE AS SMALL AS POSSIBLE.
|
|
//
|
|
// AS SUCH:
|
|
// - PUT WORKBENCH ONLY PROPERTIES INTO WORKBENCH ENVIRONMENT SERVICE
|
|
// - PUT ELECTRON-MAIN ONLY PROPERTIES INTO MAIN ENVIRONMENT SERVICE
|
|
//
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
// --- CLI Arguments
|
|
args: NativeParsedArgs;
|
|
|
|
// --- paths
|
|
appRoot: string;
|
|
userHome: URI;
|
|
appSettingsHome: URI;
|
|
tmpDir: URI;
|
|
userDataPath: string;
|
|
machineSettingsResource: URI;
|
|
installSourcePath: string;
|
|
|
|
// --- IPC Handles
|
|
sharedIPCHandle: string;
|
|
|
|
// --- Extensions
|
|
extensionsPath: string;
|
|
extensionsDownloadPath: string;
|
|
builtinExtensionsPath: string;
|
|
extraExtensionPaths: string[]
|
|
extraBuiltinExtensionPaths: string[]
|
|
|
|
// --- Smoke test support
|
|
driverHandle?: string;
|
|
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
//
|
|
// NOTE: KEEP THIS INTERFACE AS SMALL AS POSSIBLE.
|
|
//
|
|
// AS SUCH:
|
|
// - PUT NON-WEB PROPERTIES INTO NATIVE ENVIRONMENT SERVICE
|
|
// - PUT WORKBENCH ONLY PROPERTIES INTO WORKBENCH ENVIRONMENT SERVICE
|
|
// - PUT ELECTRON-MAIN ONLY PROPERTIES INTO MAIN ENVIRONMENT SERVICE
|
|
//
|
|
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
|
}
|