Class: Legion::CLI::Update

Inherits:
Thor
  • Object
show all
Defined in:
lib/legion/cli/update_command.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


14
15
16
# File 'lib/legion/cli/update_command.rb', line 14

def self.exit_on_failure?
  true
end

Instance Method Details

#gemsObject



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
# File 'lib/legion/cli/update_command.rb', line 25

def gems
  out = formatter
  gem_bin = File.join(RbConfig::CONFIG['bindir'], 'gem')

  unless File.executable?(gem_bin)
    out.error("Gem binary not found at #{gem_bin}")
    raise SystemExit, 1
  end

  Connection.ensure_settings(resolve_secrets: false)
  Legion::Extensions::GemSource.setup!

  target_gems = discover_legion_gems
  out.header('Checking for updates') unless options[:json]

  before = snapshot_versions(target_gems)
  results = update_gems(target_gems, gem_bin, dry_run: options[:dry_run])
  Gem::Specification.reset unless options[:dry_run]
  after = options[:dry_run] ? before : snapshot_versions(target_gems)

  if options[:json]
    out.json(gems: results, dry_run: options[:dry_run])
  else
    display_results(out, results, before, after)
  end

  cleanup_old_gems(out, target_gems) if options[:cleanup] && !options[:dry_run]
end