Module: Pindo::Options::OptionInitializer
- Defined in:
- lib/pindo/options/core/option_initializer.rb
Overview
参数初始化器提供统一的参数初始化流程:解析 → 配置 → 注册
Class Method Summary collapse
Class Method Details
.initialize(command_instance, argv, option_items, command_name, directory: nil, enable_cache: false) ⇒ OptionConfiguration
初始化命令参数
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/pindo/options/core/option_initializer.rb', line 19 def self.initialize(command_instance, argv, option_items, command_name, directory: nil, enable_cache: false) # 1. 解析参数值(从命令行和环境变量) raw_values = OptionValueParser.parse(argv, option_items) # 2. 如果启用缓存,合并缓存值到 raw_values if enable_cache state = GlobalOptionsState.instance state.prepare_cache(command_name, directory || Dir.pwd) cached_values = state.load_cached_values # 缓存值优先级:命令行参数 > 缓存 > 默认值 # 只有在命令行未提供的参数才使用缓存 cached_values.each do |key, value| raw_values[key] = value unless raw_values.key?(key) end end # 3. 创建参数配置(自动处理验证等,传入命令实例用于 value_block) = OptionConfiguration.new(option_items, raw_values, command_instance: command_instance) # 4. 设置全局状态 GlobalOptionsState.instance.set_command( command_name, , directory: directory || Dir.pwd, enable_cache: enable_cache ) end |