require 'thor' require 'yaml' module Rmd class FileNotFound < StandardError; end class Cli < Thor CONFIG_PATH = './creds.yml' include Thor::Actions class << self def load_config fail(FileNotFound, 'Creds file not found. Ask DucLe for it') unless File.file?(CONFIG_PATH) config = YAML.load_file(File.expand_path(CONFIG_PATH)) Configure.set(config) end end desc 'deploy', 'Deploy to a server' method_option :server, aliases: '-s', desc: 'Server name', type: :string, required: true method_option :skip_assets, aliases: '-a', desc: 'Skip precompile assets', type: :boolean, default: false def deploy Cli.load_config DeployService.deploy(options[:server], options[:skip_assets]) rescue Exception => e $stdout.puts(e.message) end desc 'restart', 'Restart a server' method_option :server, aliases: '-s', desc: 'Server name', type: :string, required: true def restart Cli.load_config DeployService.restart(options[:server]) rescue Exception => e $stdout.puts(e.message) end desc 'logs', 'Logs of servers' method_option :server, aliases: '-s', desc: 'Server name', type: :string, required: true def logs Cli.load_config DeployService.logs(options[:server]) rescue Exception => e $stdout.puts(e.message) end desc 'nginx', 'Logs of the nginx server' method_option :server, aliases: '-s', desc: 'Server name', type: :string, required: true method_option :type, aliases: '-t', desc: "Type of log: #{TYPE}", type: :string, required: true def nginx Cli.load_config DeployService.nginx(options[:server], options[:type]) rescue Exception => e $stdout.puts(e.message) end desc 'bash', 'Bash of servers' method_option :server, aliases: '-s', desc: 'Server name', type: :string, required: true def bash Cli.load_config DeployService.bash(options[:server]) rescue Exception => e $stdout.puts(e.message) end desc 'config', 'Config of servers. You are expected to be familiar with VIM to edit the config' method_option :server, aliases: '-s', desc: 'Server name', type: :string, required: true def config Cli.load_config DeployService.config(options[:server]) rescue Exception => e $stdout.puts(e.message) end end end