gistory 0.1.4 → 0.2.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 3c869b6ccd9aeb5d0a9ad7b080aa35f326d62863
4
- data.tar.gz: a8b2d0930813f9d6c62503562ff68c2ceac79f30
2
+ SHA256:
3
+ metadata.gz: '09f3c9251a676aa3fe78d5487e7cb60ee6c8348de21ae7ad4d91ee7a16623f69'
4
+ data.tar.gz: bb6b913eb6a330dea5db7e8f8bdd4e1db87324ff72abdeb48c835c00c87ab0a3
5
5
  SHA512:
6
- metadata.gz: 3ce6ad22492538a40df7e828931c2ec67fa423d9716db58deeefa4624244c0228427be12d9a763779e2c7c9f450efca0364beb56134915db0878c751b3429f55
7
- data.tar.gz: 385aef234e3efe8b297792c7c880d0f3a41881d8fa58cf12bc7b8ac35b4196ca675dbe00446e5ca32c236df5d624f249044d8f3859ff6f457764cc97606cf3bc
6
+ metadata.gz: 5f0931cb9e7673d6e7d88e1eb80e892ae3f482b1c3c8e4feae59b1b28f20b45a37bb6c08d51e4d15ec0d7115b780c0cc2f4dc4c530739197c4e9c48975ef19db
7
+ data.tar.gz: 137c0bb24fa19cea60221ab8a57994bc7a4e46c99aa4666c6b3d35b133aeb0559541b26090c9d3f92f71d87daacc471b5fe283e0824433d98d1b8af30c3b3223
@@ -13,4 +13,4 @@ ratings:
13
13
  paths:
14
14
  - "**.rb"
15
15
  exclude_paths:
16
- - test/
16
+ - spec/
data/.gitignore CHANGED
@@ -8,4 +8,7 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
 
11
+ # rspec failure tracking
12
+ .rspec_status
13
+
11
14
  NOTES.txt
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
@@ -1,18 +1,84 @@
1
- Metrics/LineLength:
2
- Max: 120
3
-
4
- Documentation:
5
- Enabled: false
1
+ require: rubocop-rspec
6
2
 
7
3
  Metrics/AbcSize:
8
- # The ABC size is a calculated magnitude, so this number can be a Fixnum or a Float.
9
- # http://c2.com/cgi/wiki?AbcMetric
10
- Max: 20
4
+ Max: 25
5
+ Exclude:
6
+ - 'spec/**/*_spec.rb'
7
+
8
+ Metrics/BlockLength:
11
9
  Exclude:
12
- - 'test/**/*_test.rb' # ignore tests which typically have high B count due to many asserts
10
+ - 'spec/**/*_spec.rb'
13
11
 
14
12
  Metrics/MethodLength:
15
- Max: 15
13
+ Max: 20
14
+
15
+ Layout/EmptyLineAfterGuardClause:
16
+ Enabled: false
17
+
18
+ Layout/LineLength:
19
+ Max: 120
20
+
21
+ Style/BlockDelimiters:
22
+ Exclude:
23
+ - 'spec/**/*_spec.rb'
24
+
25
+ Style/Documentation:
26
+ Enabled: false
27
+
28
+ Style/IfUnlessModifier:
29
+ Enabled: false
16
30
 
17
31
  Style/FrozenStringLiteralComment:
18
32
  EnforcedStyle: always
