Class: SpaceArchitect::CLI::Repo::Add

Inherits:
Dry::CLI::Command
  • Object
show all
Includes:
GlobalOptions, Helpers
Defined in:
lib/space_architect/cli/repo.rb

Instance Method Summary collapse

Methods included from Helpers

#display_date, #handle_errors, #project_config, #render, #setup_terminal, #state, #store, #terminal

Methods included from GlobalOptions

included

Instance Method Details

#call(repos: [], **opts) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/space_architect/cli/repo.rb', line 13

def call(repos: [], **opts)
  setup_terminal(**opts.slice(:color, :colors))
  handle_errors do
    specs = Array(repos).compact
    if specs.empty?
      terminal.error("Usage: space repo add REPO [REPO...]")
      CLI.record_outcome(Outcome.new(exit_code: 1))
      next
    end

    progress = RepoProgress.new(specs.length)
    add_result = terminal.with_spinner(-> { progress.message }) do
      store.add_repos(specs, reporter: progress)
    end
    render(add_result) do |results|
      results.each do |result|
        terminal.success "Added #{result.fetch(:repo).fetch('full_name')}"
        terminal.say terminal.path(result.fetch(:path))
      end
      CLI.record_outcome(Outcome.new(exit_code: 0))
    end
  end
end