Class: Gush::CLI

Inherits:
Thor
  • Object
show all
Defined in:
lib/gush/cli.rb,
lib/gush/cli/overview.rb

Defined Under Namespace

Classes: Overview

Instance Method Summary collapse

Constructor Details

#initializeCLI

Returns a new instance of CLI.



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/gush/cli.rb', line 16

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.environment = options.fetch("environment", config.environment)
  end
  load_gushfile
end

Instance Method Details

#clearObject



56
57
58
# File 'lib/gush/cli.rb', line 56

def clear
  Sidekiq::Queue.new(client.configuration.namespace).clear
end

#create(name) ⇒ Object



29
30
31
32
33
# File 'lib/gush/cli.rb', line 29

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) ⇒ Object



43
44
45
46
47
# File 'lib/gush/cli.rb', line 43

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

#listObject



79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/gush/cli.rb', line 79

def list
  workflows = client.all_workflows
  rows = workflows.map do |workflow|
    [workflow.id, workflow.class, {alignment: :center, value: status_for(workflow)}]
  end
  headers = [
    {alignment: :center, value: 'id'},
    {alignment: :center, value: 'name'},
    {alignment: :center, value: 'status'}
  ]
  puts Terminal::Table.new(headings: headers, rows: rows)
end

#rm(workflow_id) ⇒ Object



73
74
75
76
# File 'lib/gush/cli.rb', line 73

def rm(workflow_id)
  workflow = client.find_workflow(workflow_id)
  client.destroy_workflow(workflow)
end

#show(workflow_id) ⇒ Object



64
65
66
67
68
69
70
# File 'lib/gush/cli.rb', line 64

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) ⇒ Object



36
37
38
39
40
# File 'lib/gush/cli.rb', line 36

def start(*args)
  id = args.shift
  workflow = client.find_workflow(id)
  client.start_workflow(workflow, args)
end

#stop(*args) ⇒ Object



50
51
52
53
# File 'lib/gush/cli.rb', line 50

def stop(*args)
  id = args.shift
  client.stop_workflow(id)
end

#viz(name) ⇒ Object



99
100
101
102
103
104
105
106
107
# File 'lib/gush/cli.rb', line 99

def viz(name)
  client
  workflow = name.constantize.new
  workflow.configure
  workflow.resolve_dependencies
  graph = Graph.new(workflow)
  graph.viz
  Launchy.open graph.path
end

#workersObject



93
94
95
96
# File 'lib/gush/cli.rb', line 93

def workers
  config = client.configuration
  Kernel.exec "bundle exec sidekiq -r #{config.gushfile} -c #{config.concurrency} -q #{config.namespace} -e #{config.environment} -v"
end