protected getMergeSettings()

in app/exec/extension/default.ts [185:257]


	protected getMergeSettings(): Promise<MergeSettings> {
		return Promise.all([
			this.commandArgs.root.val(),
			this.commandArgs.locRoot.val(),
			this.commandArgs.manifestJs.val().then(files => files && files.length ? files[0] : null),
			this.commandArgs.env.val(),
			this.commandArgs.manifests.val(),
			this.commandArgs.manifestGlobs.val(),
			this.commandArgs.override.val(),
			this.commandArgs.overridesFile.val(),
			this.commandArgs.revVersion.val(),
			this.commandArgs.bypassValidation.val(),
			this.commandArgs.publisher.val(true),
			this.commandArgs.extensionId.val(true),
			this.commandArgs.json5.val(true),
		]).then<MergeSettings>(values => {
			const [
				root,
				locRoot,
				manifestJs,
				env,
				manifests,
				manifestGlob,
				override,
				overridesFile,
				revVersion,
				bypassValidation,
				publisher,
				extensionId,
				json5,
			] = values;
			if (publisher) {
				_.set(override, "publisher", publisher);
			}
			if (extensionId) {
				_.set(override, "extensionid", extensionId);
			}
			let overrideFileContent = Promise.resolve("");
			if (overridesFile && overridesFile.length > 0) {
				overrideFileContent = promisify(readFile)(overridesFile[0], "utf8");
			}
			return overrideFileContent.then(contentStr => {
				let content = contentStr;
				if (content === "") {
					content = "{}";
					if (overridesFile && overridesFile.length > 0) {
						trace.warn("Overrides file was empty. No overrides will be imported from " + overridesFile[0]);
					}
				}
				let mergedOverrides = {};
				let contentJSON = {};
				try {
					contentJSON = json5 ? jju.parse(content) : JSON.parse(content);
				} catch (e) {
					throw new Error("Could not parse contents of " + overridesFile[0] + " as JSON. \n");
				}
				contentJSON["__origin"] = overridesFile ? overridesFile[0] : path.join(root[0], "_override.json");
				_.merge(mergedOverrides, contentJSON, override);
				return {
					root: root[0],
					locRoot: locRoot && locRoot[0],
					manifestJs: manifestJs,
					env: env,
					manifests: manifests,
					manifestGlobs: manifestGlob,
					overrides: mergedOverrides,
					bypassValidation: bypassValidation,
					revVersion: revVersion,
					json5: json5,
				};
			});
		});
	}