33
+
34
+ # rubocop-rspec
35
+
36
+ RSpec/MultipleExpectations:
37
+ Max: 15
38
+
39
+ RSpec/ExampleLength:
40
+ Max: 15
41
+
42
+ # starting rubocop 0.80 newly added cops need to be explicitly enabled:
43
+
44
+ Lint/DeprecatedOpenSSLConstant:
45
+ Enabled: true
46
+
47
+ Layout/EmptyLinesAroundAttributeAccessor:
48
+ Enabled: true
49
+
50
+ Lint/MixedRegexpCaptureTypes:
51
+ Enabled: true
52
+
53
+ Lint/RaiseException:
54
+ Enabled: true
55
+
56
+ Layout/SpaceAroundMethodCallOperator:
57
+ Enabled: true
58
+
59
+ Lint/StructNewOverride:
60
+ Enabled: true
61
+
62
+ Style/ExponentialNotation:
63
+ Enabled: true
64
+
65
+ Style/HashEachMethods:
66
+ Enabled: true
67
+
68
+ Style/HashTransformKeys:
69
+ Enabled: true
70
+
71
+ Style/HashTransformValues:
72
+ Enabled: true
73
+
74
+ Style/RedundantFetchBlock:
75
+ Enabled: true
76
+
77
+ Style/RedundantRegexpCharacterClass:
78
+ Enabled: true
79
+
80
+ Style/RedundantRegexpEscape:
81
+ Enabled: true
82
+
83
+ Style/SlicingWithRange:
84
+ Enabled: true
@@ -1,8 +1,9 @@
1
1
  sudo: false
2
2
  language: ruby
3
+ script:
4
+ - bundle exec rspec
3
5
  rvm:
4
- - 2.4.0
5
- - 2.3.3
6
- - 2.2.6
7
- - 2.1.10
8
- before_install: gem install bundler -v 1.14.3
6
+ - 2.6.6
7
+ - 2.5.8
8
+ - 2.4.10
9
+ before_install: gem install bundler -v 1.17.3
data/Gemfile CHANGED
@@ -12,7 +12,6 @@ end
12
12
 
13
13
  group :test do
14
14
  gem 'coveralls', require: false
15
- gem 'flexmock' # mock library
16
15
  gem 'simplecov', require: false # code coverage
17
16
  end
18
17
 
