Class: Shadwire::Commands::Init
- Inherits:
-
Object
- Object
- Shadwire::Commands::Init
- Defined in:
- lib/shadwire/commands/init.rb
Overview
Bootstraps a consuming Rails app: writes shadwire.json, installs the base files, and applies the base gems + the Tailwind @import (confirm-then-apply, auto on yes:). Idempotent on re-run; --force resets shadwire.json.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(root:, registry: nil, yes: false, force: false, json: false, ui: UI.new(yes:), runner: Dependencies::DEFAULT_RUNNER) ⇒ Init
constructor
A new instance of Init.
Constructor Details
#initialize(root:, registry: nil, yes: false, force: false, json: false, ui: UI.new(yes:), runner: Dependencies::DEFAULT_RUNNER) ⇒ Init
Returns a new instance of Init.
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/shadwire/commands/init.rb', line 11 def initialize(root:, registry: nil, yes: false, force: false, json: false, ui: UI.new(yes:), runner: Dependencies::DEFAULT_RUNNER) @root = root.to_s @registry_override = registry @yes = yes @force = force @json = json @ui = ui @runner = runner end |
Instance Method Details
#call ⇒ Object
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 |
# File 'lib/shadwire/commands/init.rb', line 22 def call project = Project.new(@root) project.raise_unless_rails! config = build_config client = RegistryClient.new(config.registry) base = client.index.fetch("base") report = Installer.new(@root, overwrite: :always).install(base.fetch("files")) deps = Dependencies.new(project, runner: @runner) confirm = ->(desc) { @ui.confirm?(desc) } gems = deps.ensure_gems(Array(base["gems"]), yes: @yes, confirm:) tailwind = deps.ensure_tailwind_import( vendor_css_target(config, base), css_entry: config.tailwind_css, yes: @yes, confirm: ) config.save warn_missing_stack(project) result = { config:, report:, gems:, tailwind: } emit(result) Dependencies.raise_on_failure!(gems) result end |