gemstory 0.1.0 → 0.1.1

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
2
  SHA256:
3
- metadata.gz: 66652c50f8e1074651114aad547f9d51cc32cb14b1b578ace9d33bb4a235920d
4
- data.tar.gz: 2699c4d3c9bf92f8ce695e0ca42aef0ec5aa7b8f960a61954f3c04518935586d
3
+ metadata.gz: 003afca4f263042d29645b9deadcbc4088afad853bae518baf1caae0a65fdd3b
4
+ data.tar.gz: b93fe764dac7bbc3c3916736cdff1cdf5fee874183aebc845268c59b8bba3918
5
5
  SHA512:
6
- metadata.gz: 4d51b6e2eefc119be82487cabcc4767a09b7dffd78306b73c8b57d58fb0a188ac8e9fda24124e9de15777f7e46645dea42f38fa54822eb0efe191f6d097e8695
7
- data.tar.gz: 05cd3ce1949cd798cdee608c2a84b41ae1778404c0dd490fe4a2d400730814a5cfcd9893a2cbc1be6d3a86382af10d1125697519c046efff94dae702686d7fbf
6
+ metadata.gz: d3d9ec0457ee85800b737eb0adafaa7e5af0124df866d9d2c7d700b2dcc32eeceb67c814ca2b31e0a9388ec7fa8d2f5f68e9615b9064be818efacc58d86a073e
7
+ data.tar.gz: bba45f2a5f5c34a2cf31dc52af561c6fb9beae6240410aa5dbc362fdefd0252ce82037a56ad5a9ca23daafe5713096507c10a2c3631ccdd43ff918e1dafd95c0
@@ -0,0 +1 @@
1
+ 2.5.0
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gemstory (0.1.0.beta3)
4
+ gemstory (0.1.1)
5
5
  thor (~> 0.20.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,22 +1,32 @@
1
1
  # Gemstory
2
- Gemstory tells the story of gems in your project. Its a command line tool that will read the history of the Gemfile.lock and project the output in terminal.
2
+ Gemstory tells the history of gems in your project. Its a command line tool that will read the history of the Gemfile.lock and project the output in terminal.
3
3
 
4
4
  ## Installation
5
5
 
6
- $ gem install gemstory --pre
6
+ $ gem install gemstory
7
7
 
8
8
  ## Usage
9
9
 
10
- Rub `gemstory` in your project root folder
10
+ Run `gemstory` in your project root folder. This will return the history of Gem upgrades of the project.
11
+
12
+ #### Options
13
+
14
+ A single Gem name can be passed as an option. This will return details information about the Gem history, commits and authors.
15
+
16
+ `gemstory rails`
17
+
18
+ Or multiple Gems can be passed as options so that history can be compared.
19
+
20
+ `gemstory rails thin`
11
21
 
12
22
  ## Development
13
23
 
14
- This gem is at a beta state now. More CLI options are under construction. Output can be a json file or an HTML file in the future
24
+ More CLI options are under construction. Output can be a json file or an HTML file in the future.
15
25
 
16
26
 
17
27
  ## Contributing
18
28
 
19
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/gemstory. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
29
+ Bug reports and pull requests are welcome on GitHub at https://github.com/EdwinRozario/gemstory. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
20
30
 
21
31
  ## License
22
32
 
@@ -40,4 +40,3 @@ Gem::Specification.new do |spec|
40
40
  spec.add_development_dependency 'rspec', '~> 3.7'
41
41
  spec.add_development_dependency 'pry', '~> 0.11.3'
42
42
  end
43
-
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gemstory/version'
2
4
  require 'gemstory/reader'
3
5
  require 'gemstory/printer/helpers'
4
6
  require 'gemstory/printer/horizontal'
5
7
  require 'gemstory/printer/vertical'
6
- require 'gemstory/cli'
8
+ require 'gemstory/cli'
@@ -1,26 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
4
 
3
5
  module Gemstory
6
+ # Handles the CLI commands
4
7
  class Cli < Thor
5
8
  attr_reader :history, :printer
6
9
 
7
10
  def initialize(argv)
8
11
  @history = Reader.new(argv)
9
12
 
10
- if argv.empty?
11
- @printer = Printer::Horizontal
12
- elsif argv.length == 1
13
- @printer = Printer::Vertical
14
- else
15
- @printer = Printer::Horizontal
16
- end
13
+ @printer = if argv.empty?
14
+ Printer::Horizontal
15
+ elsif argv.length == 1
16
+ Printer::Vertical
17
+ else
18
+ Printer::Horizontal
19
+ end
17
20
  end
18
21
 
19
- desc "execute", "Will print the history of your gems"
22
+ desc 'execute', 'Will print the history of your gems'
20
23
  def execute
21
24
  @history.call
22
25
 
23
26
  @printer.new(@history).call
24
27
  end
25
28
  end
26
- end
29
+ end
@@ -1,25 +1,29 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemstory
2
4
  module Printer
5
+ # Helper methods for printers
3
6
  module Helpers
4
7
  def compare_version(current_version, last_version)
5
8
  last_version = Gem::Version.new(last_version)
6
9
  current_version = Gem::Version.new(current_version)
7
10
 
8
- if last_version < current_version
11
+ if last_version < current_version
9
12
  :up
10
13
  elsif last_version > current_version
11
14
  :down
12
15
  else
13
16
  :same
14
17
  end
15
-
16
- rescue
18
+ rescue ArgumentError
17
19
  :up
18
20
  end
19
21
 
20
22
  def status_code
21
- { up: " \u2191 ", down: " \u2193 ", next: " \u2192 " }
23
+ { up: " \033[0;32m\u2191\033[0;m ",
24
+ down: " \033[0;31m\u2193\033[0;m ",
25
+ next: " \033[0;34m \u2192 \033[0;m " }
22
26
  end
23
27
  end
24
28
  end
25
- end
29
+ end
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemstory
2
4
  module Printer
5
+ # Prints history vertically
3
6
  class Horizontal
4
7
  include Helpers
5
8
 
@@ -10,27 +13,27 @@ module Gemstory
10
13
  end
11
14
 
12
15
  def call
13
- @history.history.sort.each do |name, changes|
14
- print "#{name}"
15
-
16
- (@history.max_gem_name_size - name.to_s.length).times { print ' ' }
17
-
18
- print ": "
19
-
20
- changes.each do |change|
16
+ @history.history.sort.each do |gem_name, commits|
17
+ print "\033[0;33m#{gem_name}\033[0;m"
18
+
19
+ (@history.max_gem_name_size - gem_name.length).times { print ' ' }
20
+
21
+ print ': '
22
+
23
+ commits.each_with_index do |commit, index|
21
24
  version_status = :up
25
+ current_version = commit[:version]
22
26
 
23
- unless changes.index(change).zero?
27
+ unless index.zero?
24
28
  print status_code[:next]
25
29
 
26
- current_version = change[:version]
27
- last_version = changes[changes.index(change) - 1][:version]
30
+ last_version = commits[index - 1][:version]
28
31
  version_status = compare_version(current_version, last_version)
29
32
  end
30
33
 
31
- date_string = change[:date].strftime('%d.%m.%Y')
34
+ date_string = commit[:date].strftime('%d.%m.%Y')
32
35
 
33
- print "#{change[:version]}#{status_code[version_status]}(#{date_string})"
36
+ print "#{current_version}#{status_code[version_status]}(#{date_string})"
34
37
  end
35
38
 
36
39
  puts ' '
@@ -38,4 +41,4 @@ module Gemstory
38
41
  end
39
42
  end
40
43
  end
41
- end
44
+ end
@@ -1,39 +1,41 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemstory
2
4
  module Printer
5
+ # Prints hostory of a single gem verticalling through commits
3
6
  class Vertical
4
7
  include Helpers
5
8
 
6
9
  attr_reader :history
7
10
 
8
11
  def initialize(history)
9
- @history = history
12
+ @history = history.history
10
13
  end
11
14
 
12
15
  def call
13
- if @history.history.empty?
16
+ if @history.empty?
14
17
  puts 'Requested gem dosent exist in the Gemfile.lock'
15
18
  else
16
- gem_name = @history.history.first.first
17
- commits = @history.history.first.last
19
+ gem_name, commits = @history.first
18
20
 
19
- puts gem_name
21
+ puts "\033[0;33m#{gem_name}\033[0;m"
20
22
  puts ' '
21
23
 
22
- commits.each do |commit|
24
+ commits.each_with_index do |commit, index|
23
25
  version_status = :up
26
+ current_version = commit[:version]
24
27
 
25
- unless commits.index(commit).zero?
26
- current_version = commit[:version]
27
- last_version = commits[commits.index(commit) - 1][:version]
28
+ unless index.zero?
29
+ last_version = commits[index - 1][:version]
28
30
  version_status = compare_version(current_version, last_version)
29
31
  end
30
32
 
31
33
  date_string = commit[:date].strftime('%d.%m.%Y')
32
34
 
33
- puts "#{status_code[version_status]} #{commit[:version]} #{date_string} #{commit[:commit]} #{commit[:author]}"
35
+ puts "#{status_code[version_status]} #{current_version} #{date_string} #{commit[:commit]} #{commit[:author]}"
34
36
  end
35
37
  end
36
38
  end
37
39
  end
38
40
  end
39
- end
41
+ end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
 
3
5
  module Gemstory
6
+ # Reads the git logs and produce and Hash
4
7
  class Reader
5
8
  attr_reader :logs, :line, :date, :max_gem_name_size,
6
9
  :commit, :history, :author, :requested_gems
@@ -23,37 +26,35 @@ module Gemstory
23
26
 
24
27
  ruby_gem.strip!
25
28
  gem_name_part = ruby_gem.match(/(.*)(?= \()/)
26
-
29
+
27
30
  if gem_name_part
28
- gem_name = gem_name_part[0]
31
+ gem_name = gem_name_part[0].to_sym
29
32
  version = ruby_gem.match(/(?<=\()(.*?)(?=\))/)[0]
30
33
  else
31
- gem_name = ruby_gem
34
+ gem_name = ruby_gem.to_sym
32
35
  version = nil
33
36
  end
34
37
 
35
38
  unless @requested_gems.empty?
36
- return unless @requested_gems.include? gem_name
39
+ return unless @requested_gems.include? gem_name.to_s
37
40
  end
38
41
 
39
42
  @max_gem_name_size = gem_name.length if gem_name.length > @max_gem_name_size
40
-
41
- @history[gem_name.to_sym] ||= []
42
-
43
- @history[gem_name.to_sym] << { date: @date, commit: @commit,
44
- version: version, author: @author }
43
+ @history[gem_name] ||= []
44
+ @history[gem_name] << { date: date, commit: commit,
45
+ version: version, author: author }
45
46
  end
46
47
 
47
48
  def gem?
48
- @line.match(/(.*)(\()(.*?)(\))/)
49
+ line.match(/(.*)(\()(.*?)(\))/)
49
50
  end
50
51
 
51
52
  def new_line?
52
- @line.match(/^\+ /)
53
+ line.match(/^\+ /)
53
54
  end
54
55
 
55
56
  def author?
56
- matches = @line.match(/(?<=^Author: )(.*)/)
57
+ matches = line.match(/(?<=^Author: )(.*)/)
57
58
 
58
59
  if matches
59
60
  @author = matches[0]
@@ -64,7 +65,7 @@ module Gemstory
64
65
  end
65
66
 
66
67
  def date?
67
- matches = @line.match(/(?<=^Date: )(.*)/)
68
+ matches = line.match(/(?<=^Date: )(.*)/)
68
69
 
69
70
  if matches
70
71
  @date = Date.parse(matches[0])
@@ -75,7 +76,7 @@ module Gemstory
75
76
  end
76
77
 
77
78
  def commit?
78
- matches = @line.match(/(?<=^commit )(.*)/)
79
+ matches = line.match(/(?<=^commit )(.*)/)
79
80
 
80
81
  if matches
81
82
  @commit = matches[0]
@@ -91,7 +92,7 @@ module Gemstory
91
92
 
92
93
  @logs.each_line do |line|
93
94
  @line = line.strip
94
-
95
+
95
96
  next if commit?
96
97
  next if date?
97
98
  next if author?
@@ -110,7 +111,6 @@ module Gemstory
110
111
  end
111
112
  end.compact
112
113
  end
113
-
114
- end
114
+ end
115
115
  end
116
116
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gemstory
2
- VERSION = '0.1.0'.freeze
4
+ VERSION = '0.1.1'
3
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gemstory
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Edwin Rozario
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-21 00:00:00.000000000 Z
11
+ date: 2018-02-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -91,6 +91,7 @@ extra_rdoc_files: []
91
91
  files:
92
92
  - ".gitignore"
93
93
  - ".rspec"
94
+ - ".ruby-version"
94
95
  - ".travis.yml"
95
96
  - CODE_OF_CONDUCT.md
96
97
  - Gemfile