class Morpheus::Cli::UpdateCommand

This is for use in dotfile scripts and the shell..

Public Instance Methods

handle(args) click to toggle source
# File lib/morpheus/cli/commands/update_command.rb, line 8
def handle(args)
  options = {}
  optparse = Morpheus::Cli::OptionParser.new do|opts|
    opts.banner = "Usage: morpheus #{command_name}"
    opts.on( '-f', '--force', "Force Update, executes update even if latest version is already installed." ) do
      options[:force] = true
    end
    build_common_options(opts, options, [:dry_run, :quiet])
    opts.footer = "This will update the morpheus command line interface to the latest version.\nThis is done by executing the system command: `gem update #{morpheus_gem_name}`"
  end
  optparse.parse!(args)
  verify_args!(args:args, optparse:optparse, count:0)

  current_version = Morpheus::Cli::VERSION
  latest_version = get_latest_version()
  latest_version = latest_version
  
  if current_version == latest_version && !options[:force]
    unless options[:quiet]
      print cyan, "The latest version is already installed. (#{latest_version})", "\n", reset
    end
    return 0, nil
  end

  unless options[:yes] || Morpheus::Cli::OptionTypes.confirm("Are you sure you want to update the #{morpheus_gem_name} gem from version #{current_version} to version #{latest_version}?")
    return 9, "aborted command"
  end

  gem_update_command = "gem update #{morpheus_gem_name}"

  if options[:dry_run]
    unless options[:quiet]
      print "\n"
      print "#{cyan}#{bold}#{dark}COMMAND#{reset}\n"
      puts gem_update_command
      print "\n", reset
    end
    return 0, nil
  end
  
  # ok, update it
  if options[:quiet]
    system(gem_update_command)
  else
    `#{gem_update_command}`
  end

  if $?.success?
    return 0, nil
  else
    return $?.exitstatus, "update failed"
  end

end

Protected Instance Methods

get_latest_version() click to toggle source
# File lib/morpheus/cli/commands/update_command.rb, line 69
def get_latest_version
  result = HTTP.get("https://rubygems.org/api/v1/gems/#{morpheus_gem_name}.json")
  json_response = JSON.parse(result.body)
  json_response["version"]
end
morpheus_gem_name() click to toggle source
# File lib/morpheus/cli/commands/update_command.rb, line 65
def morpheus_gem_name
  'morpheus-cli'
end