git_toolbox 0.7.0 → 0.7.2

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: 0bb05b8ed627b884189e6b9c17eddc7284f20f4e2bce598dd24f154b6f717c99
4
- data.tar.gz: bf1d78a1e32c113cb00cb0b0c9150f09359d4743927505d0ea34dd0d9fa48f20
3
+ metadata.gz: 8a06dde4facc3e0dff5fe756ae0d5bbc3b373a71ee79f2b677f8a088ee72bf60
4
+ data.tar.gz: b9f3883565a800112d61a67bc15ec348cce8e1914037ef68e1fe3b15704c0024
5
5
  SHA512:
6
- metadata.gz: 949501f9b215d45757904e2201675539a9601a65e88e5418cb97ced39f3fa343aba3a53d34a45caefe490e46095d43318465634bc70d5b55bdda704676fd5333
7
- data.tar.gz: 79f86d45ac90f0be948fd36948314aa0e5b27d1b596bdd8d36b661983660986ca1a91199b9698a5d5bce0947d70e0ffd8665f8506ee19ebaad7c5b99acdbea21
6
+ metadata.gz: 960f230cd4e90e82ad1ac61313d237071491eb7f1f7461ae7246d7e4af7c2f56d6c2b9731be61233b70df35bfd1fb87b4c5d12c710de21f967348ef351be5787
7
+ data.tar.gz: 996321047eff57ea6a066059659208c3ab6433686f125fbf5729b5c9f9574ff3320b38777b08daec98b5151a4863b367e7817eb3f4190c9d0f806ebb3128a07c
@@ -23,7 +23,7 @@ require 'get/commons/common'
23
23
  # Utility module
24
24
  module Git
25
25
  # Groups: 1 = type, 2 = scope with (), 3 = scope, 4 = breaking change, 5 = summary
26
- CONVENTIONAL_COMMIT_REGEX = /^(\w+)(\((\w+)\))?(!)?:(.*)/
26
+ CONVENTIONAL_COMMIT_REGEX = /^(\w+)(\(([\w-]+)\))?(!)?:(.*)/
27
27
 
28
28
  # Check if the command is called while in a git repository.
29
29
  # If the command fails, it is assumed to not be in a git repository.
@@ -42,18 +42,25 @@ module Git
42
42
  return unless block_given?
43
43
 
44
44
  commits_from_version =
45
- `git --no-pager log --oneline --pretty=format:%s #{version.nil? ? '' : "^#{version}"} HEAD`
45
+ `git --no-pager log --oneline --pretty=format:%s #{version.nil? ? '' : "^#{version} HEAD"} 2>/dev/null`
46
46
  .split("\n")
47
+ .then { |value| $CHILD_STATUS.exitstatus.zero? ? value : [] }
47
48
  block.call(commits_from_version)
48
49
  end
49
50
 
50
51
  # Returns the last version and caches it for the next calls.
51
52
  def self.last_version
52
- @@last_version ||= `git describe --tags --abbrev=0`.strip
53
+ @@last_version ||=
54
+ `git describe --tags --abbrev=0 2>/dev/null`
55
+ .strip
56
+ .then { |value| value if $CHILD_STATUS.exitstatus.zero? }
53
57
  end
54
58
 
55
59
  # Returns the last release and caches it for the next calls.
56
60
  def self.last_release
57
- @@last_release ||= `git --no-pager tag --list | sed 's/+/_/' | sort -V | sed 's/_/+/' | tail -n 1`.strip
61
+ @@last_release ||=
62
+ `git --no-pager tag --list | sed 's/+/_/' | sort -V | sed 's/_/+/' | tail -n 1`
63
+ .strip
64
+ .then { |value| value unless value.empty? }
58
65
  end
59
66
  end
@@ -139,7 +139,7 @@ class Changelog < Command
139
139
  formatted_types = []
140
140
  changelog.except('feat', 'fix').each { |key, value| formatted_types.push(format_type(key, value)) }
141
141
  <<~CHANGELOG
142
- #{@format[:title].sub('%s', "Changelog from version #{from_version}")}
142
+ #{@format[:title].sub('%s', "Changelog from #{from_version.nil? ? 'first commit' : "version #{from_version}"}")}
143
143
  #{(formatted_features + formatted_fixes + formatted_types).join("\n").strip}
144
144
  CHANGELOG
145
145
  end
@@ -65,7 +65,7 @@ module PromptHandler
65
65
  extract_types_and_scopes
66
66
  @@cli.choose do |menu|
67
67
  menu.flow = :columns_down
68
- menu.prompt = 'Choose the scope of your commit '
68
+ menu.prompt = 'Choose the scope of your commit: '
69
69
  @@custom_scopes.each do |scope|
70
70
  menu.choice(scope.to_sym)
71
71
  end
@@ -144,14 +144,20 @@ class Describe < Command
144
144
  end
145
145
 
146
146
  def describe_current_commit
147
- return Git.last_version if Git.with_commit_list_from(Git.last_version, &:empty?)
148
-
149
- puts "Last version: #{Git.last_version}" if @options[:diff]
147
+ if Git.with_commit_list_from(Git.last_version, &:empty?)
148
+ if Git.last_version.nil?
149
+ Common.error('Cannot describe an empty repository.')
150
+ else
151
+ Git.last_version
152
+ end
153
+ else
154
+ puts "Last version: #{Git.last_version}" if @options[:diff]
150
155
 
151
- current_commit_version = next_release
152
- create_signed_tag(current_commit_version) if @options[:create_tag]
156
+ current_commit_version = next_release
157
+ create_signed_tag(current_commit_version) if @options[:create_tag]
153
158
 
154
- current_commit_version
159
+ current_commit_version
160
+ end
155
161
  end
156
162
 
157
163
  def next_release
@@ -80,7 +80,10 @@ class Tree < Command
80
80
  TIME_REGEX = /(\([a-z0-9 ,]+\))/
81
81
  TIME_MINIMUM_PADDING = 2
82
82
 
83
+ # rubocop:disable Metrics/MethodLength
83
84
  def transform_log(text)
85
+ return 'This repository has no commit.' if text.empty?
86
+
84
87
  split_lines = text.split("\n").map { |element| element.split('§') }
85
88
  # The first line is always a commit line, so it always have a time reference
86
89
  first_line_time = split_lines.first[1]
@@ -110,6 +113,7 @@ class Tree < Command
110
113
  end
111
114
  .join("\n")
112
115
  end
116
+ # rubocop:enable Metrics/MethodLength
113
117
 
114
118
  def page_log(text)
115
119
  system("less -RfS <(echo -e '#{text}')")
data/lib/get/version.rb CHANGED
@@ -18,5 +18,5 @@
18
18
  # frozen_string_literal: true
19
19
 
20
20
  module Get
21
- VERSION = '0.7.0'
21
+ VERSION = '0.7.2'
22
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git_toolbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Speranza
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-03 00:00:00.000000000 Z
11
+ date: 2023-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: optimist