git-version-bump 0.10.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ module GitVersionBump
2
+ VERSION = GVB.version
3
+ MAJOR_VERSION = GVB.major_version
4
+ MINOR_VERSION = GVB.minor_version
5
+ PATCH_VERSION = GVB.patch_version
6
+ INTERNAL_REVISION = GVB.internal_revision
7
+ DATE = GVB.date
8
+ end
@@ -11,35 +11,41 @@ module GitVersionBump
11
11
  $? == 0
12
12
  end
13
13
 
14
+ def self.caller_file
15
+ # Who called us? Because this method gets called from other methods
16
+ # within this file, we can't just look at Gem.location_of_caller, but
17
+ # instead we need to parse the caller stack ourselves to find which
18
+ # gem we're trying to version all over.
19
+ File.realpath(
20
+ caller.
21
+ map { |l| l.split(':')[0] }.
22
+ find { |l| l != __FILE__ }
23
+ ) rescue nil
24
+ end
25
+
14
26
  def self.caller_gemspec
15
- # First up, who called us? Because this method gets called from other
16
- # methods within this file, we can't just look at
17
- # Gem.location_of_caller, but instead we need to parse the caller
18
- # stack ourselves to find which gem we're trying to version all over.
19
- caller_file = caller.
20
- map { |l| l.split(':')[0] }.
21
- find { |l| l != __FILE__ }
22
-
23
- # Real paths, please.
24
- caller_file = File.realpath(caller_file)
25
-
26
- # Next we grovel through all the loaded gems to try and find the gem
27
+ cf = caller_file or return nil
28
+
29
+ # Grovel through all the loaded gems to try and find the gem
27
30
  # that contains the caller's file.
28
31
  Gem.loaded_specs.values.each do |spec|
29
- if Dir.
30
- glob(spec.lib_dirs_glob).
31
- find { |d| caller_file.index(File.realpath(d)) == 0 }
32
+ if (Dir.glob(spec.lib_dirs_glob) + Dir["#{spec.bin_dir}/*"]).
33
+ find { |d| cf.index(File.realpath(d)) == 0 }
32
34
  # The caller_file is in this
33
35
  # gem! Woohoo!
34
36
  return spec
35
37
  end
36
38
  end
37
39
 
38
- nil
40
+ raise VersionUnobtainable,
41
+ "Unable to find gemspec for caller file #{cf}"
39
42
  end
40
43
 
