geet 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/geet +4 -0
- data/geet.gemspec +1 -1
- data/lib/geet/commandline/commands.rb +1 -0
- data/lib/geet/commandline/configuration.rb +6 -0
- data/lib/geet/git/repository.rb +4 -0
- data/lib/geet/github/abstract_issue.rb +2 -0
- data/lib/geet/github/label.rb +23 -1
- data/lib/geet/gitlab/label.rb +13 -1
- data/lib/geet/services/create_issue.rb +5 -3
- data/lib/geet/services/create_label.rb +30 -0
- data/lib/geet/services/create_pr.rb +5 -3
- data/lib/geet/services/list_labels.rb +1 -1
- data/lib/geet/version.rb +1 -1
- data/spec/integration/create_label_spec.rb +54 -0
- data/spec/integration/list_issues_spec.rb +53 -28
- data/spec/integration/list_labels_spec.rb +20 -16
- data/spec/vcr_cassettes/create_label.yml +80 -0
- data/spec/vcr_cassettes/create_label_with_random_color.yml +80 -0
- data/spec/vcr_cassettes/{list_issues.yml → github_com/list_issues.yml} +0 -0
- data/spec/vcr_cassettes/{list_issues_upstream.yml → github_com/list_issues_upstream.yml} +0 -0
- data/spec/vcr_cassettes/gitlab_com/list_issues.yml +84 -0
- metadata +10 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: cc8920121911b4f4ce4fe3d0d090be3bef017587
         | 
| 4 | 
            +
              data.tar.gz: 5a85cb49ef2e87aef1fb930e314c83042b3b2abd
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: d0a8ca5e66586a583c84e7113fef8e83e1e0897f9ab07f04bf0cf7cc4545d16f83ae43acbbef4e079255fd5233a3330b007d2a0e1b89fe85171f3075af260265
         | 
| 7 | 
            +
              data.tar.gz: 617080f5cce9ddd914aaca259f68aee020251b5157bf352dd736d24e27555c72d6a13527a8698a3ffe3c78d594e42e2ad7dbbdc8e3aae589d277b132dc9f9693
         | 
    
        data/bin/geet
    CHANGED
    
    | @@ -29,6 +29,10 @@ class GeetLauncher | |
| 29 29 | 
             
                  options[:milestone_pattern] = options.delete(:milestone) if options.key?(:milestone)
         | 
| 30 30 |  | 
| 31 31 | 
             
                  Services::CreateIssue.new.execute(repository, title, description, options)
         | 
| 32 | 
            +
                when LABEL_CREATE_COMMAND
         | 
| 33 | 
            +
                  name = options.delete(:name)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  Services::CreateLabel.new.execute(repository, name, options)
         | 
| 32 36 | 
             
                when ISSUE_LIST_COMMAND
         | 
| 33 37 | 
             
                  Services::ListIssues.new.execute(repository)
         | 
| 34 38 | 
             
                when LABEL_LIST_COMMAND
         | 
    
        data/geet.gemspec
    CHANGED
    
    | @@ -10,7 +10,7 @@ Gem::Specification.new do |s| | |
| 10 10 | 
             
              s.platform    = Gem::Platform::RUBY
         | 
| 11 11 | 
             
              s.required_ruby_version = '>= 2.2.0'
         | 
| 12 12 | 
             
              s.authors     = ['Saverio Miroddi']
         | 
| 13 | 
            -
              s.date        = '2017- | 
| 13 | 
            +
              s.date        = '2017-12-23'
         | 
| 14 14 | 
             
              s.email       = ['saverio.pub2@gmail.com']
         | 
| 15 15 | 
             
              s.homepage    = 'https://github.com/saveriomiroddi/geet'
         | 
| 16 16 | 
             
              s.summary     = 'Commandline interface for performing SCM (eg. GitHub) operations (eg. PR creation).'
         | 
| @@ -27,6 +27,11 @@ module Geet | |
| 27 27 | 
             
                    'description'
         | 
| 28 28 | 
             
                  ].freeze
         | 
| 29 29 |  | 
| 30 | 
            +
                  LABEL_CREATE_OPTIONS = [
         | 
| 31 | 
            +
                    ['-c', '--color color',                             '6-digits hex color; if not specified, a random one is created'],
         | 
| 32 | 
            +
                    'name',
         | 
| 33 | 
            +
                  ].freeze
         | 
| 34 | 
            +
             | 
| 30 35 | 
             
                  ISSUE_LIST_OPTIONS = [
         | 
| 31 36 | 
             
                    ['-u', '--upstream',                                'List on the upstream repository'],
         | 
| 32 37 | 
             
                  ].freeze
         | 
| @@ -68,6 +73,7 @@ module Geet | |
| 68 73 | 
             
                        'list' => ISSUE_LIST_OPTIONS,
         | 
| 69 74 | 
             
                      },
         | 
| 70 75 | 
             
                      'label' => {
         | 
| 76 | 
            +
                        'create' => LABEL_CREATE_OPTIONS,
         | 
| 71 77 | 
             
                        'list' => LABEL_LIST_OPTIONS,
         | 
| 72 78 | 
             
                      },
         | 
