UNPKG

kt-extendscript-builder

Version:

Vite based builder for transpile TypeScript to ExtendScript

75 lines (74 loc) 2.81 kB
"use strict"; 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;