gistory 0.1.4 → 0.2.0

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
- 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: []