41
- def self.version(gem = nil)
42
- git_ver = `git describe --dirty='.1.dirty.#{Time.now.strftime("%Y%m%d.%H%M%S")}' --match='v[0-9]*.[0-9]*.*[0-9]' 2>/dev/null`.
44
+ def self.version
45
+ # Shell Quoted, for your convenience
46
+ sq_git_dir = "'" + (File.dirname(caller_file) rescue nil || Dir.pwd).gsub("'", "'\\''") + "'"
47
+
48
+ 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`.
43
49
  strip.
44
50
  gsub(/^v/, '').
45
51
  gsub('-', '.')
@@ -53,13 +59,9 @@ module GitVersionBump
53
59
 
54
60
  # Are we in a git repo with no tags? If so, dump out our
55
61
  # super-special version and be done with it.
56
- system("git status >/dev/null 2>&1")
62
+ system("git -C #{sq_git_dir} status >/dev/null 2>&1")
57
63
  return "0.0.0.1.ENOTAG" if $? == 0
58
64
 
59
- if gem
60
- return Gem.loaded_specs[gem].version.to_s
61
- end
62
-
63
65
  # We're not in a git repo. This means that we need to get version
64
66
  # information out of rubygems, given only the filename of who called
65
67
  # us. This takes a little bit of effort.
@@ -75,10 +77,8 @@ module GitVersionBump
75
77
  end
76
78
  end
77
79
 
78
- VERSION = version('git-version-bump')
79
-
80
- def self.major_version(gem = nil)
81
- ver = version(gem)
80
+ def self.major_version
81
+ ver = version
82
82
  v = ver.split('.')[0]
83
83
 
84
84
  unless v =~ /^[0-9]+$/
@@ -89,10 +89,8 @@ module GitVersionBump
89
89
  return v.to_i
90
90
  end
91
91
 
92
- MAJOR_VERSION = major_version('git-version-bump')
93
-
94
- def self.minor_version(gem = nil)
95
- ver = version(gem)
92
+ def self.minor_version
93
+ ver = version
96
94
  v = ver.split('.')[1]
97
95
 
98
96
  unless v =~ /^[0-9]+$/
@@ -103,10 +101,8 @@ module GitVersionBump
103
101
  return v.to_i
104
102
  end
105
103
 
106
- MINOR_VERSION = minor_version('git-version-bump')
107
-
108
- def self.patch_version(gem = nil)
109
- ver = version(gem)
104
+ def self.patch_version
105
+ ver = version
110
106
  v = ver.split('.')[2]
111
107
 
112
108
  unless v =~ /^[0-9]+$/
@@ -117,15 +113,11 @@ module GitVersionBump
117
113
  return v.to_i
118
114
  end
119
115
 
120
- PATCH_VERSION = patch_version('git-version-bump')
121
-
122
- def self.internal_revision(gem = nil)
123
- version(gem).split('.', 4)[3].to_s
116
+ def self.internal_revision
117
+ version.split('.', 4)[3].to_s
124
118
  end
125
119
 
126
- INTERNAL_REVISION = internal_revision('git-version-bump')
127
-
128
- def self.date(gem = nil)
120
+ def self.date
129
121
  # Are we in a git tree?
130
122
  system("git status >/dev/null 2>&1")
131
123
  if $? == 0
@@ -139,21 +131,15 @@ module GitVersionBump
139
131
  end
140
132
  else
141
133
  # Not in git; time to hit the gemspecs
142
- if gem
143
- return Gem.loaded_specs[gem].date.strftime("%F")
144
- end
145
-
146
134
  if spec = caller_gemspec
147
135
  return spec.date.strftime("%F")
148
136
  end
149
137
 
150
138
  raise RuntimeError,
151
- "GVB.date(#{gem.inspect}) called from mysterious, non-gem location."
139
+ "GVB.date called from mysterious, non-gem location."
152
140
  end
153
141
  end
154
142
 
155
- DATE = date('git-version-bump')
156
-
157
143
  def self.tag_version(v, release_notes = false)
158
144
  if dirty_tree?
159
145
  puts "You have uncommitted files. Refusing to tag a dirty tree."
@@ -171,7 +157,7 @@ module GitVersionBump
171
157
 
172
158
  # Write your release notes above. The first line should be the release name.
173
159
  # To help you remember what's in here, the commits since your last release
174
- # are listed below.
160
+ # are listed below. This will become v#{v}
175
161
  #
176
162
  EOF
177
163
 
@@ -200,4 +186,6 @@ module GitVersionBump
200
186
  end
201
187
  end
202
188
 
203
- GVB = GitVersionBump
189
+ GVB = GitVersionBump unless defined? GVB
190
+
191
+ require_relative 'git-version-bump/version'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: git-version-bump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.12.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-25 00:00:00.000000000 Z
12
+ date: 2014-09-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -75,6 +75,7 @@ files:
75
75
  - git-version-bump.gemspec
76
76
  - lib/git-version-bump.rb
77
77
  - lib/git-version-bump/rake-tasks.rb
78
+ - lib/git-version-bump/version.rb
78
79
  homepage: http://theshed.hezmatt.org/git-version-bump
79
80
  licenses: []
80
81
  post_install_message:
@@ -89,7 +90,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
89
90
  version: '0'
90
91
  segments:
91
92
  - 0
92
- hash: 879836245496390919
93
+ hash: 4388350532020015811
93
94
  required_rubygems_version: !ruby/object:Gem::Requirement
94
95
  none: false
95
96
  requirements:
@@ -98,7 +99,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
98
99
  version: '0'
99
100
  segments:
100
101
  - 0
101
- hash: 879836245496390919
102
+ hash: 4388350532020015811
102
103
  requirements: []
103
104
  rubyforge_project:
104
105
  rubygems_version: 1.8.23