gem-release 0.0.12 → 0.0.13

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.
@@ -4,4 +4,5 @@ module GemRelease
4
4
  autoload :Helpers, 'gem_release/helpers'
5
5
  autoload :Template, 'gem_release/template'
6
6
  autoload :Version, 'gem_release/version'
7
+ autoload :VersionFile, 'gem_release/version_file'
7
8
  end
@@ -18,6 +18,14 @@ module GemRelease
18
18
  File.basename(Dir.pwd)
19
19
  end
20
20
 
21
+ def gem_module_path
22
+ @gem_module_path ||= gem_name.gsub('-', '_')
23
+ end
24
+
25
+ def gem_module_name
26
+ @gem_module_name ||= gem_module_path.camelize
27
+ end
28
+
21
29
  def gem_filename
22
30
  gemspec.file_name
23
31
  end
@@ -34,7 +42,7 @@ module GemRelease
34
42
 
35
43
  def gemspec_filename
36
44
  @gemspec_filename ||= begin
37
- name = Array(options[:args]).first
45
+ name = Array(options[:args]).first rescue nil
38
46
  name ||= Dir['*.gemspec'].first
39
47
  name || raise("No gemspec found or given.")
40
48
  end
@@ -1,5 +1,5 @@
1
1
  module GemRelease
2
- VERSION = '0.0.12'
2
+ VERSION = '0.0.13'
3
3
 
4
4
  class Version < Template
5
5
  attr_reader :version
@@ -16,5 +16,5 @@ module GemRelease
16
16
  def template_name
17
17
  'version.erb'
18
18
  end
19
- end
19
+ end if defined?(Template)
20
20
  end
