git-version-bump 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,14 +1,44 @@
1
1
  Maintain your program versions entirely within git. No local files
2
- required!
2
+ required! All versioning information is stored using git tags.
3
3
 
4
- This gem contains a set of Rake tasks and associated code to manage the
5
- versioning of your code via git tags. No in-repo file is required to store
6
- your version, which reduces unnecessary duplication of information.
4
+ This gem contains a command-line tool and set of Rake tasks to increment
5
+ and display your version numbers via git tags, and some associated Ruby code to use
6
+ inside a gemspec or your program to retrieve the current version number, for
7
+ use in builds and at runtime.
7
8
 
8
9
 
9
10
  # Usage
10
11
 
11
- In your `Rakefile`, add the following line:
12
+ Most of your day-to-day usage of `git-version-bump` will be via the command
13
+ line. When you bump a version, a new tag will be created representing the newly
14
+ incremented version number at the current commit. If no tags currently
15
+ exist, the previous version will be taken to be `0.0.0` and then incremented
16
+ accordingly.
17
+
18
+
19
+ ## On the command line
20
+
21
+ Pretty damned trivial:
22
+
23
+ git version-bump <major|minor|patch|show>
24
+
25
+ You can also shorten the specifier to any unique substring:
26
+
27
+ git version-bump ma
28
+ git version-bump mi
29
+ git version-bump p
30
+ git version-bump s
31
+
32
+ I recommend adding an alias to your `~/.gitconfig` file, for less typing:
33
+
34
+ [alias]
35
+ vb = version-bump
36
+
37
+
38
+ ## In your `Rakefile`
39
+
40
+ If you'd like to have access to the version-bumping goodness via `rake`, add
41
+ the following line to your `Rakefile`:
12
42
 
13
43
  require 'git-version-bump/rake-tasks'
14
44
 
@@ -17,15 +47,14 @@ You will now have the following rake tasks available:
17
47
  rake version:bump:major # bump major version (x.y.z -> x+1.0.0)
18
48
  rake version:bump:minor # bump minor version (x.y.z -> x.y+1.0)
19
49
  rake version:bump:patch # bump patch version (x.y.z -> x.y.z+1)
50
+ rake version:bump:show # Print current version number
20
51
 
21
52
  (Since `version:bump:major` is a lot of typing, there are also shortcuts:
22
53
  `v:b:major`, `v:b:maj`, `v:b:minor`, `v:b:min`, `v:b:patch`, `v:b:pat`, and
23
54
  `v:b:p`)
24
55
 
25
- By running any of those, a new tag will be created representing the newly
26
- incremented version number at the current commit. If no tags currently
27
- exist, the previous version will be taken to be `0.0.0` and then incremented
28
- accordingly.
56
+
57
+ ## In your Ruby code
29
58
 
