class Gush::CLI

Public Class Methods

new(*) click to toggle source
Calls superclass method
# File lib/gush/cli.rb, line 12
def initialize(*)
  super
  Gush.configure do |config|
    config.gushfile    = options.fetch("gushfile",    config.gushfile)
    config.concurrency = options.fetch("concurrency", config.concurrency)
    config.redis_url   = options.fetch("redis",       config.redis_url)
    config.namespace   = options.fetch("namespace",   config.namespace)
    config.ttl         = options.fetch("ttl",         config.ttl)
  end
  load_gushfile
end

Public Instance Methods

create(name) click to toggle source
# File lib/gush/cli.rb, line 25
def create(name)
  workflow = client.create_workflow(name)
  puts "Workflow created with id: #{workflow.id}"
  puts "Start it with command: gush start #{workflow.id}"
end
create_and_start(name, *args) click to toggle source
# File lib/gush/cli.rb, line 39
def create_and_start(name, *args)
  workflow = client.create_workflow(name)
  client.start_workflow(workflow.id, args)
  puts "Created and started workflow with id: #{workflow.id}"
end
list() click to toggle source
# File lib/gush/cli.rb, line 70
def list
  workflows = client.all_workflows
  rows = workflows.map do |workflow|
    [workflow.id, (Time.at(workflow.started_at) if workflow.started_at), workflow.class, {alignment: :center, value: status_for(workflow)}]
  end
  headers = [
    {alignment: :center, value: 'id'},
    {alignment: :center, value: 'started at'},
    {alignment: :center, value: 'name'},
    {alignment: :center, value: 'status'}
  ]
  puts Terminal::Table.new(headings: headers, rows: rows)
end
rm(workflow_id) click to toggle source
# File lib/gush/cli.rb, line 64
def rm(workflow_id)
  workflow = client.find_workflow(workflow_id)
  client.destroy_workflow(workflow)
end
show(workflow_id) click to toggle source
# File lib/gush/cli.rb, line 55
def show(workflow_id)
  workflow = client.find_workflow(workflow_id)

  display_overview_for(workflow) unless options[:skip_overview]

  display_jobs_list_for(workflow, options[:jobs]) unless options[:skip_jobs]
end
start(*args) click to toggle source
# File lib/gush/cli.rb, line 32
def start(*args)
  id = args.shift
  workflow = client.find_workflow(id)
  client.start_workflow(workflow, args)
end
stop(*args) click to toggle source
# File lib/gush/cli.rb, line 46
def stop(*args)
  id = args.shift
  client.stop_workflow(id)
end
viz(name) click to toggle source
# File lib/gush/cli.rb, line 85
def viz(name)
  client
  workflow = name.constantize.new
  graph = Graph.new(workflow)
  graph.viz
  Launchy.open graph.path
end

Private Instance Methods

client() click to toggle source
# File lib/gush/cli.rb, line 95
def client
  @client ||= Client.new
end
display_jobs_list_for(workflow, jobs) click to toggle source
# File lib/gush/cli.rb, line 111
def display_jobs_list_for(workflow, jobs)
  puts overview(workflow).jobs_list(jobs)
end
display_overview_for(workflow) click to toggle source
# File lib/gush/cli.rb, line 103
def display_overview_for(workflow)
  puts overview(workflow).table
end
gushfile() click to toggle source
# File lib/gush/cli.rb, line 115
def gushfile
  Gush.configuration.gushfile
end
load_gushfile() click to toggle source
# File lib/gush/cli.rb, line 119
def load_gushfile
  file = client.configuration.gushfile
  if !gushfile.exist?
    raise Thor::Error, "#{file} not found, please add it to your project".colorize(:red)
  end

  load file.to_s
rescue LoadError
  raise Thor::Error, "failed to require #{file}".colorize(:red)
end
overview(workflow) click to toggle source
# File lib/gush/cli.rb, line 99
def overview(workflow)
  CLI::Overview.new(workflow)
end
status_for(workflow) click to toggle source
# File lib/gush/cli.rb, line 107
def status_for(workflow)
  overview(workflow).status
end