Sha256: d9a259a06200670f92dfb48046375e9f892c2c0d46a74aa74b8f40c537882adb

Contents?: true

Size: 1.15 KB

Versions: 1

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Githuh
  module CLI
    module Commands
      DEFAULT_PAGE_SIZE = 50

      class Base < Dry::CLI::Command
        class << self
          def inherited(base)
            super
            base.instance_eval do
              option :api_token, required: false, desc: "Github API token; if not given, user.token is read from ~/.gitconfig"
              option :per_page, required: false, default: DEFAULT_PAGE_SIZE, desc: "Pagination page size for Github API"
              option :verbose, type: :boolean, default: true, desc: 'Print verbose info'

            end
          end
        end

        attr_accessor :client, :token, :per_page, :verbose

        def call(api_token: nil,
                 per_page: DEFAULT_PAGE_SIZE,
                 verbose: true)

          self.verbose  = verbose
          self.token    = api_token || token_from_gitconfig
          self.per_page = per_page || DEFAULT_PAGE_SIZE
          self.client   = Octokit::Client.new(access_token: token)
        end

        private

        def token_from_gitconfig
          `git config --global --get user.token`.chomp
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
githuh-0.1.0 lib/githuh/cli/commands/base.rb