lib/gush/cli.rb in gush-0.4.1 vs lib/gush/cli.rb in gush-1.0.0
- old
+ new
@@ -1,28 +1,23 @@
require 'terminal-table'
require 'colorize'
require 'thor'
require 'launchy'
-require 'sidekiq'
-require 'sidekiq/api'
module Gush
class CLI < Thor
class_option :gushfile, desc: "configuration file to use", aliases: "-f"
- class_option :concurrency, desc: "concurrency setting for Sidekiq", aliases: "-c"
class_option :redis, desc: "Redis URL to use", aliases: "-r"
class_option :namespace, desc: "namespace to run jobs in", aliases: "-n"
- class_option :env, desc: "Sidekiq environment", aliases: "-e"
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
desc "create [WorkflowClass]", "Registers new workflow"
@@ -50,15 +45,10 @@
def stop(*args)
id = args.shift
client.stop_workflow(id)
end
- desc "clear", "Clears all jobs from Sidekiq queue"
- def clear
- Sidekiq::Queue.new(client.configuration.namespace).clear
- end
-
desc "show [workflow_id]", "Shows details about workflow with given ID"
option :skip_overview, type: :boolean
option :skip_jobs, type: :boolean
option :jobs, default: :all
def show(workflow_id)
@@ -77,26 +67,21 @@
desc "list", "Lists all workflows with their statuses"
def list
workflows = client.all_workflows
rows = workflows.map do |workflow|
- [workflow.id, workflow.class, {alignment: :center, value: status_for(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
- desc "workers", "Starts Sidekiq workers"
- def workers
- config = client.configuration
- Kernel.exec "bundle exec sidekiq -r #{config.gushfile} -c #{config.concurrency} -q #{config.namespace} -e #{config.environment} -v"
- end
-
desc "viz [WorkflowClass]", "Displays graph, visualising job dependencies"
def viz(name)
client
workflow = name.constantize.new
graph = Graph.new(workflow)
@@ -134,10 +119,10 @@
file = client.configuration.gushfile
if !gushfile.exist?
raise Thor::Error, "#{file} not found, please add it to your project".colorize(:red)
end
- require file
+ load file.to_s
rescue LoadError
raise Thor::Error, "failed to require #{file}".colorize(:red)
end
end
end