data/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![Build Status](https://travis-ci.org/serch/gistory.svg?branch=master)](https://travis-ci.org/serch/gistory)
6
6
  [![Coverage Status](https://coveralls.io/repos/github/serch/gistory/badge.svg?branch=master)](https://coveralls.io/github/serch/gistory?branch=master)
7
7
 
8
- If you use bundler and git, and want to know when a gem you are using was updated, `gistory` comes to your rescue, simply:
8
+ If you use bundler and git and you want to know when a gem was updated, `gistory` comes to the rescue, simply:
9
9
 
10
10
  ```shell
11
11
  gem install gistory
@@ -14,6 +14,7 @@ gistory sidekiq
14
14
  ```
15
15
 
16
16
  and you'll see something like:
17
+
17
18
  ```
18
19
  Gem: sidekiq
19
20
  Current version: 4.2.7
@@ -25,11 +26,17 @@ Change history:
25
26
  4.1.4 on Wed, 9 Nov 2016 14:31 +01:00 (commit 05a3c549)
26
27
  ```
27
28
 
28
- By default `gistory` only looks at the last 100 changes to Gemfile.lock
29
- if you want to see farther in the past run:
29
+ By default `gistory` only looks at the last 100 commits made to the current branch.
30
+ If you want to see farther back in the past run:
31
+
32
+ ```shell
33
+ gistory sidekiq -m1000
34
+ ```
35
+
36
+ If you want to look at all changes to Gemfile.lock in all branches, use the `-a` switch:
30
37
 
31
38
  ```shell
32
- gistory sidekiq -m10000
39
+ gistory sidekiq -a
33
40
  ```
34
41
 
35
42
  Note that if the gem was added, then removed, and then added again, `gistory` will
@@ -43,3 +50,4 @@ only show the latest version changes up until it was removed.
43
50
  - use a libgit2 binding instead of the git cli, how much faster it is?
44
51
  - remove bundler dep
45
52
  - add yard doc
53
+ - do not print the warning text if there were no more changes in the lock file
data/Rakefile CHANGED
@@ -1,12 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'bundler/gem_tasks'
4
- require 'rake/testtask'
4
+ require 'rspec/core/rake_task'
5
5
 
6
- Rake::TestTask.new(:test) do |t|
7
- t.libs << 'test'
8
- t.libs << 'lib'
9
- t.test_files = FileList['test/**/*_test.rb']
10
- end
6
+ RSpec::Core::RakeTask.new(:spec)
11
7
 
12
- task default: :test
8
+ task default: :spec
@@ -8,7 +8,7 @@ require 'pry'
8
8
  root_path = "#{File.dirname(__FILE__)}/.."
9
9
 
10
10
  # require all files in lib for quick access to them in the console
11
- Dir["#{root_path}/lib/**/*.rb"].each { |file| require file }
11
+ Dir["#{root_path}/lib/**/*.rb"].sort.each { |file| require file }
12
12
 
13
13
  def reload!
14
14
  verbosity = $VERBOSE
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- lib = File.expand_path('../../lib', __FILE__)
4
+ lib = File.expand_path('../lib', __dir__)
5
5
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
6
 
7
7
  require 'gistory'
@@ -1,7 +1,6 @@
1
- # coding: utf-8
2
1
  # frozen_string_literal: true
3
2
 
4
- lib = File.expand_path('../lib', __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
5
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
5
  require 'gistory/version'
7
6
 
@@ -9,7 +8,7 @@ Gem::Specification.new do |spec|
9
8
  spec.name = 'gistory'
10
9
  spec.version = Gistory::VERSION
11
10
  spec.platform = Gem::Platform::RUBY
12
- spec.required_ruby_version = '>= 2.1'
11
+ spec.required_ruby_version = '>= 2.4'
13
12
  spec.authors = ['Sergio Medina']
14
13
  spec.email = ['medinasergio@gmail.com']
15
14
 
@@ -28,6 +27,10 @@ Gem::Specification.new do |spec|
28
27
  spec.add_dependency 'bundler', '~> 1.0'
29
28
  spec.add_dependency 'colorize'
30
29
 
31
- spec.add_development_dependency 'rake', '~> 10.0'
32
- spec.add_development_dependency 'minitest', '~> 5.0'
30
+ spec.add_development_dependency 'pry'
31
+ spec.add_development_dependency 'pry-byebug'
32
+ spec.add_development_dependency 'rake', '~> 13.0'
33
+ spec.add_development_dependency 'rspec', '~> 3.9'
34
+ spec.add_development_dependency 'rubocop'
35
+ spec.add_development_dependency 'rubocop-rspec'
33
36
  end
@@ -11,6 +11,7 @@ require 'gistory/errors'
11
11
  require 'gistory/commit'
12
12
  require 'gistory/version_change'
13
13
  require 'gistory/git_repo'
14
+ require 'gistory/lockfile_parser'
14
15
  require 'gistory/change_log'
15
16
 
16
17
  module Gistory
@@ -1,10 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler'
4
-
5
3
  module Gistory
6
4
  class ChangeLog
7
- LOCKFILE = 'Gemfile.lock'.freeze
5
+ LOCKFILE = 'Gemfile.lock'
8
6
 
9
7
  def initialize(repo:)
10
8
  @repo = repo
@@ -12,33 +10,41 @@ module Gistory
12
10
 
13
11
  def changelog_for_gem(gem_name)
14
12
  version_changes = []
15
- previous_version = nil
16
- lockfile_changes = @repo.changes_to_file(LOCKFILE)
13
+ commits_with_changes = @repo.changes_to_file(LOCKFILE)
14
+
15
+ # no lockfile found or no changes to the lockfile found
16
+ return [] if commits_with_changes.empty?
17
+
18
+ previous_commit = commits_with_changes.shift
19
+ previous_gem_spec = gem_version_at_commit_hash(previous_commit.short_hash, gem_name)
20
+ # only one change to the lockfile was found and the gem was not there
21
+ return [] if previous_gem_spec.nil?
17
22
 
18
- lockfile_changes.each do |commit|
19
- gem_spec = gem_spec_at_commit_hash(commit.short_hash, gem_name)
23
+ commits_with_changes.each do |current_commit|
24
+ current_gem_spec = gem_version_at_commit_hash(current_commit.short_hash, gem_name)
20
25
 
21
26
  # we reached the end, the gem didn't exist back then
22
27
  # TODO: what if it was added then removed and then added again?
23
- break if gem_spec.nil?
28
+ break if current_gem_spec.nil?
24
29
 
25
- # only store version changes of this gem
26
- unless gem_spec.version.to_s == previous_version
27
- version_changes << VersionChange.new(commit: commit, version: gem_spec.version)
28
- previous_version = gem_spec.version.to_s
30
+ if current_gem_spec != previous_gem_spec
31
+ version_changes << VersionChange.new(commit: previous_commit, version: previous_gem_spec)
29
32
  end
33
+
34
+ previous_gem_spec = current_gem_spec
35
+ previous_commit = current_commit
30
36
  end
31
37
 
38
+ version_changes << VersionChange.new(commit: previous_commit, version: previous_gem_spec)
39
+
32
40
  version_changes
33
41
  end
34
42
 
35
43
  private
36
44
 
37
- def gem_spec_at_commit_hash(commit_hash, gem_name)
45
+ def gem_version_at_commit_hash(commit_hash, gem_name)
38
46
  lockfile_content = @repo.file_content_at_commit(commit_hash, LOCKFILE)
39
- lockfile = Bundler::LockfileParser.new(lockfile_content)
40
- gem_spec = lockfile.specs.find { |spec| spec.name == gem_name }
41
- gem_spec
47
+ LockfileParser.new(lockfile_content: lockfile_content).gem_version(gem_name)
42
48
  end
43
49
  end
44
50
  end
@@ -18,8 +18,8 @@ module Gistory
18
18
  parse_gem_name
19
19
  @io.error("extra parameters ignored: #{@args}") unless @args.count.zero?
20
20
  @config
21
- rescue OptionParser::InvalidOption => err
22
- raise(Gistory::ParserError, err.message)
21
+ rescue OptionParser::InvalidOption => e
22
+ raise(Gistory::ParserError, e.message)
23
23
  end
24
24
 
25
25
  def to_s
@@ -38,33 +38,35 @@ module Gistory
38
38
  parser = OptionParser.new
39
39
  parser.banner = 'Usage: gistory <gem_name> [options]'
40
40
 
41
- add_specific_options(parser, config)
42
- add_common_options(parser)
41
+ add_options(parser, config)
43
42
 
44
43
  parser
45
44
  end
46
45
 
47
- def add_specific_options(parser, config)
46
+ def add_options(parser, config)
48
47
  parser.separator ''
49
- parser.separator 'Specific options:'
50
-
51
- add_max_lockfile_changes(parser, config)
52
- end
53
-
54
- def add_common_options(parser)
55
- parser.separator ''
56
- parser.separator 'Common options:'
48
+ parser.separator 'Options:'
57
49
 
50
+ add_max_fetched_commits(parser, config)
51
+ add_use_commits_from_all_branches(parser, config)
58
52
  add_help(parser)
59
53
  add_version(parser)
60
54
  end
61
55
 
62
- def add_max_lockfile_changes(parser, config)
63
- default = config.max_lockfile_changes
64
- description = "max number of changes to the lock file (default #{default})"
65
- parser.on('-m', '--max-lockfile-changes [INTEGER]', Integer, description) do |m|
66
- raise(Gistory::ParserError, 'argument --max-lockfile-changes must be an integer') if m.nil?
67
- config.max_lockfile_changes = m
56
+ def add_max_fetched_commits(parser, config)
57
+ default = config.max_fetched_commits
58
+ description = "max number of commits to be fetched (default #{default})"
59
+ parser.on('-m', '--max-fetched-commits [Integer]', Integer, description) do |m|
60
+ raise(Gistory::ParserError, 'argument --max-fetched-commits must be an integer') if m.nil?
61
+ config.max_fetched_commits = m
62
+ end
63
+ end
64
+
65
+ def add_use_commits_from_all_branches(parser, config)
66
+ description = 'use commits from all branches ' \
67
+ '(by default it uses only commits made to the current branch)'
68
+ parser.on('-a', '--all-branches', description) do |a|
69
+ config.all_branches = a
68
70
  end
69
71
  end
70
72
 
@@ -14,11 +14,11 @@ module Gistory
14
14
  parser = Cli::ArgParser.new(args: @args, io: @io)
15
15
  config = parser.parse
16
16
  history(repo, config.gem_name)
17
- rescue Gistory::ParserError => error
18
- @io.error error.message
17
+ rescue Gistory::ParserError => e
18
+ @io.error e.message
19
19
  @io.puts parser
20
- rescue Gistory::Error => error
21
- @io.error error.message
20
+ rescue Gistory::Error => e
21
+ @io.error e.message
22
22
  end
23
23
 
24
24
  private
@@ -34,11 +34,33 @@ module Gistory
34
34
  @io.puts "Current version: #{changes.first.version}"
35
35
  @io.puts ''
36
36
 
37
+ print_change_history(changes)
38
+
39
+ @io.puts ''
40
+
41
+ print_configuration_info
42
+ end
43
+
44
+ def print_change_history(changes)
37
45
  @io.puts 'Change history:'
46
+ max_length = changes.map { |c| c.version.length }.max
47
+
38
48
  changes.each do |change|
39
- @io.puts "#{change.version} on #{change.date.strftime('%a, %e %b %Y %H:%M %Z')} (commit #{change.short_hash})"
49
+ @io.puts "#{change.version.ljust(max_length)} on #{change.date.strftime('%a, %e %b %Y %H:%M %Z')} " \
50
+ "(commit #{change.short_hash})"
40
51
  end
41
52
  end
53
+
54
+ def print_configuration_info
55
+ max = Gistory.config.max_fetched_commits
56
+ if Gistory.config.all_branches?
57
+ @io.puts "The last #{max} changes to the lock file were fetched."
58
+ else
59
+ @io.puts "The last #{max} commits made to the current branch were fetched."
60
+ end
61
+
62
+ @io.puts 'To see farther in the past use the -m switch'
63
+ end
42
64
  end
43
65
  end
44
66
  end
@@ -11,5 +11,9 @@ module Gistory
11
11
  @date = DateTime.parse(date.to_s)
12
12
  freeze
13
13
  end
14
+
15
+ def to_s
16
+ "Commit #{short_hash} on #{date}"
17
+ end
14
18
  end
15
19
  end
@@ -2,10 +2,16 @@
2
2
 
3
3
  module Gistory
4
4
  class Configuration
5
- attr_accessor :gem_name, :max_lockfile_changes
5
+ attr_accessor :gem_name, :max_fetched_commits
6
+ attr_writer :all_branches
6
7
 
7
8
  def initialize
8
- @max_lockfile_changes = 100
9
+ @max_fetched_commits = 100
10
+ @all_branches = false
11
+ end
12
+
13
+ def all_branches?
14
+ @all_branches
9
15
  end
10
16
  end
11
17
  end
@@ -10,8 +10,9 @@ module Gistory
10
10
  end
11
11
 
12
12
  def changes_to_file(filename)
13
- max_count = Gistory.config.max_lockfile_changes
14
- hashes_and_dates = git("log --pretty=format:'%h|%cD' --max-count=#{max_count} --follow #{filename}")
13
+ max_count = Gistory.config.max_fetched_commits
14
+ strategy = git_log_strategy(filename)
15
+ hashes_and_dates = git("log --pretty=format:'%h|%cD' --max-count=#{max_count} #{strategy}")
15
16
  to_commits(hashes_and_dates.split("\n"))
16
17
  end
17
18
 
@@ -21,6 +22,15 @@ module Gistory
21
22
 
22
23
  private
23
24
 
25
+ def git_log_strategy(filename)
26
+ if Gistory.config.all_branches?
27
+ "--follow #{filename}"
28
+ else
29
+ # TODO: filter out commits that did not introduce changes to the lock file
30
+ '--first-parent'
31
+ end
32
+ end
33
+
24
34
  def git_cli_available?
25
35
  system('which git > /dev/null 2>&1')
26
36
  end
@@ -34,7 +44,7 @@ module Gistory
34
44
 
35
45
  def git(command)
36
46
  out = `git #{command}`
37
- raise('Git CLI command failed') unless $CHILD_STATUS.success?
47
+ raise 'Git CLI command failed' unless $CHILD_STATUS.success?
38
48
  out
39
49
  end
40
50
  end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler'
4
+
5
+ module Gistory
6
+ class LockfileParser
7
+ def initialize(lockfile_content:)
8
+ @lockfile_content = lockfile_content
9
+ end
10
+
11
+ def gem_version(gem_name)
12
+ lockfile = Bundler::LockfileParser.new(@lockfile_content)
13
+ gem_spec = lockfile.specs.find { |spec| spec.name == gem_name }
14
+ gem_spec ? gem_spec.version.to_s : nil
15
+ rescue Bundler::LockfileError => _e
16
+ # bundler could not parse the lockfile
17
+ # f.i. it could have been committed with merge conflicts
18
+ # try to parse it with a regex
19
+ # gem version looks like " byebug (9.0.6)"
20
+ # TODO: what if the gem was in the merge conflict?
21
+ regexp = /\n\s{4}#{gem_name} \((?<version>.+)\)\n/
22
+ matches = @lockfile_content.match(regexp)
23
+ matches ? matches[:version] : nil
24
+ end
25
+ end
26
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Gistory
4
- VERSION = '0.1.4'.freeze
4
+ VERSION = '0.2.0'
5
5
  end
@@ -14,5 +14,9 @@ module Gistory
14
14
  @version = version
15
15
  freeze
16
16
  end
17
+
18
+ def to_s
19
+ "Version #{version} (on #{date} by #{short_hash})"
20
+ end
17
21
  end
18
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gistory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Medina
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-26 00:00:00.000000000 Z
11
+ date: 2020-06-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,34 +38,90 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry-byebug
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
41
69
  - !ruby/object:Gem::Dependency
42
70
  name: rake
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
73
  - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: '10.0'
75
+ version: '13.0'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
80
  - - "~>"
53
81
  - !ruby/object:Gem::Version
54
- version: '10.0'
82
+ version: '13.0'
55
83
  - !ruby/object:Gem::Dependency
56
- name: minitest
84
+ name: rspec
57
85
  requirement: !ruby/object:Gem::Requirement
58
86
  requirements:
59
87
  - - "~>"
60
88
  - !ruby/object:Gem::Version
61
- version: '5.0'
89
+ version: '3.9'
62
90
  type: :development
63
91
  prerelease: false
64
92
  version_requirements: !ruby/object:Gem::Requirement
65
93
  requirements:
66
94
  - - "~>"
67
95
  - !ruby/object:Gem::Version
68
- version: '5.0'
96
+ version: '3.9'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
69
125
  description: 'Gistory: Know exactly when a gem was updated in your Gemfile.lock'
70
126
  email:
71
127
  - medinasergio@gmail.com
@@ -77,6 +133,7 @@ files:
77
133
  - ".codeclimate.yml"
78
134
  - ".coveralls.yml"
79
135
  - ".gitignore"
136
+ - ".rspec"
80
137
  - ".rubocop.yml"
81
138
  - ".travis.yml"
82
139
  - Gemfile
@@ -96,13 +153,14 @@ files:
96
153
  - lib/gistory/configuration.rb
97
154
  - lib/gistory/errors.rb
98
155
  - lib/gistory/git_repo.rb
156
+ - lib/gistory/lockfile_parser.rb
99
157
  - lib/gistory/version.rb
100
158
  - lib/gistory/version_change.rb
101
159
  homepage: https://www.github.com/serch/gistory
102
160
  licenses:
103
161
  - MIT
104
162
  metadata: {}
105
- post_install_message:
163
+ post_install_message:
106
164
  rdoc_options: []
107
165
  require_paths:
108
166
  - lib
@@ -110,16 +168,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
110
168
  requirements:
111
169
  - - ">="
112
170
  - !ruby/object:Gem::Version
113
- version: '2.1'
171
+ version: '2.4'
114
172
  required_rubygems_version: !ruby/object:Gem::Requirement
115
173
  requirements:
116
174
  - - ">="
117
175
  - !ruby/object:Gem::Version
118
176
  version: '0'
119
177
  requirements: []
120
- rubyforge_project:
121
- rubygems_version: 2.6.12
122
- signing_key:
178
+ rubygems_version: 3.0.3
179
+ signing_key:
123
180
  specification_version: 4
124
181
  summary: 'Gistory: Know exactly when a gem was updated in your Gemfile.lock'
125
182
  test_files: []