Class: Jets::Command::Release

Inherits:
Object
  • Object
show all
Includes:
ApiHelpers
Defined in:
lib/jets/commands/releases/releases_command.rb

Instance Method Summary collapse

Methods included from ApiHelpers

#check_for_error_message!, #no_token_exit!, #paging_params

Constructor Details

#initialize(options = {}) ⇒ Release

Returns a new instance of Release.



13
14
15
# File 'lib/jets/commands/releases/releases_command.rb', line 13

def initialize(options={})
  @options = options
end

Instance Method Details

#format_time(string) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/jets/commands/releases/releases_command.rb', line 56

def format_time(string)
  if string.include?("ago") # IE: 5 minutes ago
    string
  else
    time = Time.parse(string)
    time.in_time_zone(Time.zone)
  end
end

#get(version) ⇒ Object



65
66
67
68
69
70
# File 'lib/jets/commands/releases/releases_command.rb', line 65

def get(version)
  resp = Jets::Api::Release.retrieve(version)
  check_for_error_message!(resp)
rescue Jets::Api::RequestError => e
  puts "ERROR: Unable to get history. #{e.class}: #{e.message}"
end

#listObject



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/jets/commands/releases/releases_command.rb', line 17

def list
  no_token_exit!
  resp = Jets::Api::Stack.retrieve(:current)
  if resp["error"] == "not_found"
    puts "No release history. Stack not found: #{Jets.project_namespace}"
    # Return early and avoid calling Jets::Api::Release.list if stack not found
    # Note: Jets::Api::Release.list also checks for no stack found
    return
  end

  name = "#{resp['name']} #{resp['location']}"
  resp = Jets::Api::Release.list(@options)
  check_for_error_message!(resp) # can also return "Stack not found #{name}" message
  data = resp["data"]
  if data.empty?
    $stderr.puts "No releases found for stack: #{name}"
  else
    $stderr.puts "Releases for stack: #{name}"
    show_items(data)
  end
rescue Jets::Api::RequestError => e
  puts "ERROR: Unable to list history. #{e.class}: #{e.message}"
end

#show_items(items) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/jets/commands/releases/releases_command.rb', line 41

def show_items(items)
  presenter = CliFormat::Presenter.new
  presenter.header = ["Version", "Status", "Released At", "Message"]
  items.each do |item|
    version = item["version"]
    status = item["stack_status"]
    released_at = item["pretty_created_at"] || item["created_at"]
    message = item["message"] || "Deployed"

    row = [version, status, format_time(released_at), message]
    presenter.rows << row
  end
  presenter.show
end