# frozen_string_literal: true require 'thor' require 'phobos/cli/start' module Phobos # @!visibility private module CLI def self.logger @logger ||= Logging.logger[self].tap do |l| l.appenders = [Logging.appenders.stdout] end end # @!visibility private class Commands < ::Thor include Thor::Actions map '-v' => :version map '--version' => :version desc 'version', 'Outputs the version number. Can be used with: phobos -v or phobos --version' def version puts Phobos::VERSION end desc 'init', 'Initialize your project with Phobos' def init copy_file 'config/phobos.yml.example', 'config/phobos.yml' create_file 'phobos_boot.rb' do <<~EXAMPLE # Use this file to load your code puts <<~ART ______ _ _ | ___ \\\\ | | | | |_/ / |__ ___ | |__ ___ ___ | __/| '_ \\\\ / _ \\\\| '_ \\\\ / _ \\\\/ __| | | | | | | (_) | |_) | (_) \\\\__ \\\\ \\\\_| |_| |_|\\\\___/|_.__/ \\\\___/|___/ ART puts "\nphobos_boot.rb - find this file at \#{File.expand_path(__FILE__)}\n\n" EXAMPLE end end desc 'start', 'Starts Phobos' method_option :config, aliases: ['-c'], default: 'config/phobos.yml', banner: 'Configuration file' method_option :boot, aliases: ['-b'], banner: 'File path to load application specific code', default: 'phobos_boot.rb' method_option :listeners, aliases: ['-l'], banner: 'Separate listeners config file (optional)' method_option :skip_config, default: false, type: :boolean, banner: 'Skip config file' def start Phobos::CLI::Start.new(options).execute end def self.source_root File.expand_path(File.join(File.dirname(__FILE__), '../..')) end end end end