git-version-bump 0.15.1 → 0.16.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: c7aa6d10395aa2b64c367ea1050ae82d59ced3b7
4
- data.tar.gz: bde064218de7a6bb85a4a903c7a89ac87f81684d
2
+ SHA256:
3
+ metadata.gz: 94d95a18eae098b144f0f9afff676405cb1a05cf35b6786410e160269d7b34ec
4
+ data.tar.gz: db3e976ffa2d7e5493c957d340aafaffdd570d45bc3db83e2f0d6f70742e58c0
5
5
  SHA512:
6
- metadata.gz: 8c35d8caa34d3bdda551444a4e10ad0d28eee67e712a67b632d4409c8656d94413389620d6714fbc24ecd27d0481d80c59fd338bf59c1e07bd65a1402ef694d6
7
- data.tar.gz: 68c3056ec5589daf817f572eb3dc9778252a6acd01688d2434370c296e18e1810e9befa42d40381e3d166f22c874bbff1c5d7c93f9d3f246ae4dcc7a92cefb02
6
+ metadata.gz: 4c2a692ace08cda02976a2647dec09b978a82829e51e7bdec4a93c7954d3e4728e24bcac211fa128861fec979f5f41290e88ca40f6e04feb371f362854abf9e3
7
+ data.tar.gz: 737dd2b41d89ca7d33722948e69a9de74f10e260d4776aba82cfee9f6b4a15df28042b86d839ceb53012ac7a1247278b8e46b259e10ced7cae904cadb512510d
@@ -4,10 +4,11 @@ require 'git-version-bump'
4
4
 
5
5
  if ARGV[0].nil? or
6
6
  ARGV[0].empty? or
7
+ (ARGV.length == 1 && (ARGV[0] == "-d" || ARGV[0] == "--dry-run")) or
7
8
  ARGV[0] == '-h' or
8
9
  ARGV[0] == '--help'
9
10
  $stderr.puts <<-EOF.gsub(/^\t\t/, '')
10
- Usage: git version-bump [-n|--notes] <major|minor|patch|show>
11
+ Usage: git version-bump [-n|--notes] [-d|--dry-run] <major|minor|patch|show>
11
12
 
12
13
  'major': x.y.z -> x+1.0.0
13
14
  'minor': x.y.z -> x.y+1.0
@@ -15,11 +16,13 @@ if ARGV[0].nil? or
15
16
 
16
17
  'show': Display the current GVB version
17
18
 
18
- --release: Prompt for "release notes" to add to the release tag
19
+ -d, --dry-run: Calculate and return the bump value, but don't update git workspace or remote
20
+ -n, --notes: Prompt for "release notes" to add to the release tag
19
21
  EOF
20
22
  end
21
23
 
22
24
  release_notes = ARGV.delete('-n') || ARGV.delete('--notes')
25
+ dry_run = ARGV.delete('-d') || ARGV.delete('--dry-run')
23
26
 
24
27
  if ARGV[0].nil? or ARGV[0].empty?
25
28
  exit 1
@@ -27,13 +30,13 @@ elsif ARGV[0] == '-h' or ARGV[0] == '--help'
27
30
  exit 0
28
31
  end
29
32
 
30
- case ARGV[0].downcase
33
+ result = case ARGV[0].downcase
31
34
  when /^maj?o?r?$/
32
- GVB.tag_version "#{GVB.major_version(true) + 1}.0.0", release_notes
35
+ "#{GVB.major_version(true) + 1}.0.0"
33
36
  when /^min?o?r?$/
34
- GVB.tag_version "#{GVB.major_version(true)}.#{GVB.minor_version(true)+1}.0", release_notes
37
+ "#{GVB.major_version(true)}.#{GVB.minor_version(true)+1}.0"
35
38
  when /^pa?t?c?h?$/
36
- GVB.tag_version "#{GVB.major_version(true)}.#{GVB.minor_version(true)}.#{GVB.patch_version(true)+1}", release_notes
39
+ "#{GVB.major_version(true)}.#{GVB.minor_version(true)}.#{GVB.patch_version(true)+1}"
37
40
  when /^sh?o?w?$/
38
41
  puts GVB.version(true)
39
42
  exit 0
@@ -42,4 +45,9 @@ case ARGV[0].downcase
42
45
  exit 1
43
46
  end
44
47
 
