Sha256: da15cff3a75553a28bbbadb2c90a9fba54d5aa97f75cf3cff36059b0df5cca25

Contents?: true

Size: 1.62 KB

Versions: 2

Compression:

Stored size: 1.62 KB

Contents

require 'thor'

module GithubStatusNotifier
  class CLI < Thor
    def self.exit_on_failure?
      true
    end

    desc 'version', 'Show the GithubStatusNotifier version'
    map %w(-v --version) => :version

    def version
      puts "GithubStatusNotifier version #{::GithubStatusNotifier::VERSION}"
    end

    desc 'notify', 'Notify current state to GitHub status'
    option :exit_status, type: :numeric
    option :keep_exit_status, type: :boolean, default: false
    option :debug, type: :boolean, default: false
    option :verbose, type: :boolean, default: false
    option :state, type: :string, enum: Notifier::ALLOWED_STATUS
    option :target_url, type: :string
    option :description, type: :string
    option :context, type: :string, default: Notifier::CONTEXT
    def notify
      if options[:debug]
        logger.level = Logger::DEBUG
      elsif options[:verbose]
        logger.level = Logger::INFO
      end
      logger.debug(options.inspect)
      if options[:keep_exit_status] && !options[:exit_status]
        fail ArgumentError, 'keep-exit-status requires exit-status'
      end

      params = {
        state: options[:state],
        exit_status: options[:exit_status],
        target_url: options[:target_url],
        description: options[:description],
        context: options[:context]
      }

      Notifier.new.notify(params)

      if options[:keep_exit_status]
        exit options[:exit_status]
      end
    rescue StandardError => e
      logger.error 'options:'
      logger.error options
      raise e
    end

    no_commands do
      def logger
        ::GithubStatusNotifier.logger
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
github_status_notifier-1.0.0 lib/github_status_notifier/cli.rb
github_status_notifier-0.1.2 lib/github_status_notifier/cli.rb