Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
210 changes: 115 additions & 95 deletions src/preset.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1130,16 +1130,20 @@ export async function expandConfigurePreset(folder: string, name: string, worksp
* calling configurePresets() or userConfigurePresets(). Getting the presets plus included map is useful on Select Preset when we want to be able to
* apply the Vs Dev Env to the preset and want the entire list of unexpanded presets, including the inlcuded presets.
*/
async function expandConfigurePresetImpl(folder: string, name: string, allowUserPreset: boolean = false, usePresetsPlusIncluded: boolean = false, errorHandler?: ExpansionErrorHandler): Promise<ConfigurePreset | null> {
let preset = getPresetByName(configurePresets(folder, usePresetsPlusIncluded), name);
if (preset) {
return expandConfigurePresetHelper(folder, preset, false, usePresetsPlusIncluded, errorHandler);
}

if (allowUserPreset) {
preset = getPresetByName(userConfigurePresets(folder, usePresetsPlusIncluded), name);
async function expandConfigurePresetImpl(folder: string, name: string, allowUserPreset: boolean = false, usePresetsPlusIncluded: boolean = false, errorHandler?: ExpansionErrorHandler, inheritedByPreset?: ConfigurePreset): Promise<ConfigurePreset | null> {
const presetList = inheritedByPreset ? inheritedByPreset.__file!.configurePresets : configurePresets(folder, usePresetsPlusIncluded);
const validInherit = presetList !== undefined && presetList.filter(p => p.name === name).length > 0;
if (validInherit) {
let preset = getPresetByName(configurePresets(folder, usePresetsPlusIncluded), name);
if (preset) {
return expandConfigurePresetHelper(folder, preset, true, usePresetsPlusIncluded, errorHandler);
return expandConfigurePresetHelper(folder, preset, false, usePresetsPlusIncluded, errorHandler);
}

if (allowUserPreset) {
preset = getPresetByName(userConfigurePresets(folder, usePresetsPlusIncluded), name);
if (preset) {
return expandConfigurePresetHelper(folder, preset, true, usePresetsPlusIncluded, errorHandler);
}
}
}

Expand Down Expand Up @@ -1195,7 +1199,7 @@ async function expandConfigurePresetHelper(folder: string, preset: ConfigurePres
preset.inherits = [preset.inherits];
}
for (const parentName of preset.inherits) {
const parent = await expandConfigurePresetImpl(folder, parentName, allowUserPreset, usePresetsPlusIncluded, errorHandler);
const parent = await expandConfigurePresetImpl(folder, parentName, allowUserPreset, usePresetsPlusIncluded, errorHandler, preset);
if (parent) {
// Inherit environment
inheritedEnv = EnvironmentUtils.mergePreserveNull([parent.environment, inheritedEnv]);
Expand Down Expand Up @@ -1530,29 +1534,33 @@ export async function expandBuildPreset(folder: string, name: string, workspaceF
return expandedPreset;
}

async function expandBuildPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, parallelJobs?: number, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler): Promise<BuildPreset | null> {
let preset = getPresetByName(buildPresets(folder), name);
if (preset) {
return expandBuildPresetHelper(folder, preset, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, false, enableTryApplyDevEnv, errorHandler);
}

if (allowUserPreset) {
preset = getPresetByName(userBuildPresets(folder), name);
async function expandBuildPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, parallelJobs?: number, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler, inheritedByPreset?: BuildPreset): Promise<BuildPreset | null> {
const presetList = inheritedByPreset ? inheritedByPreset.__file!.buildPresets : buildPresets(folder);
const validInherit = presetList !== undefined && presetList.filter(p => p.name === name).length > 0;
if (validInherit) {
let preset = getPresetByName(buildPresets(folder), name);
if (preset) {
return expandBuildPresetHelper(folder, preset, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
return expandBuildPresetHelper(folder, preset, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, false, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultBuildPreset.name) {
// Construct the default build preset every time since it should NOT be cached
preset = {
name: defaultBuildPreset.name,
displayName: defaultBuildPreset.displayName,
description: defaultBuildPreset.description,
jobs: parallelJobs || defaultNumJobs(),
configurePreset
};
return expandBuildPresetHelper(folder, preset, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
if (allowUserPreset) {
preset = getPresetByName(userBuildPresets(folder), name);
if (preset) {
return expandBuildPresetHelper(folder, preset, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultBuildPreset.name) {
// Construct the default build preset every time since it should NOT be cached
preset = {
name: defaultBuildPreset.name,
displayName: defaultBuildPreset.displayName,
description: defaultBuildPreset.description,
jobs: parallelJobs || defaultNumJobs(),
configurePreset
};
return expandBuildPresetHelper(folder, preset, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
}
}

log.error(localize('build.preset.not.found.full', 'Could not find build preset with name {0}', name));
Expand Down Expand Up @@ -1590,7 +1598,7 @@ async function expandBuildPresetHelper(folder: string, preset: BuildPreset, work
preset.inherits = [preset.inherits];
}
for (const parentName of preset.inherits) {
const parent = await expandBuildPresetImpl(folder, parentName, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, allowUserPreset, undefined, enableTryApplyDevEnv, errorHandler);
const parent = await expandBuildPresetImpl(folder, parentName, workspaceFolder, sourceDir, parallelJobs, preferredGeneratorName, allowUserPreset, undefined, enableTryApplyDevEnv, errorHandler, preset);
if (parent) {
// Inherit environment
inheritedEnv = EnvironmentUtils.mergePreserveNull([parent.environment, inheritedEnv]);
Expand Down Expand Up @@ -1727,28 +1735,32 @@ export async function expandTestPreset(folder: string, name: string, workspaceFo
return expandedPreset;
}

async function expandTestPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler): Promise<TestPreset | null> {
let preset = getPresetByName(testPresets(folder), name);
if (preset) {
return expandTestPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, false, enableTryApplyDevEnv, errorHandler);
}

if (allowUserPreset) {
preset = getPresetByName(userTestPresets(folder), name);
async function expandTestPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler, inheritedByPreset?: TestPreset): Promise<TestPreset | null> {
const presetList = inheritedByPreset ? inheritedByPreset.__file!.testPresets : testPresets(folder);
const validInherit = presetList !== undefined && presetList.filter(p => p.name === name).length > 0;
if (validInherit) {
let preset = getPresetByName(testPresets(folder), name);
if (preset) {
return expandTestPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
return expandTestPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, false, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultTestPreset.name) {
// Construct the default test preset every time since it should NOT be cached
preset = {
name: defaultTestPreset.name,
displayName: defaultTestPreset.displayName,
description: defaultTestPreset.description,
configurePreset
};
return expandTestPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
if (allowUserPreset) {
preset = getPresetByName(userTestPresets(folder), name);
if (preset) {
return expandTestPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultTestPreset.name) {
// Construct the default test preset every time since it should NOT be cached
preset = {
name: defaultTestPreset.name,
displayName: defaultTestPreset.displayName,
description: defaultTestPreset.description,
configurePreset
};
return expandTestPresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
}
}

log.error(localize('test.preset.not.found.full', 'Could not find test preset with name {0}', name));
Expand Down Expand Up @@ -1784,7 +1796,7 @@ async function expandTestPresetHelper(folder: string, preset: TestPreset, worksp
preset.inherits = [preset.inherits];
}
for (const parentName of preset.inherits) {
const parent = await expandTestPresetImpl(folder, parentName, workspaceFolder, sourceDir, preferredGeneratorName, allowUserPreset, undefined, false, errorHandler);
const parent = await expandTestPresetImpl(folder, parentName, workspaceFolder, sourceDir, preferredGeneratorName, allowUserPreset, undefined, false, errorHandler, preset);
if (parent) {
// Inherit environment
inheritedEnv = EnvironmentUtils.mergePreserveNull([parent.environment, inheritedEnv]);
Expand Down Expand Up @@ -1865,28 +1877,32 @@ export async function expandPackagePreset(folder: string, name: string, workspac
return expandedPreset;
}

async function expandPackagePresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler): Promise<PackagePreset | null> {
let preset = getPresetByName(packagePresets(folder), name);
if (preset) {
return expandPackagePresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, false, enableTryApplyDevEnv, errorHandler);
}

if (allowUserPreset) {
preset = getPresetByName(userPackagePresets(folder), name);
async function expandPackagePresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, preferredGeneratorName?: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler, inheritedByPreset?: PackagePreset): Promise<PackagePreset | null> {
const presetList = inheritedByPreset ? inheritedByPreset.__file!.packagePresets : packagePresets(folder);
const validInherit = presetList !== undefined && presetList.filter(p => p.name === name).length > 0;
if (validInherit) {
let preset = getPresetByName(packagePresets(folder), name);
if (preset) {
return expandPackagePresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
return expandPackagePresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, false, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultPackagePreset.name) {
// Construct the default package preset every time since it should NOT be cached
preset = {
name: defaultPackagePreset.name,
displayName: defaultPackagePreset.displayName,
description: defaultPackagePreset.description,
configurePreset
};
return expandPackagePresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
if (allowUserPreset) {
preset = getPresetByName(userPackagePresets(folder), name);
if (preset) {
return expandPackagePresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultPackagePreset.name) {
// Construct the default package preset every time since it should NOT be cached
preset = {
name: defaultPackagePreset.name,
displayName: defaultPackagePreset.displayName,
description: defaultPackagePreset.description,
configurePreset
};
return expandPackagePresetHelper(folder, preset, workspaceFolder, sourceDir, preferredGeneratorName, true, enableTryApplyDevEnv, errorHandler);
}
}

log.error(localize('package.preset.not.found.full', 'Could not find package preset with name {0}', name));
Expand Down Expand Up @@ -1922,7 +1938,7 @@ async function expandPackagePresetHelper(folder: string, preset: PackagePreset,
preset.inherits = [preset.inherits];
}
for (const parentName of preset.inherits) {
const parent = await expandPackagePresetImpl(folder, parentName, workspaceFolder, sourceDir, preferredGeneratorName, allowUserPreset, undefined, enableTryApplyDevEnv, errorHandler);
const parent = await expandPackagePresetImpl(folder, parentName, workspaceFolder, sourceDir, preferredGeneratorName, allowUserPreset, undefined, enableTryApplyDevEnv, errorHandler, preset);
if (parent) {
// Inherit environment
inheritedEnv = EnvironmentUtils.mergePreserveNull([parent.environment, inheritedEnv]);
Expand Down Expand Up @@ -1986,33 +2002,37 @@ export async function expandWorkflowPreset(folder: string, name: string, workspa
return expandedPreset;
}

async function expandWorkflowPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler): Promise<WorkflowPreset | null> {
let preset = getPresetByName(workflowPresets(folder), name);
if (preset) {
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, false, enableTryApplyDevEnv, errorHandler);
}

if (allowUserPreset) {
preset = getPresetByName(userWorkflowPresets(folder), name);
async function expandWorkflowPresetImpl(folder: string, name: string, workspaceFolder: string, sourceDir: string, allowUserPreset: boolean = false, configurePreset?: string, enableTryApplyDevEnv: boolean = true, errorHandler?: ExpansionErrorHandler, inheritedByPreset?: WorkflowPreset): Promise<WorkflowPreset | null> {
const presetList = inheritedByPreset ? inheritedByPreset.__file!.workflowPresets : workflowPresets(folder);
const validInherit = presetList !== undefined && presetList.filter(p => p.name === name).length > 0;
if (validInherit) {
let preset = getPresetByName(workflowPresets(folder), name);
if (preset) {
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, true, enableTryApplyDevEnv, errorHandler);
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, false, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultWorkflowPreset.name) {
// Construct the default workflow preset every time since it should NOT be cached
preset = {
name: defaultWorkflowPreset.name,
displayName: defaultWorkflowPreset.displayName,
description: defaultWorkflowPreset.description,
steps: [
{
type: "Configure",
name: configurePreset ? configurePreset : "_placeholder_configure_preset_"
}
]
};
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, true, enableTryApplyDevEnv, errorHandler);
if (allowUserPreset) {
preset = getPresetByName(userWorkflowPresets(folder), name);
if (preset) {
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, true, enableTryApplyDevEnv, errorHandler);
}
}

if (name === defaultWorkflowPreset.name) {
// Construct the default workflow preset every time since it should NOT be cached
preset = {
name: defaultWorkflowPreset.name,
displayName: defaultWorkflowPreset.displayName,
description: defaultWorkflowPreset.description,
steps: [
{
type: "Configure",
name: configurePreset ? configurePreset : "_placeholder_configure_preset_"
}
]
};
return expandWorkflowPresetHelper(folder, preset, workspaceFolder, sourceDir, true, enableTryApplyDevEnv, errorHandler);
}
}

log.error(localize('workflow.preset.not.found', 'Could not find workflow preset with name {0}', name));
Expand Down
Loading