提交 fd430793 编写于 作者: R Rob Lourens

Rename to export-default-configuration, and write sorted settings

上级 12c1ed6b
......@@ -470,11 +470,11 @@ gulp.task('generate-vscode-configuration', () => {
}
const appPath = path.join(buildDir, 'VSCode-darwin/Visual\\ Studio\\ Code\\ -\\ Insiders.app/Contents/Resources/app/bin/code');
const codeProc = cp.exec(`${appPath} --dump-default-configuration='${allConfigDetailsPath}' --wait`);
const codeProc = cp.exec(`${appPath} --export-default-configuration='${allConfigDetailsPath}' --wait`);
const timer = setTimeout(() => {
codeProc.kill();
reject(new Error('dump-default-configuration process timed out'));
reject(new Error('export-default-configuration process timed out'));
}, 10 * 1000);
codeProc.stdout.on('data', d => console.log(d.toString()));
......
......@@ -28,20 +28,17 @@ step "Install distro dependencies" \
step "Build minified & upload source maps" \
npm run gulp -- vscode-darwin-min upload-vscode-sourcemaps
step "Generate and upload configuration.json" \
npm run gulp -- upload-vscode-configuration
# step "Create loader snapshot"
# node build/lib/snapshotLoader.js
# step "Run unit tests" \
# ./scripts/test.sh --build --reporter dot
step "Run unit tests" \
./scripts/test.sh --build --reporter dot
# step "Run integration tests" \
# ./scripts/test-integration.sh
step "Run integration tests" \
./scripts/test-integration.sh
step "Publish release" \
./build/tfs/darwin/release.sh
step "Generate and upload configuration.json" \
npm run gulp -- upload-vscode-configuration
\ No newline at end of file
npm run gulp -- upload-vscode-configuration
......@@ -75,7 +75,6 @@
"gulp-buffer": "0.0.2",
"gulp-concat": "^2.6.0",
"gulp-cssnano": "^2.1.0",
"gulp-debug": "^3.1.0",
"gulp-eslint": "^3.0.1",
"gulp-filter": "^3.0.0",
"gulp-flatmap": "^1.0.0",
......@@ -133,4 +132,4 @@
"windows-mutex": "^0.2.0",
"fsevents": "0.3.8"
}
}
}
\ No newline at end of file
......@@ -41,7 +41,7 @@ export interface ParsedArgs {
'open-url'?: string | string[];
'skip-getting-started'?: boolean;
'sticky-quickopen'?: boolean;
'dump-default-configuration'?: string;
'export-default-configuration'?: string;
}
export const IEnvironmentService = createDecorator<IEnvironmentService>('environmentService');
......
......@@ -27,7 +27,7 @@ const options: minimist.Opts = {
'debugBrkSearch',
'open-url',
'enable-proposed-api',
'dump-default-configuration'
'export-default-configuration'
],
boolean: [
'help',
......
......@@ -46,7 +46,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag
import { ContextMenuService } from 'vs/workbench/services/contextview/electron-browser/contextmenuService';
import { WorkbenchKeybindingService } from 'vs/workbench/services/keybinding/electron-browser/keybindingService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { WorkspaceService, DefaultConfigurationDumpHelper } from 'vs/workbench/services/configuration/node/configuration';
import { WorkspaceService, DefaultConfigurationExportHelper } from 'vs/workbench/services/configuration/node/configuration';
import { IConfigurationEditingService } from 'vs/workbench/services/configuration/common/configurationEditing';
import { ConfigurationEditingService } from 'vs/workbench/services/configuration/node/configurationEditingService';
import { IJSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditing';
......@@ -623,7 +623,7 @@ export class Workbench implements IPartService {
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).setInstantiationService(this.instantiationService);
Registry.as<IEditorRegistry>(EditorExtensions.Editors).setInstantiationService(this.instantiationService);
this.instantiationService.createInstance(DefaultConfigurationDumpHelper);
this.instantiationService.createInstance(DefaultConfigurationExportHelper);
}
private initSettings(): void {
......
......@@ -869,14 +869,30 @@ export class Configuration<T> extends BaseConfiguration<T> {
}
}
export class DefaultConfigurationDumpHelper {
interface IExportedConfigurationNode {
name: string;
description: string;
default: any;
type: string | string[];
enum?: any[];
enumDescriptions?: string[];
}
interface IConfigurationExport {
settings: IExportedConfigurationNode[];
buildTime: number;
commit: string;
version: string;
}
export class DefaultConfigurationExportHelper {
constructor(
@IEnvironmentService environmentService: IEnvironmentService,
@IExtensionService private extensionService: IExtensionService,
@ICommandService private commandService: ICommandService) {
if (environmentService.args['dump-default-configuration']) {
this.writeConfigModelAndQuit(environmentService.args['dump-default-configuration']);
if (environmentService.args['export-default-configuration']) {
this.writeConfigModelAndQuit(environmentService.args['export-default-configuration']);
}
}
......@@ -888,15 +904,21 @@ export class DefaultConfigurationDumpHelper {
}
private writeConfigModel(targetPath: string): TPromise<void> {
const config = this.getConfigModel();
const resultString = JSON.stringify(config, undefined, ' ');
return writeFile(targetPath, resultString);
}
private getConfigModel(): IConfigurationExport {
const configurations = Registry.as<IConfigurationRegistry>(Extensions.Configuration).getConfigurations().slice();
const settings = [];
const settings: IExportedConfigurationNode[] = [];
const processConfig = (config: IConfigurationNode) => {
if (config.properties) {
for (let name in config.properties) {
const prop = config.properties[name];
const propDetails: any = {
const propDetails: IExportedConfigurationNode = {
name,
title: prop.title,
description: prop.description,
default: prop.default,
type: prop.type
......@@ -919,30 +941,15 @@ export class DefaultConfigurationDumpHelper {
}
};
configurations.sort(this.compareConfigurationNodes)
.forEach(processConfig);
configurations.forEach(processConfig);
const result: any = { settings };
result.build_time = Date.now();
result.commit = product.commit;
result.version = pkg.version;
const resultString = JSON.stringify(result, undefined, ' ');
return writeFile(targetPath, resultString);
}
const result: IConfigurationExport = {
settings: settings.sort((a, b) => a.name.localeCompare(b.name)),
buildTime: Date.now(),
commit: product.commit,
version: pkg.version
};
private compareConfigurationNodes(c1: IConfigurationNode, c2: IConfigurationNode): number {
if (typeof c1.order !== 'number') {
return 1;
}
if (typeof c2.order !== 'number') {
return -1;
}
if (c1.order === c2.order) {
const title1 = c1.title || '';
const title2 = c2.title || '';
return title1.localeCompare(title2);
}
return c1.order - c2.order;
return result;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册