| 73 79 | 
             
                      'milestone' => {
         | 
    
        data/lib/geet/git/repository.rb
    CHANGED
    
    | @@ -43,6 +43,10 @@ module Geet | |
| 43 43 | 
             
                    attempt_provider_call(:Issue, :create, title, description, api_interface)
         | 
| 44 44 | 
             
                  end
         | 
| 45 45 |  | 
| 46 | 
            +
                  def create_label(name, color)
         | 
| 47 | 
            +
                    attempt_provider_call(:Label, :create, name, color, api_interface)
         | 
| 48 | 
            +
                  end
         | 
| 49 | 
            +
             | 
| 46 50 | 
             
                  def abstract_issues(milestone: nil)
         | 
| 47 51 | 
             
                    attempt_provider_call(:AbstractIssue, :list, api_interface, milestone: milestone)
         | 
| 48 52 | 
             
                  end
         | 
    
        data/lib/geet/github/label.rb
    CHANGED
    
    | @@ -5,12 +5,34 @@ require 'date' | |
| 5 5 | 
             
            module Geet
         | 
| 6 6 | 
             
              module Github
         | 
| 7 7 | 
             
                class Label
         | 
| 8 | 
            +
                  attr_reader :name, :color
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def initialize(name, color)
         | 
| 11 | 
            +
                    @name = name
         | 
| 12 | 
            +
                    @color = color
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 8 15 | 
             
                  # Returns a flat list of names in string form.
         | 
| 9 16 | 
             
                  def self.list(api_interface)
         | 
| 10 17 | 
             
                    api_path = 'labels'
         | 
| 11 18 | 
             
                    response = api_interface.send_request(api_path, multipage: true)
         | 
| 12 19 |  | 
| 13 | 
            -
                    response.map  | 
| 20 | 
            +
                    response.map do |label_entry|
         | 
| 21 | 
            +
                      name = label_entry.fetch('name')
         | 
| 22 | 
            +
                      color = label_entry.fetch('color')
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                      new(name, color)
         | 
| 25 | 
            +
                    end
         | 
| 26 | 
            +
                  end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  # See https://developer.github.com/v3/issues/labels/#create-a-label
         | 
| 29 | 
            +
                  def self.create(name, color, api_interface)
         | 
| 30 | 
            +
                    api_path = 'labels'
         | 
| 31 | 
            +
                    request_data = {name: name, color: color }
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                    api_interface.send_request(api_path, data: request_data)
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    new(name, color)
         | 
| 14 36 | 
             
                  end
         | 
| 15 37 | 
             
                end
         | 
| 16 38 | 
             
              end
         | 
    
        data/lib/geet/gitlab/label.rb
    CHANGED
    
    | @@ -5,12 +5,24 @@ require 'date' | |
| 5 5 | 
             
            module Geet
         | 
| 6 6 | 
             
              module Gitlab
         | 
| 7 7 | 
             
                class Label
         | 
| 8 | 
            +
                  attr_reader :name, :color
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                  def initialize(name, color)
         | 
| 11 | 
            +
                    @name = name
         | 
| 12 | 
            +
                    @color = color
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 8 15 | 
             
                  # Returns a flat list of names in string form.
         | 
| 9 16 | 
             
                  def self.list(api_interface)
         | 
| 10 17 | 
             
                    api_path = "projects/#{api_interface.path_with_namespace(encoded: true)}/labels"
         | 
| 11 18 | 
             
                    response = api_interface.send_request(api_path, multipage: true)
         | 
| 12 19 |  | 
| 13 | 
            -
                    response.map  | 
| 20 | 
            +
                    response.map do |label_entry|
         | 
| 21 | 
            +
                      name = label_entry.fetch('name')
         | 
| 22 | 
            +
                      color = label_entry.fetch('color').sub('#', '') # normalize
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                      new(name, color)
         | 
| 25 | 
            +
                    end
         | 
| 14 26 | 
             
                  end
         | 
| 15 27 | 
             
                end
         | 
| 16 28 | 
             
              end
         | 
| @@ -62,7 +62,7 @@ module Geet | |
| 62 62 | 
             
                    Thread.new do
         | 
| 63 63 | 
             
                      all_labels = repository.labels
         | 
| 64 64 |  | 
| 65 | 
            -
                      select_entries(all_labels, label_patterns, type: 'labels')
         | 
| 65 | 
            +
                      select_entries(all_labels, label_patterns, type: 'labels', instance_method: :name)
         | 
| 66 66 | 
             
                    end
         | 
| 67 67 | 
             
                  end
         | 
| 68 68 |  | 
| @@ -91,10 +91,12 @@ module Geet | |
| 91 91 | 
             
                  end
         | 
| 92 92 |  | 
| 93 93 | 
             
                  def add_labels(issue, selected_labels, output)
         | 
| 94 | 
            -
                     | 
| 94 | 
            +
                    labels_list = selected_labels.map(&:name).join(', ')
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                    output.puts "Adding labels #{labels_list}..."
         | 
| 95 97 |  | 
| 96 98 | 
             
                    Thread.new do
         | 
| 97 | 
            -
                      issue.add_labels(selected_labels)
         | 
| 99 | 
            +
                      issue.add_labels(selected_labels.map(&:name))
         | 
| 98 100 | 
             
                    end
         | 
| 99 101 | 
             
                  end
         | 
| 100 102 |  | 
| @@ -0,0 +1,30 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            module Geet
         | 
| 4 | 
            +
              module Services
         | 
| 5 | 
            +
                class CreateLabel
         | 
| 6 | 
            +
                  def execute(repository, name, color: generate_random_color, output: $stdout)
         | 
| 7 | 
            +
                    label = create_label(repository, name, color, output)
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                    output.puts "Created with color ##{label.color}"
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    label
         | 
| 12 | 
            +
                  end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                  private
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  def create_label(repository, name, color, output)
         | 
| 17 | 
            +
                    output.puts 'Creating label...'
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                    repository.create_label(name, color)
         | 
| 20 | 
            +
                  end
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  # Return a 6-digits hex random color.
         | 
| 23 | 
            +
                  def generate_random_color
         | 
| 24 | 
            +
                    hex_number = rand(2**24).to_s(16)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                    hex_number.rjust(6, '0')
         | 
| 27 | 
            +
                  end
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
            end
         | 
| @@ -52,7 +52,7 @@ module Geet | |
| 52 52 | 
             
                    Thread.new do
         | 
| 53 53 | 
             
                      all_labels = repository.labels
         | 
| 54 54 |  | 
| 55 | 
            -
                      select_entries(all_labels, label_patterns, type: 'labels')
         | 
| 55 | 
            +
                      select_entries(all_labels, label_patterns, type: 'labels', instance_method: :name)
         | 
| 56 56 | 
             
                    end
         | 
| 57 57 | 
             
                  end
         | 
| 58 58 |  | 
| @@ -95,10 +95,12 @@ module Geet | |
| 95 95 | 
             
                  end
         | 
| 96 96 |  | 
| 97 97 | 
             
                  def add_labels(pr, selected_labels, output)
         | 
| 98 | 
            -
                     | 
| 98 | 
            +
                    labels_list = selected_labels.map(&:name).join(', ')
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                    output.puts "Adding labels #{labels_list}..."
         | 
| 99 101 |  | 
| 100 102 | 
             
                    Thread.new do
         | 
| 101 | 
            -
                      pr.add_labels(selected_labels)
         | 
| 103 | 
            +
                      pr.add_labels(selected_labels.map(&:name))
         | 
| 102 104 | 
             
                    end
         | 
| 103 105 | 
             
                  end
         | 
| 104 106 |  | 
    
        data/lib/geet/version.rb
    CHANGED
    
    
| @@ -0,0 +1,54 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require_relative '../../lib/geet/git/repository'
         | 
| 4 | 
            +
            require_relative '../../lib/geet/services/create_label'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe Geet::Services::CreateLabel do
         | 
| 7 | 
            +
              let(:repository) { Geet::Git::Repository.new }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              context 'with user-specified color' do
         | 
| 10 | 
            +
                it 'should create a label' do
         | 
| 11 | 
            +
                  allow(repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/testrepo')
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                  expected_output = <<~STR
         | 
| 14 | 
            +
                    Creating label...
         | 
| 15 | 
            +
                    Created with color #c64c64
         | 
| 16 | 
            +
                  STR
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  actual_output = StringIO.new
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  actual_created_label = VCR.use_cassette("create_label") do
         | 
| 21 | 
            +
                    described_class.new.execute(repository, 'my_label', color: 'c64c64', output: actual_output)
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  expect(actual_output.string).to eql(expected_output)
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  expect(actual_created_label.name).to eql('my_label')
         | 
| 27 | 
            +
                  expect(actual_created_label.color).to eql('c64c64')
         | 
| 28 | 
            +
                end
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              context 'with auto-generated color' do
         | 
| 32 | 
            +
                it 'should create a label' do
         | 
| 33 | 
            +
                  allow(repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/testrepo')
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                  expected_output_template = <<~STR
         | 
| 36 | 
            +
                    Creating label...
         | 
| 37 | 
            +
                    Created with color #%s
         | 
| 38 | 
            +
                  STR
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  actual_output = StringIO.new
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  actual_created_label = VCR.use_cassette("create_label_with_random_color") do
         | 
| 43 | 
            +
                    described_class.new.execute(repository, 'my_label', output: actual_output)
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  expected_output = expected_output_template % actual_created_label.color
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                  expect(actual_output.string).to eql(expected_output)
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  expect(actual_created_label.name).to eql('my_label')
         | 
| 51 | 
            +
                  expect(actual_created_label.color).to match(/\A[0-9a-f]{6}\z/)
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
            end
         | 
| @@ -7,46 +7,71 @@ describe Geet::Services::ListIssues do | |
| 7 7 | 
             
              let(:repository) { Geet::Git::Repository.new }
         | 
| 8 8 | 
             
              let(:upstream_repository) { Geet::Git::Repository.new(upstream: true) }
         | 
| 9 9 |  | 
| 10 | 
            -
               | 
| 11 | 
            -
                 | 
| 10 | 
            +
              context 'with github.com' do
         | 
| 11 | 
            +
                it 'should list the issues' do
         | 
| 12 | 
            +
                  allow(repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/testrepo')
         | 
| 12 13 |  | 
| 13 | 
            -
             | 
| 14 | 
            -
             | 
| 15 | 
            -
             | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 14 | 
            +
                  expected_output = <<~STR
         | 
| 15 | 
            +
                    5. Title 2 (https://github.com/donaldduck/testrepo/issues/5)
         | 
| 16 | 
            +
                    4. Title 1 (https://github.com/donaldduck/testrepo/issues/4)
         | 
| 17 | 
            +
                  STR
         | 
| 18 | 
            +
                  expected_issue_numbers = [5, 4]
         | 
| 18 19 |  | 
| 19 | 
            -
             | 
| 20 | 
            +
                  actual_output = StringIO.new
         | 
| 20 21 |  | 
| 21 | 
            -
             | 
| 22 | 
            -
             | 
| 22 | 
            +
                  service_result = VCR.use_cassette("github_com/list_issues") do
         | 
| 23 | 
            +
                    described_class.new.execute(repository, output: actual_output)
         | 
| 24 | 
            +
                  end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                  actual_issue_numbers = service_result.map(&:number)
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                  expect(actual_output.string).to eql(expected_output)
         | 
| 29 | 
            +
                  expect(actual_issue_numbers).to eql(expected_issue_numbers)
         | 
| 23 30 | 
             
                end
         | 
| 24 31 |  | 
| 25 | 
            -
                 | 
| 32 | 
            +
                it 'should list the upstream issues' do
         | 
| 33 | 
            +
                  allow(upstream_repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/testrepo_2f')
         | 
| 34 | 
            +
                  allow(upstream_repository).to receive(:remote).with('upstream').and_return('git@github.com:donald-fr/testrepo_u')
         | 
| 26 35 |  | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 36 | 
            +
                  expected_output = <<~STR
         | 
| 37 | 
            +
                    2. Title 2 U (https://github.com/donald-fr/testrepo_u/issues/2)
         | 
| 38 | 
            +
                    1. Title 1 U (https://github.com/donald-fr/testrepo_u/issues/1)
         | 
| 39 | 
            +
                  STR
         | 
| 40 | 
            +
                  expected_issue_numbers = [2, 1]
         | 
| 30 41 |  | 
| 31 | 
            -
             | 
| 32 | 
            -
                allow(upstream_repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/testrepo_2f')
         | 
| 33 | 
            -
                allow(upstream_repository).to receive(:remote).with('upstream').and_return('git@github.com:donald-fr/testrepo_u')
         | 
| 42 | 
            +
                  actual_output = StringIO.new
         | 
| 34 43 |  | 
| 35 | 
            -
             | 
| 36 | 
            -
             | 
| 37 | 
            -
                   | 
| 38 | 
            -
                STR
         | 
| 39 | 
            -
                expected_issue_numbers = [2, 1]
         | 
| 44 | 
            +
                  service_result = VCR.use_cassette("github_com/list_issues_upstream") do
         | 
| 45 | 
            +
                    described_class.new.execute(upstream_repository, output: actual_output)
         | 
| 46 | 
            +
                  end
         | 
| 40 47 |  | 
| 41 | 
            -
             | 
| 48 | 
            +
                  actual_issue_numbers = service_result.map(&:number)
         | 
| 42 49 |  | 
| 43 | 
            -
             | 
| 44 | 
            -
                   | 
| 50 | 
            +
                  expect(actual_output.string).to eql(expected_output)
         | 
| 51 | 
            +
                  expect(actual_issue_numbers).to eql(expected_issue_numbers)
         | 
| 45 52 | 
             
                end
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              context 'with gitlab.com' do
         | 
| 56 | 
            +
                it 'should list the issues' do
         | 
| 57 | 
            +
                  allow(repository).to receive(:remote).with('origin').and_return('git@gitlab.com:donaldduck/testproject')
         | 
| 46 58 |  | 
| 47 | 
            -
             | 
| 59 | 
            +
                  expected_output = <<~STR
         | 
| 60 | 
            +
                    2. I like more pizza (https://gitlab.com/donaldduck/testproject/issues/2)
         | 
| 61 | 
            +
                    1. I like pizza (https://gitlab.com/donaldduck/testproject/issues/1)
         | 
| 62 | 
            +
                  STR
         | 
| 63 | 
            +
                  expected_issue_numbers = [2, 1]
         | 
| 48 64 |  | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 65 | 
            +
                  actual_output = StringIO.new
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  service_result = VCR.use_cassette("gitlab_com/list_issues") do
         | 
| 68 | 
            +
                    described_class.new.execute(repository, output: actual_output)
         | 
| 69 | 
            +
                  end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  actual_issue_numbers = service_result.map(&:number)
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                  expect(actual_output.string).to eql(expected_output)
         | 
| 74 | 
            +
                  expect(actual_issue_numbers).to eql(expected_issue_numbers)
         | 
| 75 | 
            +
                end
         | 
| 51 76 | 
             
              end
         | 
| 52 77 | 
             
            end
         | 
| @@ -11,20 +11,22 @@ describe Geet::Services::ListLabels do | |
| 11 11 | 
             
                  allow(repository).to receive(:remote).with('origin').and_return('git@github.com:donaldduck/geet')
         | 
| 12 12 |  | 
| 13 13 | 
             
                  expected_output = <<~STR
         | 
| 14 | 
            -
                    - bug
         | 
| 15 | 
            -
                    - enhancement
         | 
| 16 | 
            -
                    - technical_debt
         | 
| 17 | 
            -
                    - top_priority
         | 
| 14 | 
            +
                    - bug (#ee0701)
         | 
| 15 | 
            +
                    - enhancement (#84b6eb)
         | 
| 16 | 
            +
                    - technical_debt (#ee0701)
         | 
| 17 | 
            +
                    - top_priority (#d93f0b)
         | 
| 18 18 | 
             
                  STR
         | 
| 19 | 
            -
                   | 
| 19 | 
            +
                  expected_label_names = %w[bug enhancement technical_debt top_priority]
         | 
| 20 20 |  | 
| 21 21 | 
             
                  actual_output = StringIO.new
         | 
| 22 22 | 
             
                  actual_labels = VCR.use_cassette("github.com/list_labels") do
         | 
| 23 23 | 
             
                    described_class.new.execute(repository, output: actual_output)
         | 
| 24 24 | 
             
                  end
         | 
| 25 25 |  | 
| 26 | 
            +
                  actual_label_names = actual_labels.map(&:name)
         | 
| 27 | 
            +
             | 
| 26 28 | 
             
                  expect(actual_output.string).to eql(expected_output)
         | 
| 27 | 
            -
                  expect( | 
| 29 | 
            +
                  expect(actual_label_names).to eql(expected_label_names)
         | 
| 28 30 | 
             
                end
         | 
| 29 31 | 
             
              end
         | 
| 30 32 |  | 
| @@ -33,24 +35,26 @@ describe Geet::Services::ListLabels do | |
| 33 35 | 
             
                  allow(repository).to receive(:remote).with('origin').and_return('git@gitlab.com:donaldduck/testproject')
         | 
| 34 36 |  | 
| 35 37 | 
             
                  expected_output = <<~STR
         | 
| 36 | 
            -
                    - bug
         | 
| 37 | 
            -
                    - confirmed
         | 
| 38 | 
            -
                    - critical
         | 
| 39 | 
            -
                    - discussion
         | 
| 40 | 
            -
                    - documentation
         | 
| 41 | 
            -
                    - enhancement
         | 
| 42 | 
            -
                    - suggestion
         | 
| 43 | 
            -
                    - support
         | 
| 38 | 
            +
                    - bug (#d9534f)
         | 
| 39 | 
            +
                    - confirmed (#d9534f)
         | 
| 40 | 
            +
                    - critical (#d9534f)
         | 
| 41 | 
            +
                    - discussion (#428bca)
         | 
| 42 | 
            +
                    - documentation (#f0ad4e)
         | 
| 43 | 
            +
                    - enhancement (#5cb85c)
         | 
| 44 | 
            +
                    - suggestion (#428bca)
         | 
| 45 | 
            +
                    - support (#f0ad4e)
         | 
| 44 46 | 
             
                  STR
         | 
| 45 | 
            -
                   | 
| 47 | 
            +
                  expected_label_names = %w[bug confirmed critical discussion documentation enhancement suggestion support]
         | 
| 46 48 |  | 
| 47 49 | 
             
                  actual_output = StringIO.new
         | 
| 48 50 | 
             
                  actual_labels = VCR.use_cassette("gitlab.com/list_labels") do
         | 
| 49 51 | 
             
                    described_class.new.execute(repository, output: actual_output)
         | 
| 50 52 | 
             
                  end
         | 
| 51 53 |  | 
| 54 | 
            +
                  actual_label_names = actual_labels.map(&:name)
         | 
| 55 | 
            +
             | 
| 52 56 | 
             
                  expect(actual_output.string).to eql(expected_output)
         | 
| 53 | 
            -
                  expect( | 
| 57 | 
            +
                  expect(actual_label_names).to eql(expected_label_names)
         | 
| 54 58 | 
             
                end
         | 
| 55 59 | 
             
              end
         | 
| 56 60 | 
             
            end
         | 
| @@ -0,0 +1,80 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: post
         | 
| 5 | 
            +
                uri: https://api.github.com/repos/donaldduck/testrepo/labels
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: UTF-8
         | 
| 8 | 
            +
                  string: '{"name":"my_label","color":"c64c64"}'
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         | 
| 12 | 
            +
                  Accept:
         | 
| 13 | 
            +
                  - application/vnd.github.v3+json
         | 
| 14 | 
            +
                  User-Agent:
         | 
| 15 | 
            +
                  - Ruby
         | 
| 16 | 
            +
                  Host:
         | 
| 17 | 
            +
                  - api.github.com
         | 
| 18 | 
            +
                  Authorization:
         | 
| 19 | 
            +
                  - Basic <GITHUB_CREDENTIALS>
         | 
| 20 | 
            +
              response:
         | 
| 21 | 
            +
                status:
         | 
| 22 | 
            +
                  code: 201
         | 
| 23 | 
            +
                  message: Created
         | 
| 24 | 
            +
                headers:
         | 
| 25 | 
            +
                  Server:
         | 
| 26 | 
            +
                  - GitHub.com
         | 
| 27 | 
            +
                  Date:
         | 
| 28 | 
            +
                  - Sat, 23 Dec 2017 18:03:21 GMT
         | 
| 29 | 
            +
                  Content-Type:
         | 
| 30 | 
            +
                  - application/json; charset=utf-8
         | 
| 31 | 
            +
                  Content-Length:
         | 
| 32 | 
            +
                  - '138'
         | 
| 33 | 
            +
                  Status:
         | 
| 34 | 
            +
                  - 201 Created
         | 
| 35 | 
            +
                  X-Ratelimit-Limit:
         | 
| 36 | 
            +
                  - '5000'
         | 
| 37 | 
            +
                  X-Ratelimit-Remaining:
         | 
| 38 | 
            +
                  - '4976'
         | 
| 39 | 
            +
                  X-Ratelimit-Reset:
         | 
| 40 | 
            +
                  - '1514053576'
         | 
| 41 | 
            +
                  Cache-Control:
         | 
| 42 | 
            +
                  - private, max-age=60, s-maxage=60
         | 
| 43 | 
            +
                  Vary:
         | 
| 44 | 
            +
                  - Accept, Authorization, Cookie, X-GitHub-OTP
         | 
| 45 | 
            +
                  Etag:
         | 
| 46 | 
            +
                  - '"1ea6b12ceb9b563a57d3a6be15fa628c"'
         | 
| 47 | 
            +
                  X-Oauth-Scopes:
         | 
| 48 | 
            +
                  - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook,
         | 
| 49 | 
            +
                    delete_repo, gist, notifications, repo, user
         | 
| 50 | 
            +
                  X-Accepted-Oauth-Scopes:
         | 
| 51 | 
            +
                  - ''
         | 
| 52 | 
            +
                  Location:
         | 
| 53 | 
            +
                  - https://api.github.com/repos/donaldduck/testrepo/labels/my_label
         | 
| 54 | 
            +
                  X-Github-Media-Type:
         | 
| 55 | 
            +
                  - github.v3; format=json
         | 
| 56 | 
            +
                  Access-Control-Expose-Headers:
         | 
| 57 | 
            +
                  - ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
         | 
| 58 | 
            +
                    X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
         | 
| 59 | 
            +
                  Access-Control-Allow-Origin:
         | 
| 60 | 
            +
                  - "*"
         | 
| 61 | 
            +
                  Content-Security-Policy:
         | 
| 62 | 
            +
                  - default-src 'none'
         | 
| 63 | 
            +
                  Strict-Transport-Security:
         | 
| 64 | 
            +
                  - max-age=31536000; includeSubdomains; preload
         | 
| 65 | 
            +
                  X-Content-Type-Options:
         | 
| 66 | 
            +
                  - nosniff
         | 
| 67 | 
            +
                  X-Frame-Options:
         | 
| 68 | 
            +
                  - deny
         | 
| 69 | 
            +
                  X-Xss-Protection:
         | 
| 70 | 
            +
                  - 1; mode=block
         | 
| 71 | 
            +
                  X-Runtime-Rack:
         | 
| 72 | 
            +
                  - '0.037893'
         | 
| 73 | 
            +
                  X-Github-Request-Id:
         | 
| 74 | 
            +
                  - D320:7F5B:18C0222:4994D7F:5A3E9A69
         | 
| 75 | 
            +
                body:
         | 
| 76 | 
            +
                  encoding: UTF-8
         | 
| 77 | 
            +
                  string: '{"id":786495522,"url":"https://api.github.com/repos/donaldduck/testrepo/labels/my_label","name":"my_label","color":"c64c64","default":false}'
         | 
| 78 | 
            +
                http_version: 
         | 
| 79 | 
            +
              recorded_at: Sat, 23 Dec 2017 18:03:21 GMT
         | 
| 80 | 
            +
            recorded_with: VCR 3.0.3
         | 
| @@ -0,0 +1,80 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: post
         | 
| 5 | 
            +
                uri: https://api.github.com/repos/donaldduck/testrepo/labels
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: UTF-8
         | 
| 8 | 
            +
                  string: '{"name":"my_label","color":"9aa53a"}'
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         | 
| 12 | 
            +
                  Accept:
         | 
| 13 | 
            +
                  - application/vnd.github.v3+json
         | 
| 14 | 
            +
                  User-Agent:
         | 
| 15 | 
            +
                  - Ruby
         | 
| 16 | 
            +
                  Host:
         | 
| 17 | 
            +
                  - api.github.com
         | 
| 18 | 
            +
                  Authorization:
         | 
| 19 | 
            +
                  - Basic <GITHUB_CREDENTIALS>
         | 
| 20 | 
            +
              response:
         | 
| 21 | 
            +
                status:
         | 
| 22 | 
            +
                  code: 201
         | 
| 23 | 
            +
                  message: Created
         | 
| 24 | 
            +
                headers:
         | 
| 25 | 
            +
                  Server:
         | 
| 26 | 
            +
                  - GitHub.com
         | 
| 27 | 
            +
                  Date:
         | 
| 28 | 
            +
                  - Sat, 23 Dec 2017 18:07:18 GMT
         | 
| 29 | 
            +
                  Content-Type:
         | 
| 30 | 
            +
                  - application/json; charset=utf-8
         | 
| 31 | 
            +
                  Content-Length:
         | 
| 32 | 
            +
                  - '140'
         | 
| 33 | 
            +
                  Status:
         | 
| 34 | 
            +
                  - 201 Created
         | 
| 35 | 
            +
                  X-Ratelimit-Limit:
         | 
| 36 | 
            +
                  - '5000'
         | 
| 37 | 
            +
                  X-Ratelimit-Remaining:
         | 
| 38 | 
            +
                  - '4974'
         | 
| 39 | 
            +
                  X-Ratelimit-Reset:
         | 
| 40 | 
            +
                  - '1514053576'
         | 
| 41 | 
            +
                  Cache-Control:
         | 
| 42 | 
            +
                  - private, max-age=60, s-maxage=60
         | 
| 43 | 
            +
                  Vary:
         | 
| 44 | 
            +
                  - Accept, Authorization, Cookie, X-GitHub-OTP
         | 
| 45 | 
            +
                  Etag:
         | 
| 46 | 
            +
                  - '"d40831c543892438bb03c0751514c999"'
         | 
| 47 | 
            +
                  X-Oauth-Scopes:
         | 
| 48 | 
            +
                  - admin:gpg_key, admin:org, admin:org_hook, admin:public_key, admin:repo_hook,
         | 
| 49 | 
            +
                    delete_repo, gist, notifications, repo, user
         | 
| 50 | 
            +
                  X-Accepted-Oauth-Scopes:
         | 
| 51 | 
            +
                  - ''
         | 
| 52 | 
            +
                  Location:
         | 
| 53 | 
            +
                  - https://api.github.com/repos/donaldduck/testrepo/labels/my_label
         | 
| 54 | 
            +
                  X-Github-Media-Type:
         | 
| 55 | 
            +
                  - github.v3; format=json
         | 
| 56 | 
            +
                  Access-Control-Expose-Headers:
         | 
| 57 | 
            +
                  - ETag, Link, Retry-After, X-GitHub-OTP, X-RateLimit-Limit, X-RateLimit-Remaining,
         | 
| 58 | 
            +
                    X-RateLimit-Reset, X-OAuth-Scopes, X-Accepted-OAuth-Scopes, X-Poll-Interval
         | 
| 59 | 
            +
                  Access-Control-Allow-Origin:
         | 
| 60 | 
            +
                  - "*"
         | 
| 61 | 
            +
                  Content-Security-Policy:
         | 
| 62 | 
            +
                  - default-src 'none'
         | 
| 63 | 
            +
                  Strict-Transport-Security:
         | 
| 64 | 
            +
                  - max-age=31536000; includeSubdomains; preload
         | 
| 65 | 
            +
                  X-Content-Type-Options:
         | 
| 66 | 
            +
                  - nosniff
         | 
| 67 | 
            +
                  X-Frame-Options:
         | 
| 68 | 
            +
                  - deny
         | 
| 69 | 
            +
                  X-Xss-Protection:
         | 
| 70 | 
            +
                  - 1; mode=block
         | 
| 71 | 
            +
                  X-Runtime-Rack:
         | 
| 72 | 
            +
                  - '0.039601'
         | 
| 73 | 
            +
                  X-Github-Request-Id:
         | 
| 74 | 
            +
                  - ECE0:7F59:1879FF8:328EDB9:5A3E9B55
         | 
| 75 | 
            +
                body:
         | 
| 76 | 
            +
                  encoding: UTF-8
         | 
| 77 | 
            +
                  string: '{"id":786496976,"url":"https://api.github.com/repos/donaldduck/testrepo/labels/my_label","name":"my_label","color":"9aa53a","default":false}'
         | 
| 78 | 
            +
                http_version: 
         | 
| 79 | 
            +
              recorded_at: Sat, 23 Dec 2017 18:07:18 GMT
         | 
| 80 | 
            +
            recorded_with: VCR 3.0.3
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| @@ -0,0 +1,84 @@ | |
| 1 | 
            +
            ---
         | 
| 2 | 
            +
            http_interactions:
         | 
| 3 | 
            +
            - request:
         | 
| 4 | 
            +
                method: get
         | 
| 5 | 
            +
                uri: https://gitlab.com/api/v4/projects/donaldduck%2Ftestproject/issues
         | 
| 6 | 
            +
                body:
         | 
| 7 | 
            +
                  encoding: US-ASCII
         | 
| 8 | 
            +
                  string: ''
         | 
| 9 | 
            +
                headers:
         | 
| 10 | 
            +
                  Accept-Encoding:
         | 
| 11 | 
            +
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         | 
| 12 | 
            +
                  Accept:
         | 
| 13 | 
            +
                  - "*/*"
         | 
| 14 | 
            +
                  User-Agent:
         | 
| 15 | 
            +
                  - Ruby
         | 
| 16 | 
            +
                  Host:
         | 
| 17 | 
            +
                  - gitlab.com
         | 
| 18 | 
            +
                  Private-Token:
         | 
| 19 | 
            +
                  - "<GITLAB_CREDENTIALS>"
         | 
| 20 | 
            +
              response:
         | 
| 21 | 
            +
                status:
         | 
| 22 | 
            +
                  code: 200
         | 
| 23 | 
            +
                  message: OK
         | 
| 24 | 
            +
                headers:
         | 
| 25 | 
            +
                  Server:
         | 
| 26 | 
            +
                  - nginx
         | 
| 27 | 
            +
                  Date:
         | 
| 28 | 
            +
                  - Mon, 27 Nov 2017 20:58:06 GMT
         | 
| 29 | 
            +
                  Content-Type:
         | 
| 30 | 
            +
                  - application/json
         | 
| 31 | 
            +
                  Content-Length:
         | 
| 32 | 
            +
                  - '1648'
         | 
| 33 | 
            +
                  Cache-Control:
         | 
| 34 | 
            +
                  - max-age=0, private, must-revalidate
         | 
| 35 | 
            +
                  Etag:
         | 
| 36 | 
            +
                  - W/"622f178aa3f7cf68c0314a3faa6c520f"
         | 
| 37 | 
            +
                  Link:
         | 
| 38 | 
            +
                  - <https://gitlab.com/api/v4/projects/donaldduck%2Ftestproject/issues?id=donaldduck%2Ftestproject&order_by=created_at&page=1&per_page=20&sort=desc&state=all>;
         | 
| 39 | 
            +
                    rel="first", <https://gitlab.com/api/v4/projects/donaldduck%2Ftestproject/issues?id=donaldduck%2Ftestproject&order_by=created_at&page=1&per_page=20&sort=desc&state=all>;
         | 
| 40 | 
            +
                    rel="last"
         | 
| 41 | 
            +
                  Vary:
         | 
| 42 | 
            +
                  - Origin
         | 
| 43 | 
            +
                  X-Content-Type-Options:
         | 
| 44 | 
            +
                  - nosniff
         | 
| 45 | 
            +
                  X-Frame-Options:
         | 
| 46 | 
            +
                  - SAMEORIGIN
         | 
| 47 | 
            +
                  X-Next-Page:
         | 
| 48 | 
            +
                  - ''
         | 
| 49 | 
            +
                  X-Page:
         | 
| 50 | 
            +
                  - '1'
         | 
| 51 | 
            +
                  X-Per-Page:
         | 
| 52 | 
            +
                  - '20'
         | 
| 53 | 
            +
                  X-Prev-Page:
         | 
| 54 | 
            +
                  - ''
         | 
| 55 | 
            +
                  X-Request-Id:
         | 
| 56 | 
            +
                  - 9d46bac0-142f-464f-af89-4cac318e4563
         | 
| 57 | 
            +
                  X-Runtime:
         | 
| 58 | 
            +
                  - '0.428030'
         | 
| 59 | 
            +
                  X-Total:
         | 
| 60 | 
            +
                  - '2'
         | 
| 61 | 
            +
                  X-Total-Pages:
         | 
| 62 | 
            +
                  - '1'
         | 
| 63 | 
            +
                  Strict-Transport-Security:
         | 
| 64 | 
            +
                  - max-age=31536000
         | 
| 65 | 
            +
                  Ratelimit-Limit:
         | 
| 66 | 
            +
                  - '600'
         | 
| 67 | 
            +
                  Ratelimit-Observed:
         | 
| 68 | 
            +
                  - '1'
         | 
| 69 | 
            +
                  Ratelimit-Remaining:
         | 
| 70 | 
            +
                  - '599'
         | 
| 71 | 
            +
                  Ratelimit-Reset:
         | 
| 72 | 
            +
                  - '1511816346'
         | 
| 73 | 
            +
                  Ratelimit-Resettime:
         | 
| 74 | 
            +
                  - Tue, 27 Nov 2017 20:59:06 GMT
         | 
| 75 | 
            +
                body:
         | 
| 76 | 
            +
                  encoding: UTF-8
         | 
| 77 | 
            +
                  string: '[{"id":7921197,"iid":2,"project_id":4749339,"title":"I like more pizza","description":"And
         | 
| 78 | 
            +
                    you should, too!","state":"opened","created_at":"2017-11-26T20:56:53.870Z","updated_at":"2017-11-27T18:57:07.289Z","closed_at":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":1161211,"name":"Saverio
         | 
| 79 | 
            +
                    Miroddi","username":"donaldduck","state":"active","avatar_url":"https://secure.gravatar.com/avatar/8209debe0ccee5d905ea2797cb94a5b0?s=80\u0026d=identicon","web_url":"https://gitlab.com/donaldduck"},"assignee":null,"user_notes_count":1,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"weight":null,"discussion_locked":null,"web_url":"https://gitlab.com/donaldduck/testproject/issues/2","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null}},{"id":7921196,"iid":1,"project_id":4749339,"title":"I
         | 
| 80 | 
            +
                    like pizza","description":"How about you?","state":"opened","created_at":"2017-11-26T20:56:42.241Z","updated_at":"2017-11-26T20:56:42.241Z","closed_at":null,"labels":[],"milestone":null,"assignees":[],"author":{"id":1161211,"name":"Saverio
         | 
| 81 | 
            +
                    Miroddi","username":"donaldduck","state":"active","avatar_url":"https://secure.gravatar.com/avatar/8209debe0ccee5d905ea2797cb94a5b0?s=80\u0026d=identicon","web_url":"https://gitlab.com/donaldduck"},"assignee":null,"user_notes_count":0,"upvotes":0,"downvotes":0,"due_date":null,"confidential":false,"weight":null,"discussion_locked":null,"web_url":"https://gitlab.com/donaldduck/testproject/issues/1","time_stats":{"time_estimate":0,"total_time_spent":0,"human_time_estimate":null,"human_total_time_spent":null}}]'
         | 
| 82 | 
            +
                http_version: 
         | 
| 83 | 
            +
              recorded_at: Mon, 27 Nov 2017 20:58:06 GMT
         | 
| 84 | 
            +
            recorded_with: VCR 3.0.3
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: geet
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.1. | 
| 4 | 
            +
              version: 0.1.12
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Saverio Miroddi
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2017- | 
| 11 | 
            +
            date: 2017-12-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: simple_scripting
         | 
| @@ -61,6 +61,7 @@ files: | |
| 61 61 | 
             
            - lib/geet/helpers/os_helper.rb
         | 
| 62 62 | 
             
            - lib/geet/services/create_gist.rb
         | 
| 63 63 | 
             
            - lib/geet/services/create_issue.rb
         | 
| 64 | 
            +
            - lib/geet/services/create_label.rb
         | 
| 64 65 | 
             
            - lib/geet/services/create_pr.rb
         | 
| 65 66 | 
             
            - lib/geet/services/list_issues.rb
         | 
| 66 67 | 
             
            - lib/geet/services/list_labels.rb
         | 
| @@ -70,6 +71,7 @@ files: | |
| 70 71 | 
             
            - lib/geet/version.rb
         | 
| 71 72 | 
             
            - spec/integration/create_gist_spec.rb
         | 
| 72 73 | 
             
            - spec/integration/create_issue_spec.rb
         | 
| 74 | 
            +
            - spec/integration/create_label_spec.rb
         | 
| 73 75 | 
             
            - spec/integration/create_pr_spec.rb
         | 
| 74 76 | 
             
            - spec/integration/list_issues_spec.rb
         | 
| 75 77 | 
             
            - spec/integration/list_labels_spec.rb
         | 
| @@ -81,12 +83,15 @@ files: | |
| 81 83 | 
             
            - spec/vcr_cassettes/create_gist_public.yml
         | 
| 82 84 | 
             
            - spec/vcr_cassettes/create_issue.yml
         | 
| 83 85 | 
             
            - spec/vcr_cassettes/create_issue_upstream.yml
         | 
| 86 | 
            +
            - spec/vcr_cassettes/create_label.yml
         | 
| 87 | 
            +
            - spec/vcr_cassettes/create_label_with_random_color.yml
         | 
| 84 88 | 
             
            - spec/vcr_cassettes/create_pr.yml
         | 
| 85 89 | 
             
            - spec/vcr_cassettes/create_pr_upstream.yml
         | 
| 90 | 
            +
            - spec/vcr_cassettes/github_com/list_issues.yml
         | 
| 91 | 
            +
            - spec/vcr_cassettes/github_com/list_issues_upstream.yml
         | 
| 86 92 | 
             
            - spec/vcr_cassettes/github_com/list_labels.yml
         | 
| 93 | 
            +
            - spec/vcr_cassettes/gitlab_com/list_issues.yml
         | 
| 87 94 | 
             
            - spec/vcr_cassettes/gitlab_com/list_labels.yml
         | 
| 88 | 
            -
            - spec/vcr_cassettes/list_issues.yml
         | 
| 89 | 
            -
            - spec/vcr_cassettes/list_issues_upstream.yml
         | 
| 90 95 | 
             
            - spec/vcr_cassettes/list_milestones.yml
         | 
| 91 96 | 
             
            - spec/vcr_cassettes/list_prs.yml
         | 
| 92 97 | 
             
            - spec/vcr_cassettes/list_prs_upstream.yml
         | 
| @@ -111,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 111 116 | 
             
                  version: '0'
         | 
| 112 117 | 
             
            requirements: []
         | 
| 113 118 | 
             
            rubyforge_project: 
         | 
| 114 | 
            -
            rubygems_version: 2.6. | 
| 119 | 
            +
            rubygems_version: 2.6.13
         | 
| 115 120 | 
             
            signing_key: 
         | 
| 116 121 | 
             
            specification_version: 4
         | 
| 117 122 | 
             
            summary: Commandline interface for performing SCM (eg. GitHub) operations (eg. PR
         |