kt-extendscript-builder
Version:
Vite based builder for transpile TypeScript to ExtendScript
75 lines (74 loc) • 2.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OptionsResolver = void 0;
const types_1 = require("../../types");
const OptionsRuleResolver_1 = require("./OptionsRuleResolver");
const OptionsPresetsResolver_1 = require("./OptionsPresetsResolver");
/**
* Manages the resolution of build options by merging defaults, presets, config files, and CLI arguments.
*
* The OptionsResolver determines the final build configuration based on:
* - Default build options
* - Named presets (if specified)
* - Configuration file arguments
* - Command-line arguments
*
* The priority of these sources can be controlled with the 'priority' flag. This flag only applies to the CLI arguments.
*/
class OptionsResolver {
constructor() {
/**
* Collection of predefined option configurations that can be referenced by name
* @private
*/
this.presets = {};
}
/**
* Resolves the final build options by merging various sources
*
* @param cliArgs - Command line arguments provided when running the build
* @param configFileArgs - Arguments loaded from a configuration file
* @returns Merged build options with all rules applied
*/
resolve(cliArgs, configFileArgs) {
let options = { ...types_1.defaultBuildOptions, ...this.resolvePreset(cliArgs.preset) };
const defaultPreset = this.resolvePreset('default');
// let testMode;
// if (cliArgs.test) {
// testMode = true;
// }
const priority = cliArgs.priority.toLowerCase() || 'cli';
if (priority === 'cli') {
options = { ...defaultPreset, ...options, ...configFileArgs, ...cliArgs };
}
else {
options = { ...defaultPreset, ...options, ...cliArgs, ...configFileArgs };
}
// options.test = testMode;
options = this.resolveRules(options);
return options;
}
/**
* Applies additional transformation rules to the resolved options
*
* @param options - Partially resolved build options
* @returns Build options after applying all transformation rules
*/
resolveRules(options) {
const resolver = new OptionsRuleResolver_1.OptionsRuleResolver();
const preset = resolver.resolve({ ...options });
return preset;
}
/**
* Retrieves a preset configuration by name
*
* @param presetName - Name of the preset to retrieve
* @returns The preset's build options or undefined if not found
*/
resolvePreset(presetName) {
const resolver = new OptionsPresetsResolver_1.OptionsPresetsResolver();
const preset = resolver.resolvePreset(presetName);
return preset;
}
}
exports.OptionsResolver = OptionsResolver;