Module: Docscribe::CLI::ConfigBuilder
- Defined in:
- lib/docscribe/cli/config_builder.rb
Class Method Summary collapse
-
.build(base, options) ⇒ Docscribe::Config
Build an effective config by applying CLI overrides on top of a base config.
Class Method Details
.build(base, options) ⇒ Docscribe::Config
Note:
module_function: when included, also defines #build (instance visibility: private)
Build an effective config by applying CLI overrides on top of a base config.
CLI overrides currently affect:
-
method/file include and exclude filters
-
RBS enablement and additional signature directories
-
Sorbet enablement and RBI directories
If no relevant CLI override is present, the original config is returned unchanged.
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 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/docscribe/cli/config_builder.rb', line 23 def build(base, ) needs_override = [:include].any? || [:exclude].any? || [:include_file].any? || [:exclude_file].any? || [:rbs] || [:rbs_collection] || [:sig_dirs].any? || [:sorbet] || [:rbi_dirs].any? return base unless needs_override raw = Marshal.load(Marshal.dump(base.raw)) raw['filter'] ||= {} raw['filter']['include'] = Array(raw['filter']['include']) + [:include] raw['filter']['exclude'] = Array(raw['filter']['exclude']) + [:exclude] raw['filter']['files'] ||= {} raw['filter']['files']['include'] = Array(raw['filter']['files']['include']) + [:include_file] raw['filter']['files']['exclude'] = Array(raw['filter']['files']['exclude']) + [:exclude_file] if [:rbs] || [:sig_dirs].any? raw['rbs'] ||= {} raw['rbs']['enabled'] = true raw['rbs']['sig_dirs'] = Array(raw['rbs']['sig_dirs']) + [:sig_dirs] if [:sig_dirs].any? if [:rbs_collection] require 'docscribe/types/rbs/collection_loader' collection_path = Docscribe::Types::RBS::CollectionLoader.resolve if collection_path raw['rbs']['sig_dirs'] = Array(raw['rbs']['sig_dirs']) + [collection_path] else warn 'Docscribe: rbs_collection.lock.yaml not found or collection not installed. ' \ 'Run `bundle exec rbs collection install` first.' end end end if [:sorbet] || [:rbi_dirs].any? raw['sorbet'] ||= {} raw['sorbet']['enabled'] = true raw['sorbet']['rbi_dirs'] = Array(raw['sorbet']['rbi_dirs']) + [:rbi_dirs] if [:rbi_dirs].any? end Docscribe::Config.new(raw) end |