unwrappr 0.8.0 → 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e53f322cf4057535b08607023edcf655e1f6aed5dda15538615f0fd5b06fc2f
4
- data.tar.gz: 348ae550a3a6c1692502d9138639a9fa3a111a6a61f13b54dbd3f6c391637463
3
+ metadata.gz: 29736d84feb95b8cd5173861ac11989d11c94ecaca4a47c39dea8827edf03525
4
+ data.tar.gz: 16b06856873438227e78b980b762f03c5aaaad621e6b552337d5efb934aadca7
5
5
  SHA512:
6
- metadata.gz: 52b132cf79ce405129eacc7423c9769a7e90962e1c35869ea6af4491320815f47467b2755a756cdff75c8bb6efedf40e2a1d5c416ecbad438cc3e3d28120688f
7
- data.tar.gz: 168c20cc164596e3abe39ebc00a7c605022295fce8364973a4901381cd59405df68ea85cdbabc76fbb10d859b5505b74c5b2f97f9051039644685fdef388804f
6
+ metadata.gz: 987fbf80fd949d1a4f609d7d52f9d73dc0c49611ee65c26f8fcaa912c9f9e6affb7a45dce0db5ff5b96d54e19ce4ea889c7e3b71883ee22f5e9edb867e5cb1be
7
+ data.tar.gz: 9d721aa36e61b47b38a9165db52351b99ba4f4449484d100aa8518789af3bed4733c8887730cb677fd14490ef0cd752789658f52ea483a247f77254c86754afa
data/CHANGELOG.md CHANGED
@@ -6,7 +6,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- [Unreleased]: https://github.com/envato/unwrappr/compare/v0.8.0...HEAD
9
+ [Unreleased]: https://github.com/envato/unwrappr/compare/v0.8.1...HEAD
10
+
11
+ ## [0.8.1] 2023-02-07
12
+
13
+ ### Add
14
+ - Add Ruby 3.1 and 3.2 to the CI test matrix ([#92], [#93]).
15
+
16
+ ### Fix
17
+ - Resolve a number of issues raised by Rubocop ([#92], [#93]).
18
+ - Resolve GitHub Actions Node.js 12 deprecation ([#93]).
19
+ - Remove development files from the gem package ([#94]).
20
+
21
+ ### Documentation
22
+ - Document how to grab credentials from the keychain ([#91]).
23
+
24
+ [0.8.1]: https://github.com/envato/unwrappr/compare/v0.8.0...v0.8.1
25
+ [#91]: https://github.com/envato/unwrappr/pull/91
26
+ [#92]: https://github.com/envato/unwrappr/pull/92
27
+ [#93]: https://github.com/envato/unwrappr/pull/93
28
+ [#94]: https://github.com/envato/unwrappr/pull/94
10
29
 
11
30
  ## [0.8.0] 2021-07-22
12
31
 
data/README.md CHANGED
@@ -41,7 +41,15 @@ $ gem install unwrappr
41
41
 
42
42
  ## Configuration
43
43
 
44
- `unwrappr` needs a [GitHub Personal Access Token](https://github.com/settings/tokens), stored in the environment as `GITHUB_TOKEN`.
44
+ `unwrappr` needs a [GitHub Personal Access
45
+ Token](https://github.com/settings/tokens), stored in the environment as
46
+ `GITHUB_TOKEN`. If you have your Personal Access Token stored in the macOS
47
+ keychain, you can pull this into your shell environment using the `security`
48
+ tool. _E.g:_
49
+
50
+ ```bash
51
+ export GITHUB_TOKEN=$(security find-internet-password -gs github.com 2>&1 | awk -F' ' '$1 == "password:" { print $2 }' | tr -d '"')
52
+ ```
45
53
 
46
54
  To run `unwrappr` in the current working directory use...
47
55
 
data/lib/unwrappr/cli.rb CHANGED
@@ -29,8 +29,7 @@ module Unwrappr
29
29
  exit(0)
30
30
  end
31
31
 
32
- subcommand 'all', 'run bundle update, push to GitHub, '\
33
- 'create a pr and annotate changes' do
32
+ subcommand 'all', 'run bundle update, push to GitHub, create a pr and annotate changes' do
34
33
  option ['-R', '--recursive'],
35
34
  :flag,
36
35
  'Recurse into subdirectories',
@@ -60,20 +60,7 @@ module Unwrappr
60
60
  end
61
61
 
62
62
  def git_client
63
- @git_client ||= Octokit::Client.new(access_token: github_token)
64
- end
65
-
66
- def github_token
67
- @github_token ||= ENV.fetch('GITHUB_TOKEN')
68
- rescue KeyError
69
- raise %(
70
- Missing environment variable GITHUB_TOKEN.
71
- See https://github.com/settings/tokens to set up personal access tokens.
72
- Add to the environment:
73
-
74
- export GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
75
-
76
- )
63
+ @git_client ||= Octokit::Client.new(access_token: Octokit.access_token_from_environment)
77
64
  end
78
65
  end
79
66
  end
@@ -63,7 +63,7 @@ module Unwrappr
63
63
  # '+ websocket-driver (0.6.5)'
64
64
  # Careful not to match this (note the wider indent):
65
65
  # '+ websocket-extensions (>= 0.1.0)'
66
- pattern = /^(?<change_type>[+\-]) (?<gem_name>\S+) \(\d/
66
+ pattern = /^(?<change_type>[+-]) (?<gem_name>\S+) \(\d/
67
67
  match = pattern.match(line)
68
68
  return match[:gem_name], match[:change_type] unless match.nil?
69
69
  end
@@ -3,6 +3,19 @@
3
3
  # Wrapper around octokit
4
4
  module Octokit
5
5
  def self.client
6
- @client ||= Client.new(access_token: ENV['GITHUB_TOKEN'])
6
+ @client ||= Client.new(access_token: access_token_from_environment)
7
+ end
8
+
9
+ def self.access_token_from_environment
10
+ ENV.fetch('GITHUB_TOKEN') do
11
+ raise <<~MESSAGE
12
+ Missing environment variable GITHUB_TOKEN.
13
+ See https://github.com/settings/tokens to set up personal access tokens.
14
+ Add to the environment:
15
+
16
+ export GITHUB_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
17
+
18
+ MESSAGE
19
+ end
7
20
  end
8
21
  end
@@ -13,8 +13,8 @@ module Unwrappr
13
13
  }ix.freeze
14
14
 
15
15
  def research(_gem_change, gem_change_info)
16
- repo = match_repo(gem_change_info, :source_code_uri) ||
17
- match_repo(gem_change_info, :homepage_uri)
16
+ repo = match_repo(gem_change_info, 'source_code_uri') ||
17
+ match_repo(gem_change_info, 'homepage_uri')
18
18
  gem_change_info.merge(github_repo: repo)
19
19
  end
20
20
 
@@ -18,7 +18,7 @@ module Unwrappr
18
18
  def parse(response, name)
19
19
  case response.status
20
20
  when 200
21
- JSON.parse(response.body, object_class: OpenStruct)
21
+ JSON.parse(response.body)
22
22
  when 404
23
23
  nil
24
24
  else
@@ -27,8 +27,7 @@ module Unwrappr
27
27
  end
28
28
 
29
29
  def error_message(response:, name:)
30
- "Rubygems response for #{name}: "\
31
- "HTTP #{response.status}: #{response.body}"
30
+ "Rubygems response for #{name}: HTTP #{response.status}: #{response.body}"
32
31
  end
33
32
  end
34
33
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Unwrappr
4
- VERSION = '0.8.0'
4
+ VERSION = '0.8.1'
5
5
  end
@@ -24,13 +24,11 @@ module Unwrappr
24
24
  private
25
25
 
26
26
  def change_log
27
- link_or_strikethrough('change-log',
28
- ruby_gems_info&.changelog_uri)
27
+ link_or_strikethrough('change-log', ruby_gems_info('changelog_uri'))
29
28
  end
30
29
 
31
30
  def source_code
32
- link_or_strikethrough('source-code',
33
- ruby_gems_info&.source_code_uri)
31
+ link_or_strikethrough('source-code', ruby_gems_info('source_code_uri'))
34
32
  end
35
33
 
36
34
  GEM_DIFF_URL_TEMPLATE = 'https://my.diffend.io/gems/%s/%s/%s'
@@ -46,8 +44,8 @@ module Unwrappr
46
44
  link_or_strikethrough('gem-diff', gem_diff_url)
47
45
  end
48
46
 
49
- def ruby_gems_info
50
- @gem_change_info[:ruby_gems]
47
+ def ruby_gems_info(*args)
48
+ @gem_change_info.dig(:ruby_gems, *args)
51
49
  end
52
50
 
53
51
  def link_or_strikethrough(text, url)
@@ -85,12 +85,7 @@ module Unwrappr
85
85
  end
86
86
 
87
87
  def cvss_v2(advisory)
88
- # rubocop:disable Style/GuardClause
89
- if advisory.cvss_v2
90
- "CVSS V2: [#{advisory.cvss_v2} #{advisory.criticality}]"\
91
- "(#{cvss_v2_url(advisory.cve_id)})"
92
- end
93
- # rubocop:enable Style/GuardClause
88
+ "CVSS V2: [#{advisory.cvss_v2} #{advisory.criticality}](#{cvss_v2_url(advisory.cve_id)})" if advisory.cvss_v2
94
89
  end
95
90
 
96
91
  def cvss_v2_url(id)
@@ -12,7 +12,7 @@ module Unwrappr
12
12
  def write(gem_change, gem_change_info)
13
13
  embellished_gem_name = maybe_link(
14
14
  gem_change.name,
15
- gem_change_info[:ruby_gems]&.homepage_uri
15
+ gem_change_info.dig(:ruby_gems, 'homepage_uri')
16
16
  )
17
17
  "### #{embellished_gem_name}\n"
18
18
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unwrappr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emilyn Escabarte
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: exe
14
14
  cert_chain: []
15
- date: 2021-07-21 00:00:00.000000000 Z
15
+ date: 2023-02-07 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: bundler
@@ -222,23 +222,9 @@ executables:
222
222
  extensions: []
223
223
  extra_rdoc_files: []
224
224
  files:
225
- - ".buildkite/pipeline.yml"
226
- - ".buildkite/steps/rspec.sh"
227
- - ".buildkite/steps/rubocop.sh"
228
- - ".github/workflows/ci.yml"
229
- - ".gitignore"
230
- - ".rspec"
231
- - ".rubocop.yml"
232
- - ".tool-versions"
233
225
  - CHANGELOG.md
234
- - CODE_OF_CONDUCT.md
235
- - Gemfile
236
- - Guardfile
237
226
  - LICENSE.txt
238
227
  - README.md
239
- - Rakefile
240
- - bin/console
241
- - bin/setup
242
228
  - exe/unwrappr
243
229
  - lib/unwrappr.rb
244
230
  - lib/unwrappr/bundler_command_runner.rb
@@ -267,7 +253,6 @@ files:
267
253
  - lib/unwrappr/writers/security_vulnerabilities.rb
268
254
  - lib/unwrappr/writers/title.rb
269
255
  - lib/unwrappr/writers/version_change.rb
270
- - unwrappr.gemspec
271
256
  homepage: https://opensource.envato.com/projects/unwrappr.html
272
257
  licenses:
273
258
  - MIT
@@ -276,6 +261,7 @@ metadata:
276
261
  changelog_uri: https://github.com/envato/unwrappr/blob/HEAD/CHANGELOG.md
277
262
  documentation_uri: https://github.com/envato/unwrappr/blob/HEAD/README.md
278
263
  homepage_uri: https://opensource.envato.com/projects/unwrappr.html
264
+ rubygems_mfa_required: 'true'
279
265
  source_code_uri: https://github.com/envato/unwrappr
280
266
  post_install_message:
281
267
  rdoc_options: []
@@ -292,7 +278,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
292
278
  - !ruby/object:Gem::Version
293
279
  version: '2.7'
294
280
  requirements: []
295
- rubygems_version: 3.2.22
281
+ rubygems_version: 3.4.6
296
282
  signing_key:
297
283
  specification_version: 4
298
284
  summary: A tool to unwrap your gems and see what's changed easily
@@ -1,47 +0,0 @@
1
- ---
2
-
3
- steps:
4
- - label: ":ruby: 2.6 :rspec:"
5
- command: ".buildkite/steps/rspec.sh"
6
- plugins:
7
- docker#v1.2.1:
8
- image: "ruby:2.6"
9
- agents:
10
- queue: "platform-docker-spot"
11
- timeout_in_minutes: 5
12
-
13
- - label: ":ruby: 2.5 :rspec:"
14
- command: ".buildkite/steps/rspec.sh"
15
- plugins:
16
- docker#v1.2.1:
17
- image: "ruby:2.5"
18
- agents:
19
- queue: "platform-docker-spot"
20
- timeout_in_minutes: 5
21
-
22
- - label: ":ruby: 2.4 :rspec:"
23
- command: ".buildkite/steps/rspec.sh"
24
- plugins:
25
- docker#v1.2.1:
26
- image: "ruby:2.4"
27
- agents:
28
- queue: "platform-docker-spot"
29
- timeout_in_minutes: 5
30
-
31
- - label: ":ruby: 2.3 :rspec:"
32
- command: ".buildkite/steps/rspec.sh"
33
- plugins:
34
- docker#v1.2.1:
35
- image: "ruby:2.3"
36
- agents:
37
- queue: "platform-docker-spot"
38
- timeout_in_minutes: 5
39
-
40
- - label: ":rubocop:"
41
- command: ".buildkite/steps/rubocop.sh"
42
- plugins:
43
- docker#v1.2.1:
44
- image: "ruby"
45
- agents:
46
- queue: "platform-docker-spot"
47
- timeout_in_minutes: 5
@@ -1,9 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -euo pipefail
4
-
5
- echo "--- :bundler: Bundling"
6
- bundle install --path .bundle
7
-
8
- echo "+++ :rspec: Running RSpec"
9
- bundle exec rspec
@@ -1,9 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -euo pipefail
4
-
5
- echo "--- :bundler: Bundling"
6
- bundle install --path .bundle
7
-
8
- echo "+++ :rubocop: Running Rubocop"
9
- bundle exec rubocop
@@ -1,23 +0,0 @@
1
- name: CI
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- test:
7
- strategy:
8
- fail-fast: false
9
- matrix:
10
- ruby: ['2.5', '2.6', '2.7', '3.0']
11
- runs-on: ubuntu-latest
12
-
13
- steps:
14
- - name: Checkout
15
- uses: actions/checkout@v2
16
- - name: Set up Ruby
17
- uses: ruby/setup-ruby@v1
18
- with:
19
- ruby-version: ${{ matrix.ruby }}
20
- - name: Install dependencies
21
- run: bundle install
22
- - name: Run tests
23
- run: bundle exec rake
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- *.gem
2
- .rspec_status
3
- /.bundle/
4
- /.yardoc
5
- /Gemfile.lock
6
- /_yardoc/
7
- /coverage/
8
- /doc/
9
- /error.txt
10
- /pkg/
11
- /spec/reports/
12
- /stdout.txt
13
- /tmp/
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper
data/.rubocop.yml DELETED
@@ -1,29 +0,0 @@
1
- ---
2
- AllCops:
3
- Exclude:
4
- - 'spike/*.rb'
5
- NewCops: enable
6
- TargetRubyVersion: 2.5
7
-
8
- Gemspec/RequiredRubyVersion:
9
- Enabled: false
10
-
11
- Metrics/BlockLength:
12
- Exclude:
13
- - 'spec/**/*'
14
- - 'test/**/*'
15
-
16
- Metrics/LineLength:
17
- Exclude:
18
- - 'spec/**/*'
19
- - 'test/**/*'
20
-
21
- Metrics/ModuleLength:
22
- Exclude:
23
- - 'spec/**/*'
24
- - 'test/**/*'
25
-
26
- Style/Documentation:
27
- Exclude:
28
- - 'spec/**/*'
29
- - 'test/**/*'
data/.tool-versions DELETED
@@ -1 +0,0 @@
1
- ruby 3.0.0
data/CODE_OF_CONDUCT.md DELETED
@@ -1,74 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at pete.johns@envato.com. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- source 'https://rubygems.org'
4
-
5
- git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
-
7
- # Specify your gem's dependencies in unwrappr.gemspec
8
- gemspec
data/Guardfile DELETED
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- guard :rspec, cmd: 'bundle exec rspec' do
4
- require 'guard/rspec/dsl'
5
- dsl = Guard::RSpec::Dsl.new(self)
6
-
7
- # RSpec files
8
- rspec = dsl.rspec
9
- watch(rspec.spec_helper) { rspec.spec_dir }
10
- watch(rspec.spec_support) { rspec.spec_dir }
11
- watch(rspec.spec_files)
12
-
13
- # Ruby files
14
- ruby = dsl.ruby
15
- dsl.watch_spec_files_for(ruby.lib_files)
16
- end
data/Rakefile DELETED
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
5
- require 'rubocop/rake_task'
6
-
7
- RuboCop::RakeTask.new
8
- RSpec::Core::RakeTask.new(:spec)
9
-
10
- task default: %i[rubocop spec]
data/bin/console DELETED
@@ -1,11 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'bundler/setup'
5
- require 'unwrappr'
6
-
7
- # You can add fixtures and/or initialization code here to make experimenting
8
- # with your gem easier. You can also use a different console, if you like.
9
-
10
- require 'pry'
11
- Pry.start
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
data/unwrappr.gemspec DELETED
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- lib = File.expand_path('lib', __dir__)
4
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'unwrappr/version'
6
-
7
- AUTHORS = {
8
- 'emilyn.escabarte@envato.com' => 'Emilyn Escabarte',
9
- 'joe.sustaric@envato.com' => 'Joe Sustaric',
10
- 'orien.madgwick@envato.com' => 'Orien Madgwick',
11
- 'pete.johns@envato.com' => 'Pete Johns',
12
- 'vladimir.chervanev@envato.com' => 'Vladimir Chervanev'
13
- }.freeze
14
-
15
- GITHUB_URL = 'https://github.com/envato/unwrappr'
16
- HOMEPAGE_URL = 'https://opensource.envato.com/projects/unwrappr.html'
17
-
18
- Gem::Specification.new do |spec| # rubocop:disable Metrics/BlockLength:
19
- spec.name = 'unwrappr'
20
- spec.version = Unwrappr::VERSION
21
- spec.authors = AUTHORS.values
22
- spec.email = AUTHORS.keys
23
-
24
- spec.summary = "A tool to unwrap your gems and see what's changed easily"
25
- spec.description = 'bundle update PRs: Automated. Annotated.'
26
- spec.homepage = HOMEPAGE_URL
27
- spec.license = 'MIT'
28
- spec.required_ruby_version = '>= 2.5'
29
- spec.required_rubygems_version = '>= 2.7'
30
-
31
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
32
- f.match(%r{^(test|spec|features)/})
33
- end
34
- spec.bindir = 'exe'
35
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
36
- spec.require_paths = ['lib']
37
-
38
- spec.add_dependency 'bundler', '< 3'
39
- spec.add_dependency 'bundler-audit', '>= 0.6.0'
40
- spec.add_dependency 'clamp', '~> 1'
41
- spec.add_dependency 'faraday', '~> 1'
42
- spec.add_dependency 'git', '~> 1'
43
- spec.add_dependency 'octokit', '~> 4.0'
44
- spec.add_dependency 'safe_shell', '~> 1'
45
-
46
- spec.add_development_dependency 'guard', '~> 2'
47
- spec.add_development_dependency 'guard-rspec', '~> 4'
48
- spec.add_development_dependency 'pry', '~> 0'
49
- spec.add_development_dependency 'rake', '>= 12.3.3'
50
- spec.add_development_dependency 'rspec', '~> 3.0'
51
- spec.add_development_dependency 'rspec-its', '~> 1'
52
- spec.add_development_dependency 'rubocop', '>= 0.49.0'
53
-
54
- spec.metadata = {
55
- 'bug_tracker_uri' => "#{GITHUB_URL}/issues",
56
- 'changelog_uri' => "#{GITHUB_URL}/blob/HEAD/CHANGELOG.md",
57
- 'documentation_uri' => "#{GITHUB_URL}/blob/HEAD/README.md",
58
- 'homepage_uri' => HOMEPAGE_URL,
59
- 'source_code_uri' => GITHUB_URL
60
- }
61
- end