Class: Mxrb::CLI::Updater

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/cli/release.rb

Overview

Installs a published release while refusing to overwrite a source checkout.

Instance Method Summary collapse

Constructor Details

#initialize(releases: Releases.new, runner: Kernel.method(:system), source_root: nil, env: ENV) ⇒ Updater

Returns a new instance of Updater.



107
108
109
110
111
112
# File 'lib/mxrb/cli/release.rb', line 107

def initialize(releases: Releases.new, runner: Kernel.method(:system), source_root: nil, env: ENV)
  @releases = releases
  @runner = runner
  @source_root = source_root || File.expand_path('../../..', __dir__)
  @env = env
end

Instance Method Details

#update!Object

Raises:



114
115
116
117
118
119
120
121
122
123
124
# File 'lib/mxrb/cli/release.rb', line 114

def update!
  status = @releases.status(force: true)
  raise ReleaseError, 'Could not check the latest published MXRB version' unless status.latest
  return status unless status.available?
  raise ReleaseError, checkout_message if source_checkout?

  command = bundled? ? %w[bundle update mxrb] : [RbConfig.ruby, '-S', 'gem', 'update', 'mxrb', '--no-document']
  raise ReleaseError, "Update command failed: #{command.join(' ')}" unless @runner.call(*command)

  status
end