require 'thor' require_relative 'executor' require_relative 'decorators/string_decorator' require_relative 'features/rbenv' require_relative 'features/gem' require_relative 'features/vcs' require_relative 'features/os' require_relative 'features/fs' require_relative 'commands/gem' module Autowow class CLI < Thor include EasyLogging map %w[bm] => :branch_merged map %w[grls] => :gem_release map %w[up] => :update_projects map %w[cb] => :clear_branches map %w[au] => :add_upstream map %w[gc] => :gem_clean map %w[rv] => :ruby_versions map %w[gr] => :greet map %w[rpa] => :rubocop_parallel_autocorrect desc "branch_merged", "clean working branch and return to master" def branch_merged Autowow::Features::Vcs.branch_merged end desc "gem_release", "release gem and return to master" def gem_release Autowow::Features::Gem.gem_release end desc "update_projects", "updates idle projects" def update_projects Autowow::Features::Vcs.update_projects end desc "clear_branches", "removes unused branches" def clear_branches Autowow::Features::Vcs.clear_branches end desc "add_upstream", "adds upstream branch if available" def add_upstream Autowow::Features::Vcs.add_upstream end desc "hi", "day starter routine" def hi Autowow::Features::Vcs.hi end desc "hi!", "day starter routine for a new start" def hi! Autowow::Features::Vcs.hi! end desc "open", "opens project URL in browser" def open Autowow::Features::Vcs.open end desc "gem_clean", "cleans unused gems" def gem_clean Autowow::Features::Gem.gem_clean end desc "ruby_versions", "shows ruby versions in use" def ruby_versions Autowow::Features::Rbenv.ruby_versions end desc "greet", "shows report of repos" def greet Autowow::Features::Vcs.greet end desc "rubocop_parallel_autocorrect", "runs rubocop in parallel mode, autocorrects offenses on single thread" def rubocop_parallel_autocorrect logger.warn('Experimental feature, in practice it is not faster than running `rubocop -a`!') Autowow::Features::Gem.rubocop_parallel_autocorrect end desc "exec", "runs command" def exec(*cmd) Autowow::Executor.pretty_with_output.run(cmd) end end end