bump 0.1.0

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.
Files changed (5) hide show
  1. data/README.textile +0 -0
  2. data/bin/bump +5 -0
  3. data/bump.gemspec +21 -0
  4. data/lib/bump.rb +79 -0
  5. metadata +70 -0
File without changes
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../lib/bump'
3
+
4
+ bump = Bump::Bump.new(ARGV)
5
+ bump.run
@@ -0,0 +1,21 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = "bump"
3
+ s.version = "0.1.0"
4
+ s.author = "Gregory Marcilhacy"
5
+ s.email = "g.marcilhacy@gmail.com"
6
+ s.homepage = "http://github.com/gregorymp/bump"
7
+ s.summary = "Bump your gem version file"
8
+
9
+ s.files = %w(
10
+ README.textile
11
+ bump.gemspec
12
+ bin/bump
13
+ lib/bump.rb
14
+ )
15
+
16
+ s.require_path = "lib"
17
+ s.executables = ["bump"]
18
+
19
+ end
20
+
21
+
@@ -0,0 +1,79 @@
1
+ module Bump
2
+
3
+ class Bump
4
+
5
+ BUMPS = %w(major minor tiny)
6
+ VERSION_REGEX = /version\s*=\s*["|'](\d.\d.\d)["|']/
7
+
8
+ class InvalidBumpError < StandardError; end
9
+ class UnfoundVersionError < StandardError; end
10
+ class TooManyGemspecsFoundError < StandardError; end
11
+ class UnfoundGemspecError < StandardError; end
12
+
13
+ def initialize(bump)
14
+ begin
15
+ bump = bump.is_a?(Array) ? bump.first : bump
16
+ raise InvalidBumpError unless BUMPS.include?(bump)
17
+ @bump = bump
18
+
19
+ rescue InvalidBumpError
20
+ display_message "Invalid bump. Choose between #{BUMPS.join(',')}."
21
+ rescue Exception
22
+ display_message "Something wrong happened"
23
+ end
24
+ end
25
+
26
+ def run
27
+ begin
28
+ gemspec = find_gemspec_file
29
+ current_version = find_current_version(gemspec)
30
+ next_version = find_next_version(current_version)
31
+ system(%(ruby -i -pe "gsub(/#{current_version}/, '#{next_version}')" #{gemspec}))
32
+ display_message "Bump version #{current_version} to #{next_version}"
33
+
34
+ rescue UnfoundVersionError
35
+ display_message "Unable to find your gem version"
36
+ rescue UnfoundGemspecError
37
+ display_message "Unable to find gemspec file"
38
+ rescue TooManyGemspecsFoundError
39
+ display_message "More than one gemspec file"
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ def find_current_version(file)
46
+ match = File.read(file).match VERSION_REGEX
47
+ if match.nil?
48
+ raise UnfoundVersionError
49
+ else
50
+ match[1]
51
+ end
52
+ end
53
+
54
+ def find_gemspec_file
55
+ gemspecs = Dir.glob("*.gemspec")
56
+ raise UnfoundGemspecError if gemspecs.size.zero?
57
+ raise TooManyGemspecsFoundError if gemspecs.size > 1
58
+ gemspecs.first
59
+ end
60
+
61
+ def find_next_version(current_version)
62
+ match = current_version.match /(\d).(\d).(\d)/
63
+ case @bump
64
+ when "major"
65
+ "#{match[1].to_i + 1}.0.0"
66
+ when "minor"
67
+ "#{match[1]}.#{match[2].to_i + 1}.0"
68
+ when "tiny"
69
+ "#{match[1]}.#{match[2]}.#{match[3].to_i + 1}"
70
+ end
71
+ end
72
+
73
+ def display_message(message)
74
+ print(message); puts;
75
+ end
76
+
77
+ end
78
+
79
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bump
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ version: 0.1.0
11
+ platform: ruby
12
+ authors:
13
+ - Gregory Marcilhacy
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-07-12 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description:
23
+ email: g.marcilhacy@gmail.com
24
+ executables:
25
+ - bump
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - README.textile
32
+ - bump.gemspec
33
+ - bin/bump
34
+ - lib/bump.rb
35
+ has_rdoc: true
36
+ homepage: http://github.com/gregorymp/bump
37
+ licenses: []
38
+
39
+ post_install_message:
40
+ rdoc_options: []
41
+
42
+ require_paths:
43
+ - lib
44
+ required_ruby_version: !ruby/object:Gem::Requirement
45
+ none: false
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ hash: 3
50
+ segments:
51
+ - 0
52
+ version: "0"
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ requirements: []
63
+
64
+ rubyforge_project:
65
+ rubygems_version: 1.4.1
66
+ signing_key:
67
+ specification_version: 3
68
+ summary: Bump your gem version file
69
+ test_files: []
70
+