require "thor" module Boty class CLI < Thor include Thor::Actions class_option :verbose, type: :boolean, default: true, aliases: "-v" attr_reader :bot_name, :company, :api_key source_root File.expand_path("../../../template", __FILE__) no_commands do def compile(bot_name = "lib/boty") @bot_name = "lib/boty" template "project/bot.tt", "bin/bot" run "chmod +x bin/bot" end end desc "new [BOT_NAME]", "Creates a BOT_NAME dir with your new bot structure." def new(bot_name) @bot_name = bot_name acquire_bot_info directory "project", bot_name, verbose: verbose after_create end private def verbose options[:verbose] end def acquire_bot_info @company = ask("What is your Slack company name?") || "acme" @api_key = ask("What is the #{@bot_name} api key?") || "omg-lol-bbq" end def after_create inside @bot_name do run "chmod +x bot" run "bundle install" end end end end