30
59
  To get access to this version information in your code (such as in your
31
60
  `gemspec`, or the definition of a `::VERSION` constant), you can `require
@@ -50,7 +79,7 @@ information available, the version will be assumed to be `0.0.0.1.ENOTAG`
50
79
  with a date of `1970-01-01`.
51
80
 
52
81
 
53
- ## In your gemspec
82
+ ### In your gemspec
54
83
 
55
84
  Typically, you want to encode your version and commit date into your
56
85
  gemspec, like this:
@@ -69,10 +98,10 @@ system was built from pristine sources, or with that experimental patch you
69
98
  were trying out...
70
99
 
71
100
 
72
- ## In your gem
101
+ ### In your gem
73
102
 
74
103
  If, like me, you're one of those people who likes to be able to easily see
75
- what version of a library I'm running, then you probably like to define a
104
+ what version of a library you're running, then you probably like to define a
76
105
  `VERSION` constant somewhere in your gem's namespace. That, too, is simple
77
106
  to do:
78
107
 
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'git-version-bump'
4
+
5
+ if ARGV[0].nil? or
6
+ ARGV[0].empty? or
7
+ ARGV[0] == '-h' or
8
+ ARGV[0] == '--help'
9
+ $stderr.puts <<-EOF.gsub(/^\t\t/, '')
10
+ Usage: git version-bump <major|minor|patch>
11
+
12
+ 'major': x.y.z -> x+1.0.0
13
+ 'minor': x.y.z -> x.y+1.0
14
+ 'patch': x.y.z -> x.y.z+1
15
+ EOF
16
+ end
17
+
18
+ if ARGV[0].nil? or ARGV[0].empty?
19
+ exit 1
20
+ elsif ARGV[0] == '-h' or ARGV[0] == '--help'
21
+ exit 0
22
+ end
23
+
24
+ case ARGV[0].downcase
25
+ when /^maj?o?r?$/
26
+ GVB.tag_version "#{GVB.major_version + 1}.0.0"
27
+ when /^min?o?r?$/
28
+ GVB.tag_version "#{GVB.major_version}.#{GVB.minor_version+1}.0"
29
+ when /^pa?t?c?h?$/
30
+ GVB.tag_version "#{GVB.major_version}.#{GVB.minor_version}.#{GVB.patch_version+1}"
31
+ when /^sh?o?w?$/
32
+ puts GVB.version
33
+ exit 0
34
+ else
35
+ $stderr.puts "Unknown argument: #{ARGV[0]}. Try --help."
36
+ exit 1
37
+ end
38
+
39
+ puts "Version is now #{GVB.version}."
@@ -14,7 +14,8 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.extra_rdoc_files = ["README.md"]
16
16
  s.files = `git ls-files`.split("\n")
17
-
17
+ s.executables = ["git-version-bump"]
18
+
18
19
  s.add_development_dependency 'rake'
19
20
  s.add_development_dependency 'bundler'
20
21
  s.add_development_dependency 'rdoc'
@@ -34,6 +34,10 @@ module GitVersionBump
34
34
  end
35
35
 
36
36
  def self.version(gem = nil)
37
+ @version_cache ||= {}
38
+
39
+ return @version_cache[gem] if @version_cache[gem]
40
+
37
41
  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`.
38
42
  strip.
39
43
  gsub(/^v/, '').
@@ -66,7 +70,7 @@ module GitVersionBump
66
70
  # weren't called from within a loaded gem, and so we've got *no*
67
71
  # idea what's going on. Time to bail!
68
72
  raise RuntimeError,
69
- "GVB.version(#{gem.inspect}) called from mysterious, non-gem location."
73
+ "GVB.version(#{gem.inspect}) failed. Is git installed?"
70
74
  end
71
75
  end
72
76
 
@@ -22,6 +22,11 @@ namespace :version do
22
22
 
23
23
  puts "Version is now #{GVB.version}"
24
24
  end
25
+
26
+ desc "Print current version"
27
+ task :show do
28
+ puts GVB.version
29
+ end
25
30
  end
26
31
  end
27
32
 
@@ -36,5 +41,9 @@ namespace :v do
36
41
  task :patch => "version:bump:patch"
37
42
  task :pat => "version:bump:patch"
38
43
  task :p => "version:bump:patch"
44
+
45
+ task :show => "version:bump:show"
46
+ task :sh => "version:bump:show"
47
+ task :s => "version:bump:show"
39
48
  end
40
49
  end
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.7.0
4
+ version: 0.8.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-02-21 00:00:00.000000000 Z
12
+ date: 2014-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -61,7 +61,8 @@ dependencies:
61
61
  version: '0'
62
62
  description:
63
63
  email:
64
- executables: []
64
+ executables:
65
+ - git-version-bump
65
66
  extensions: []
66
67
  extra_rdoc_files:
67
68
  - README.md
@@ -70,6 +71,7 @@ files:
70
71
  - Gemfile
71
72
  - README.md
72
73
  - Rakefile
74
+ - bin/git-version-bump
73
75
  - git-version-bump.gemspec
74
76
  - lib/git-version-bump.rb
75
77
  - lib/git-version-bump/rake-tasks.rb
@@ -87,7 +89,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
89
  version: '0'
88
90
  segments:
89
91
  - 0
90
- hash: -3517451086153522705
92
+ hash: -3956615801826870030
91
93
  required_rubygems_version: !ruby/object:Gem::Requirement
92
94
  none: false
93
95
  requirements:
@@ -96,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
98
  version: '0'
97
99
  segments:
98
100
  - 0
99
- hash: -3517451086153522705
101
+ hash: -3956615801826870030
100
102
  requirements: []
101
103
  rubyforge_project:
102
104
  rubygems_version: 1.8.23