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