export async function loadRunConfig()

in src/utils/configUtils.ts [12:44]


export async function loadRunConfig(workspaceFolder: WorkspaceFolder): Promise<IExecutionConfig | undefined> {
    const configSetting: IExecutionConfig[] | IExecutionConfig = workspace.getConfiguration(undefined, workspaceFolder.uri).get<IExecutionConfig[] | IExecutionConfig>(Configurations.CONFIG_SETTING_KEY, {});
    const configItems: IExecutionConfig[] = [];
    if (!_.isEmpty(configSetting)) {
        if (_.isArray(configSetting)) {
            configItems.push(...configSetting);
        } else if (_.isPlainObject(configSetting)) {
            configItems.push(configSetting);
        }
    }

    const defaultConfigName: string | undefined = workspace.getConfiguration(undefined, workspaceFolder.uri).get<string>(Configurations.DEFAULT_CONFIG_NAME_SETTING_KEY);
    if (defaultConfigName) {
        if (defaultConfigName === Configurations.BUILTIN_CONFIG_NAME) {
            sendInfo('', { usingDefaultConfig: 1 });
            return getBuiltinConfig();
        }

        const defaultConfigs: IExecutionConfig[] = configItems.filter((config: IExecutionConfig) => {
            return config.name === defaultConfigName;
        });
        if (defaultConfigs.length === 0) {
            window.showWarningMessage(`Failed to find the default configuration item: ${defaultConfigName}, use the empty configuration instead.`);
            return {};
        } else if (defaultConfigs.length > 1) {
            window.showWarningMessage(`More than one configuration item found with name: ${defaultConfigName}, use the empty configuration instead.`);
            return {};
        } else {
            return defaultConfigs[0];
        }
    }
    return await selectQuickPick(configItems, workspaceFolder);
}