45
- puts "Version is now #{GVB.version(true)}."
48
+ if dry_run
49
+ puts result
50
+ else
51
+ GVB.tag_version result, release_notes
52
+ puts "Version is now #{GVB.version(true)}."
53
+ end
@@ -1,4 +1,6 @@
1
- require File.expand_path('../lib/git-version-bump', __FILE__)
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'git-version-bump'
2
4
 
3
5
  Gem::Specification.new do |s|
4
6
  s.name = "git-version-bump"
@@ -5,6 +5,8 @@ require 'pathname'
5
5
  module GitVersionBump
6
6
  class VersionUnobtainable < StandardError; end
7
7
 
8
+ DEVNULL = Gem.win_platform? ? "NUL" : "/dev/null"
9
+
8
10
  def self.version(use_local_git=false)
9
11
  if use_local_git
10
12
  unless git_available?
@@ -12,13 +14,12 @@ module GitVersionBump
12
14
  "GVB.version(use_local_git=true) called, but git isn't installed"
13
15
  end
14
16
 
15
- sq_git_dir = "'#{Dir.pwd.gsub("'", "'\\''")}'"
17
+ sq_git_dir = shell_quoted_string(Dir.pwd)
16
18
  else
17
- # Shell Quoted, for your convenience
18
- sq_git_dir = "'" + (File.dirname(caller_file) rescue nil || Dir.pwd).gsub("'", "'\\''") + "'"
19
+ sq_git_dir = shell_quoted_string((File.dirname(caller_file) rescue nil || Dir.pwd))
19
20
  end
20
21
 
21
- git_ver = `git -C #{sq_git_dir} describe --dirty='.1.dirty.#{Time.now.strftime("%Y%m%d.%H%M%S")}' --match='v[0-9]*.[0-9]*.*[0-9]' 2>/dev/null`.
22
+ git_ver = `git -C #{sq_git_dir} describe --dirty='.1.dirty.#{Time.now.strftime("%Y%m%d.%H%M%S")}' --match='v[0-9]*.[0-9]*.*[0-9]' 2> #{DEVNULL}`.
22
23
  strip.
23
24
  gsub(/^v/, '').
24
25
  gsub('-', '.')
@@ -33,8 +34,8 @@ module GitVersionBump
33
34
  # Are we in a git repo with no tags? If so, dump out our
34
35
  # super-special version and be done with it, otherwise try to use the
35
36
  # gem version.
36
- system("git -C #{sq_git_dir} status >/dev/null 2>&1")
37
- "0.0.0.1.ENOTAG" if $? == 0 ? "0.0.0.1.ENOTAG" : gem_version(use_local_git)
37
+ system("git -C #{sq_git_dir} status > #{DEVNULL} 2>&1")
38
+ $? == 0 ? "0.0.0.1.ENOTAG" : gem_version(use_local_git)
38
39
  end
39
40
 
40
41
  def self.major_version(use_local_git=false)
@@ -84,14 +85,13 @@ module GitVersionBump
84
85
  "GVB.date(use_local_git=true), but git is not installed"
85
86
  end
86
87
 
87
- sq_git_dir = "'#{Dir.pwd.gsub("'", "'\\''")}'"
88
+ sq_git_dir = shell_quoted_string(Dir.pwd)
88
89
  else
89
- # Shell Quoted, for your convenience
90
- sq_git_dir = "'" + (File.dirname(caller_file) rescue nil || Dir.pwd).gsub("'", "'\\''") + "'"
90
+ sq_git_dir = shell_quoted_string((File.dirname(caller_file) rescue nil || Dir.pwd))
91
91
  end
92
92
 
93
93
  # Are we in a git tree?
94
- system("git -C #{sq_git_dir} status >/dev/null 2>&1")
94
+ system("git -C #{sq_git_dir} status > #{DEVNULL} 2>&1")
95
95
  if $? == 0
96
96
  # Yes, we're in git.
97
97
 
@@ -99,7 +99,7 @@ module GitVersionBump
99
99
  return Time.now.strftime("%F")
100
100
  else
101
101
  # Clean tree. Date of last commit is needed.
102
- return `git -C #{sq_git_dir} show --format=format:%cd --date=short | head -n 1`.strip
102
+ return `git -C #{sq_git_dir} show --no-show-signature --format=format:%cd --date=short`.lines.first.strip
103
103
  end
104
104
  else
105
105
  if use_local_git
@@ -139,7 +139,7 @@ module GitVersionBump
139
139
  EOF
140
140
 
141
141
  log_file.close
