From be3c49be0007a5e88aab3c530a4b0ea884f64a7a Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Tue, 2 Apr 2019 15:21:29 +0200 Subject: [PATCH] move config expor helper separate file --- src/vs/workbench/electron-browser/main.ts | 3 +- .../node/configurationExportHelper.ts | 107 ++++++++++++++++++ .../node/configurationService.ts | 103 +---------------- 3 files changed, 111 insertions(+), 102 deletions(-) create mode 100644 src/vs/workbench/services/configuration/node/configurationExportHelper.ts diff --git a/src/vs/workbench/electron-browser/main.ts b/src/vs/workbench/electron-browser/main.ts index 75ec0f51aea..968b7d6a9df 100644 --- a/src/vs/workbench/electron-browser/main.ts +++ b/src/vs/workbench/electron-browser/main.ts @@ -14,7 +14,7 @@ import { domContentLoaded, addDisposableListener, EventType, scheduleAtNextAnima import { onUnexpectedError } from 'vs/base/common/errors'; import { isLinux, isMacintosh, isWindows } from 'vs/base/common/platform'; import { URI } from 'vs/base/common/uri'; -import { WorkspaceService, DefaultConfigurationExportHelper } from 'vs/workbench/services/configuration/node/configurationService'; +import { WorkspaceService } from 'vs/workbench/services/configuration/node/configurationService'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { ServiceCollection } from 'vs/platform/instantiation/common/serviceCollection'; import { stat } from 'vs/base/node/pfs'; @@ -49,6 +49,7 @@ import { DiskFileSystemProvider } from 'vs/workbench/services/files2/electron-br import { IChannel } from 'vs/base/parts/ipc/common/ipc'; import { REMOTE_FILE_SYSTEM_CHANNEL_NAME, RemoteExtensionsFileSystemProvider } from 'vs/platform/remote/common/remoteAgentFileSystemChannel'; import { REMOTE_HOST_SCHEME } from 'vs/platform/remote/common/remoteHosts'; +import { DefaultConfigurationExportHelper } from 'vs/workbench/services/configuration/node/configurationExportHelper'; class CodeRendererMain extends Disposable { diff --git a/src/vs/workbench/services/configuration/node/configurationExportHelper.ts b/src/vs/workbench/services/configuration/node/configurationExportHelper.ts new file mode 100644 index 00000000000..0b33f235ded --- /dev/null +++ b/src/vs/workbench/services/configuration/node/configurationExportHelper.ts @@ -0,0 +1,107 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { writeFile } from 'vs/base/node/pfs'; +import product from 'vs/platform/product/node/product'; +import { IEnvironmentService } from 'vs/platform/environment/common/environment'; +import { Registry } from 'vs/platform/registry/common/platform'; +import { IConfigurationNode, IConfigurationRegistry, Extensions, IConfigurationPropertySchema } from 'vs/platform/configuration/common/configurationRegistry'; +import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; +import { ICommandService } from 'vs/platform/commands/common/commands'; + +interface IExportedConfigurationNode { + name: string; + description: string; + default: any; + type?: string | string[]; + enum?: any[]; + enumDescriptions?: string[]; +} + +interface IConfigurationExport { + settings: IExportedConfigurationNode[]; + buildTime: number; + commit?: string; + buildNumber?: number; +} + +export class DefaultConfigurationExportHelper { + + constructor( + @IEnvironmentService environmentService: IEnvironmentService, + @IExtensionService private readonly extensionService: IExtensionService, + @ICommandService private readonly commandService: ICommandService) { + if (environmentService.args['export-default-configuration']) { + this.writeConfigModelAndQuit(environmentService.args['export-default-configuration']); + } + } + + private writeConfigModelAndQuit(targetPath: string): Promise { + return Promise.resolve(this.extensionService.whenInstalledExtensionsRegistered()) + .then(() => this.writeConfigModel(targetPath)) + .then(() => this.commandService.executeCommand('workbench.action.quit')) + .then(() => { }); + } + + private writeConfigModel(targetPath: string): Promise { + const config = this.getConfigModel(); + + const resultString = JSON.stringify(config, undefined, ' '); + return writeFile(targetPath, resultString); + } + + private getConfigModel(): IConfigurationExport { + const configRegistry = Registry.as(Extensions.Configuration); + const configurations = configRegistry.getConfigurations().slice(); + const settings: IExportedConfigurationNode[] = []; + + const processProperty = (name: string, prop: IConfigurationPropertySchema) => { + const propDetails: IExportedConfigurationNode = { + name, + description: prop.description || prop.markdownDescription || '', + default: prop.default, + type: prop.type + }; + + if (prop.enum) { + propDetails.enum = prop.enum; + } + + if (prop.enumDescriptions || prop.markdownEnumDescriptions) { + propDetails.enumDescriptions = prop.enumDescriptions || prop.markdownEnumDescriptions; + } + + settings.push(propDetails); + }; + + const processConfig = (config: IConfigurationNode) => { + if (config.properties) { + for (let name in config.properties) { + processProperty(name, config.properties[name]); + } + } + + if (config.allOf) { + config.allOf.forEach(processConfig); + } + }; + + configurations.forEach(processConfig); + + const excludedProps = configRegistry.getExcludedConfigurationProperties(); + for (let name in excludedProps) { + processProperty(name, excludedProps[name]); + } + + const result: IConfigurationExport = { + settings: settings.sort((a, b) => a.name.localeCompare(b.name)), + buildTime: Date.now(), + commit: product.commit, + buildNumber: product.settingsSearchBuildId + }; + + return result; + } +} diff --git a/src/vs/workbench/services/configuration/node/configurationService.ts b/src/vs/workbench/services/configuration/node/configurationService.ts index 9a5ddba56c5..3bd94d9baf0 100644 --- a/src/vs/workbench/services/configuration/node/configurationService.ts +++ b/src/vs/workbench/services/configuration/node/configurationService.ts @@ -10,7 +10,6 @@ import { ResourceMap } from 'vs/base/common/map'; import { equals, deepClone } from 'vs/base/common/objects'; import { Disposable } from 'vs/base/common/lifecycle'; import { Queue, Barrier } from 'vs/base/common/async'; -import { writeFile } from 'vs/base/node/pfs'; import { IJSONContributionRegistry, Extensions as JSONExtensions } from 'vs/platform/jsonschemas/common/jsonContributionRegistry'; import { IWorkspaceContextService, Workspace, WorkbenchState, IWorkspaceFolder, toWorkspaceFolders, IWorkspaceFoldersChangeEvent, WorkspaceFolder } from 'vs/platform/workspace/common/workspace'; import { isLinux } from 'vs/base/common/platform'; @@ -21,11 +20,8 @@ import { IConfigurationChangeEvent, ConfigurationTarget, IConfigurationOverrides import { Configuration, WorkspaceConfigurationChangeEvent, AllKeysConfigurationChangeEvent } from 'vs/workbench/services/configuration/common/configurationModels'; import { FOLDER_CONFIG_FOLDER_NAME, defaultSettingsSchemaId, userSettingsSchemaId, workspaceSettingsSchemaId, folderSettingsSchemaId } from 'vs/workbench/services/configuration/common/configuration'; import { Registry } from 'vs/platform/registry/common/platform'; -import { IConfigurationNode, IConfigurationRegistry, Extensions, IConfigurationPropertySchema, allSettings, windowSettings, resourceSettings, applicationSettings } from 'vs/platform/configuration/common/configurationRegistry'; +import { IConfigurationRegistry, Extensions, allSettings, windowSettings, resourceSettings, applicationSettings } from 'vs/platform/configuration/common/configurationRegistry'; import { IWorkspaceIdentifier, isWorkspaceIdentifier, IStoredWorkspaceFolder, isStoredWorkspaceFolder, IWorkspaceFolderCreationData, ISingleFolderWorkspaceIdentifier, isSingleFolderWorkspaceIdentifier, IWorkspaceInitializationPayload, isSingleFolderWorkspaceInitializationPayload, ISingleFolderWorkspaceInitializationPayload, IEmptyWorkspaceInitializationPayload, useSlashForPath, getStoredWorkspaceFolder } from 'vs/platform/workspaces/common/workspaces'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; -import { ICommandService } from 'vs/platform/commands/common/commands'; -import product from 'vs/platform/product/node/product'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ConfigurationEditingService } from 'vs/workbench/services/configuration/common/configurationEditingService'; import { WorkspaceConfiguration, FolderConfiguration, RemoteUserConfiguration, LocalUserConfiguration } from 'vs/workbench/services/configuration/node/configuration'; @@ -707,99 +703,4 @@ export class WorkspaceService extends Disposable implements IConfigurationServic } return {}; } -} - -interface IExportedConfigurationNode { - name: string; - description: string; - default: any; - type?: string | string[]; - enum?: any[]; - enumDescriptions?: string[]; -} - -interface IConfigurationExport { - settings: IExportedConfigurationNode[]; - buildTime: number; - commit?: string; - buildNumber?: number; -} - -export class DefaultConfigurationExportHelper { - - constructor( - @IEnvironmentService environmentService: IEnvironmentService, - @IExtensionService private readonly extensionService: IExtensionService, - @ICommandService private readonly commandService: ICommandService) { - if (environmentService.args['export-default-configuration']) { - this.writeConfigModelAndQuit(environmentService.args['export-default-configuration']); - } - } - - private writeConfigModelAndQuit(targetPath: string): Promise { - return Promise.resolve(this.extensionService.whenInstalledExtensionsRegistered()) - .then(() => this.writeConfigModel(targetPath)) - .then(() => this.commandService.executeCommand('workbench.action.quit')) - .then(() => { }); - } - - private writeConfigModel(targetPath: string): Promise { - const config = this.getConfigModel(); - - const resultString = JSON.stringify(config, undefined, ' '); - return writeFile(targetPath, resultString); - } - - private getConfigModel(): IConfigurationExport { - const configRegistry = Registry.as(Extensions.Configuration); - const configurations = configRegistry.getConfigurations().slice(); - const settings: IExportedConfigurationNode[] = []; - - const processProperty = (name: string, prop: IConfigurationPropertySchema) => { - const propDetails: IExportedConfigurationNode = { - name, - description: prop.description || prop.markdownDescription || '', - default: prop.default, - type: prop.type - }; - - if (prop.enum) { - propDetails.enum = prop.enum; - } - - if (prop.enumDescriptions || prop.markdownEnumDescriptions) { - propDetails.enumDescriptions = prop.enumDescriptions || prop.markdownEnumDescriptions; - } - - settings.push(propDetails); - }; - - const processConfig = (config: IConfigurationNode) => { - if (config.properties) { - for (let name in config.properties) { - processProperty(name, config.properties[name]); - } - } - - if (config.allOf) { - config.allOf.forEach(processConfig); - } - }; - - configurations.forEach(processConfig); - - const excludedProps = configRegistry.getExcludedConfigurationProperties(); - for (let name in excludedProps) { - processProperty(name, excludedProps[name]); - } - - const result: IConfigurationExport = { - settings: settings.sort((a, b) => a.name.localeCompare(b.name)), - buildTime: Date.now(), - commit: product.commit, - buildNumber: product.settingsSearchBuildId - }; - - return result; - } -} +} \ No newline at end of file -- GitLab