@@ -0,0 +1,54 @@
1
+ module GemRelease
2
+ class VersionFile
3
+ include GemRelease::Helpers
4
+
5
+ VERSION_PATTERN = /(VERSION\s*=\s*(?:"|'))(\d+\.\d+\.\d+)("|')/
6
+ NUMBER_PATTERN = /(\d+)\.(\d+)\.(\d+)/
7
+
8
+ attr_reader :target
9
+
10
+ def initialize(options = {})
11
+ @target = options[:target] || :patch
12
+ end
13
+
14
+ def bump!
15
+ File.open(filename, 'w+') { |f| f.write(bumped_content) }
16
+ end
17
+
18
+ def new_number
19
+ @new_number ||= old_number.sub(NUMBER_PATTERN) do
20
+ respond_to?(target) ? send(target, $1, $2, $3) : target
21
+ end
22
+ end
23
+
24
+ def old_number
25
+ @old_number ||= content =~ VERSION_PATTERN && $2
26
+ end
27
+
28
+ def filename
29
+ File.expand_path("lib/#{gem_module_path}/version.rb")
30
+ end
31
+
32
+ protected
33
+
34
+ def major(major, minor, patch)
35
+ "#{major.to_i + 1}.0.0"
36
+ end
37
+
38
+ def minor(major, minor, patch)
39
+ "#{major}.#{minor.to_i + 1}.0"
40
+ end
41
+
42
+ def patch(major, minor, patch)
43
+ "#{major}.#{minor}.#{patch.to_i + 1}"
44
+ end
45
+
46
+ def content
47
+ @content ||= File.read(filename)
48
+ end
49
+
50
+ def bumped_content
51
+ content.sub(VERSION_PATTERN) { "#{$1}#{new_number}#{$3}"}
52
+ end
53
+ end
54
+ end
@@ -1,4 +1,3 @@
1
- require 'gem_release/helpers'
2
1
  require 'rubygems/commands/gemspec_command'
3
2
 
4
3
  class Gem::Commands::BootstrapCommand < Gem::Command
@@ -0,0 +1,45 @@
1
+ require 'core_ext/string/camelize'
2
+
3
+ class Gem::Commands::BumpCommand < Gem::Command
4
+ include GemRelease
5
+ include Helpers, CommandOptions
6
+
7
+ attr_reader :arguments, :usage
8
+
9
+ OPTIONS = { :to => :patch, :push => false }
10
+
11
+ def initialize
12
+ super 'bump', 'Bump the gem version', OPTIONS
13
+
14
+ option :to, '-t', 'Target version: next [major|minor|patch] or a given version number [x.x.x]'
15
+ option :push, '-p', 'Push to origin (defaults to false)'
16
+ end
17
+
18
+ def execute
19
+ bump
20
+ commit
21
+ push if options[:push]
22
+ end
23
+
24
+ protected
25
+
26
+ def bump
27
+ say "Bumping from #{version.old_number} to version #{version.new_number}"
28
+ version.bump!
29
+ end
30
+
31
+ def commit
32
+ say "Creating commit"
33
+ `git add #{version.filename}`
34
+ `git commit -m "Bump to #{version.new_number}"`
35
+ end
36
+
37
+ def push
38
+ say "Pushing to origin"
39
+ `git push`
40
+ end
41
+
42
+ def version
43
+ @version ||= VersionFile.new(:target => options[:to])
44
+ end
45
+ end
@@ -1,5 +1,3 @@
1
- require 'gem_release/helpers'
2
-
3
1
  class Gem::Commands::GemspecCommand < Gem::Command
4
2
  include GemRelease
5
3
  include Helpers, CommandOptions
@@ -1,7 +1,6 @@
1
1
  require 'rubygems/commands/build_command'
2
2
  require 'rubygems/commands/push_command'
3
3
  require 'rubygems/commands/tag_command'
4
- require 'gem_release/helpers'
5
4
 
6
5
  class Gem::Commands::ReleaseCommand < Gem::Command
7
6
  include GemRelease, Gem::Commands
@@ -1,5 +1,3 @@
1
- require 'gem_release/helpers'
2
-
3
1
  class Gem::Commands::TagCommand < Gem::Command
4
2
  include GemRelease
5
3
  include Helpers, CommandOptions
@@ -3,5 +3,6 @@ require 'gem_release'
3
3
 
4
4
  Gem::CommandManager.instance.register_command :gemspec
5
5
  Gem::CommandManager.instance.register_command :bootstrap
6
+ Gem::CommandManager.instance.register_command :bump
6
7
  Gem::CommandManager.instance.register_command :release
7
- Gem::CommandManager.instance.register_command :tag
8
+ Gem::CommandManager.instance.register_command :tag
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-release
3
3
  version: !ruby/object:Gem::Version
4
- hash: 7
4
+ hash: 5
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 12
10
- version: 0.0.12
9
+ - 13
10
+ version: 0.0.13
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sven Fuchs
@@ -15,29 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-09-02 00:00:00 +02:00
18
+ date: 2010-09-29 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: minitest
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 15
30
- segments:
31
- - 1
32
- - 6
33
- - 0
34
- version: 1.6.0
35
- type: :development
36
- version_requirements: *id001
37
21
  - !ruby/object:Gem::Dependency
38
22
  name: test_declarative
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
41
25
  none: false
42
26
  requirements:
43
27
  - - ">="
@@ -49,11 +33,11 @@ dependencies:
49
33
  - 2
50
34
  version: 0.0.2
51
35
  type: :development
52
- version_requirements: *id002
36
+ version_requirements: *id001
53
37
  - !ruby/object:Gem::Dependency
54
38
  name: mocha
55
39
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ requirement: &id002 !ruby/object:Gem::Requirement
57
41
  none: false
58
42
  requirements:
59
43
  - - ">="
@@ -65,7 +49,7 @@ dependencies:
65
49
  - 8
66
50
  version: 0.9.8
67
51
  type: :development
68
- version_requirements: *id003
52
+ version_requirements: *id002
69
53
  description: Release your ruby gems with ease. (What a bold statement for such a tiny plugin ...)
70
54
  email: svenfuchs@artweb-design.de
71
55
  executables: []
@@ -85,7 +69,9 @@ files:
85
69
  - lib/gem_release/templates/gemspec.erb
86
70
  - lib/gem_release/templates/version.erb
87
71
  - lib/gem_release/version.rb
72
+ - lib/gem_release/version_file.rb
88
73
  - lib/rubygems/commands/bootstrap_command.rb
74
+ - lib/rubygems/commands/bump_command.rb
89
75
  - lib/rubygems/commands/gemspec_command.rb
90
76
  - lib/rubygems/commands/release_command.rb
91
77
  - lib/rubygems/commands/tag_command.rb