142
- system("git log --format='# %h %s' #{prev_tag}..HEAD >>#{log_file.path}")
142
+ system("git log --no-show-signature --format='# %h %s' #{prev_tag}..HEAD >>#{log_file.path}")
143
143
 
144
144
  pre_hash = Digest::SHA1.hexdigest(File.read(log_file.path))
145
145
  system("git config -e -f #{log_file.path}")
@@ -157,8 +157,8 @@ module GitVersionBump
157
157
  system("git tag -a -m 'Version v#{v}' v#{v}")
158
158
  end
159
159
 
160
- system("git push >/dev/null 2>&1")
161
- system("git push --tags >/dev/null 2>&1")
160
+ system("git push > #{DEVNULL} 2>&1")
161
+ system("git push --tags > #{DEVNULL} 2>&1")
162
162
  end
163
163
  end
164
164
 
@@ -196,10 +196,9 @@ module GitVersionBump
196
196
  "GVB.commit_date_version(use_local_git=true) called, but git isn't installed"
197
197
  end
198
198
 
199
- sq_git_dir = "'#{Dir.pwd.gsub("'", "'\\''")}'"
199
+ sq_git_dir = shell_quoted_string(Dir.pwd)
200
200
  else
201
- # Shell Quoted, for your convenience
202
- sq_git_dir = "'" + (File.dirname(caller_file) rescue nil || Dir.pwd).gsub("'", "'\\''") + "'"
201
+ sq_git_dir = shell_quoted_string((File.dirname(caller_file) rescue nil || Dir.pwd))
203
202
  end
204
203
 
205
204
  commit_dates = `git -C #{sq_git_dir} log --format=%at`.
@@ -224,21 +223,21 @@ module GitVersionBump
224
223
 
225
224
  # Are we in a git repo with no tags? If so, dump out our
226
225
  # super-special version and be done with it.
227
- system("git -C #{sq_git_dir} status >/dev/null 2>&1")
226
+ system("git -C #{sq_git_dir} status > #{DEVNULL} 2>&1")
228
227
  $? == 0 ? "0.0.0.1.ENOCOMMITS" : gem_version(use_local_git)
229
228
  end
230
229
 
231
230
  private
232
231
 
233
232
  def self.git_available?
234
- system("git --version >/dev/null 2>&1")
233
+ system("git --version > #{DEVNULL} 2>&1")
235
234
 
236
235
  $? == 0
237
236
  end
238
237
 
239
238
  def self.dirty_tree?
240
239
  # Are we in a dirty, dirty tree?
241
- system("! git diff --no-ext-diff --quiet --exit-code 2>/dev/null || ! git diff-index --cached --quiet HEAD 2>/dev/null")
240
+ system("! git diff --no-ext-diff --quiet --exit-code 2> #{DEVNULL} || ! git diff-index --cached --quiet HEAD 2> #{DEVNULL}")
242
241
 
243
242
  $? == 0
244
243
  end
@@ -262,7 +261,7 @@ module GitVersionBump
262
261
  # that contains the caller's file.
263
262
  Gem.loaded_specs.values.each do |spec|
264
263
  search_dirs = spec.require_paths.map { |d| "#{spec.full_gem_path}/#{d}" } +
265
- [File.join(spec.gem_dir, spec.bindir)]
264
+ [File.join(spec.full_gem_path, spec.bindir)]
266
265
  search_dirs.map! do |d|
267
266
  begin
268
267
  Pathname(d).realpath.to_s
@@ -301,6 +300,18 @@ module GitVersionBump
301
300
  end
302
301
  end
303
302
  end
303
+
304
+ def self.shell_quoted_string(dir_string)
305
+ if Gem.win_platform?
306
+ return "\"#{dir_string}\""
307
+ else
308
+ # Shell Quoted, for your convenience
309
+ return "'#{dir_string.gsub("'", "'\\''")}'"
310
+ end
311
+ end
312
+
313
+ private_class_method :shell_quoted_string
314
+
304
315
  end
305
316
 
306
317
  GVB = GitVersionBump unless defined? GVB
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-version-bump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.1
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Palmer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-01 00:00:00.000000000 Z
11
+ date: 2019-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: github-release
@@ -103,9 +103,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  version: '0'
104
104
  requirements: []
105
105
  rubyforge_project:
106
- rubygems_version: 2.2.2
106
+ rubygems_version: 2.7.7
107
107
  signing_key:
108
108
  specification_version: 4
109
109
  summary: Manage your app version entirely via git tags
110
110
  test_files: []
111
- has_rdoc: