Class: Shadwire::Commands::Add
- Inherits:
-
Object
- Object
- Shadwire::Commands::Add
- Defined in:
- lib/shadwire/commands/add.rb
Overview
Installs one or more components and their transitive registry dependencies: writes files (overwrite policy from flags, content-aware prompting), applies the union of gems + importmap pins, and records each named component in shadwire.json.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(root:, names:, yes: false, overwrite: false, no_deps: false, registry: nil, json: false, ui: UI.new(yes:), runner: Dependencies::DEFAULT_RUNNER) ⇒ Add
constructor
A new instance of Add.
Constructor Details
#initialize(root:, names:, yes: false, overwrite: false, no_deps: false, registry: nil, json: false, ui: UI.new(yes:), runner: Dependencies::DEFAULT_RUNNER) ⇒ Add
Returns a new instance of Add.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/shadwire/commands/add.rb', line 10 def initialize(root:, names:, yes: false, overwrite: false, no_deps: false, registry: nil, json: false, ui: UI.new(yes:), runner: Dependencies::DEFAULT_RUNNER) @root = root.to_s @names = names @yes = yes @overwrite = overwrite @no_deps = no_deps @registry_override = registry @json = json @ui = ui @runner = runner end |
Instance Method Details
#call ⇒ Object
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 |
# File 'lib/shadwire/commands/add.rb', line 23 def call project = Project.new(@root) project.raise_unless_rails! config = Config.load(@root) client = RegistryClient.new(@registry_override || config.registry) items = resolve_items(client) files = items.flat_map { |item| item.fetch("files") } report = install_files(files) deps = Dependencies.new(project, runner: @runner) dep_confirm = ->(desc) { @ui.confirm?(desc) } gems = deps.ensure_gems(union(items, "gems"), yes: @yes, confirm: dep_confirm) pins = deps.ensure_importmap_pins(union(items, "importmap"), yes: @yes, confirm: dep_confirm) record_installed(config, client, items) config.save result = { report:, gems:, pins: } emit(result) Dependencies.raise_on_failure!(gems, pins) result end |