bueller 0.0.1 → 0.0.2
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.
- data/lib/bueller/commands/git_tag_release.rb +18 -9
- data/lib/bueller/commands/version/base.rb +12 -0
- data/lib/bueller/gemspec_helper.rb +2 -1
- data/lib/bueller/tasks.rb +3 -15
- data/lib/bueller/templates/other_tasks.erb +1 -0
- data/lib/bueller.rb +1 -4
- data/spec/bueller/commands/git_tag_release_spec.rb +13 -5
- data/spec/bueller_spec.rb +1 -9
- metadata +4 -7
- data/lib/bueller/commands/release_to_github.rb +0 -41
- data/spec/bueller/commands/release_to_github_spec.rb +0 -54
|
@@ -24,17 +24,26 @@ class Bueller
|
|
|
24
24
|
def repo; bueller.repo; end
|
|
25
25
|
|
|
26
26
|
def run
|
|
27
|
-
|
|
27
|
+
run = true
|
|
28
|
+
unless clean_staging_area?
|
|
29
|
+
output.puts "There are some modified files that haven't been committed. Proceed anyway?"
|
|
30
|
+
run = $stdin.gets =~ /(y|yes)/i ? true : false
|
|
31
|
+
end
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
if run
|
|
34
|
+
repo.checkout('master')
|
|
35
|
+
|
|
36
|
+
if release_tagged?
|
|
37
|
+
repo.push
|
|
38
|
+
else
|
|
39
|
+
output.puts "Tagging #{release_tag}"
|
|
40
|
+
repo.add_tag release_tag
|
|
35
41
|
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
output.puts "Pushing #{release_tag} to origin"
|
|
43
|
+
repo.push 'origin', release_tag
|
|
44
|
+
end
|
|
45
|
+
else
|
|
46
|
+
raise "Release cancelled"
|
|
38
47
|
end
|
|
39
48
|
end
|
|
40
49
|
|
|
@@ -19,17 +19,29 @@ class Bueller
|
|
|
19
19
|
|
|
20
20
|
def version_helper; bueller.version_helper; end
|
|
21
21
|
def gemspec_helper; bueller.gemspec_helper; end
|
|
22
|
+
def repo; bueller.repo; end
|
|
23
|
+
def commit; bueller.commit; end
|
|
22
24
|
|
|
23
25
|
def run
|
|
24
26
|
update_version
|
|
25
27
|
|
|
26
28
|
gemspec_helper.update_version version_helper.to_s
|
|
29
|
+
gemspec_helper.set_date
|
|
27
30
|
gemspec_helper.write
|
|
31
|
+
|
|
32
|
+
commit_version
|
|
28
33
|
end
|
|
29
34
|
|
|
30
35
|
def update_version
|
|
31
36
|
raise "Subclasses should implement this"
|
|
32
37
|
end
|
|
38
|
+
|
|
39
|
+
def commit_version
|
|
40
|
+
if repo and commit
|
|
41
|
+
repo.add gemspec_helper.path
|
|
42
|
+
repo.commit "Version bump to #{version_helper.to_s}"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
33
45
|
end
|
|
34
46
|
end
|
|
35
47
|
end
|
|
@@ -39,10 +39,11 @@ class Bueller
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def path
|
|
42
|
+
return @path unless @path.nil?
|
|
42
43
|
denormalized_path = Dir.glob(File.join(base_dir, '*.gemspec')).first
|
|
43
44
|
raise NoGemspecFound, "No gemspec found in #{base_dir}" if denormalized_path.nil?
|
|
44
45
|
absolute_path = File.expand_path(denormalized_path)
|
|
45
|
-
absolute_path.gsub(Dir.getwd + File::SEPARATOR, '')
|
|
46
|
+
@path = absolute_path.gsub(Dir.getwd + File::SEPARATOR, '')
|
|
46
47
|
end
|
|
47
48
|
|
|
48
49
|
def spec_source
|
data/lib/bueller/tasks.rb
CHANGED
|
@@ -78,21 +78,18 @@ class Bueller
|
|
|
78
78
|
desc "Bump the gemspec by a major version."
|
|
79
79
|
task :major => :version do
|
|
80
80
|
bueller.bump_major_version
|
|
81
|
-
bueller.write_gemspec
|
|
82
81
|
$stdout.puts "Updated version: #{bueller.version}"
|
|
83
82
|
end
|
|
84
83
|
|
|
85
84
|
desc "Bump the gemspec by a minor version."
|
|
86
85
|
task :minor => :version do
|
|
87
86
|
bueller.bump_minor_version
|
|
88
|
-
bueller.write_gemspec
|
|
89
87
|
$stdout.puts "Updated version: #{bueller.version}"
|
|
90
88
|
end
|
|
91
89
|
|
|
92
90
|
desc "Bump the gemspec by a patch version."
|
|
93
91
|
task :patch => :version do
|
|
94
92
|
bueller.bump_patch_version
|
|
95
|
-
bueller.write_gemspec
|
|
96
93
|
$stdout.puts "Updated version: #{bueller.version}"
|
|
97
94
|
end
|
|
98
95
|
end
|
|
@@ -102,19 +99,10 @@ class Bueller
|
|
|
102
99
|
task :release do
|
|
103
100
|
end
|
|
104
101
|
|
|
105
|
-
namespace :github do
|
|
106
|
-
desc "Release Gem to GitHub"
|
|
107
|
-
task :release do
|
|
108
|
-
bueller.release_gem_to_github
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
task :release => 'github:release'
|
|
113
|
-
|
|
114
102
|
namespace :git do
|
|
115
|
-
desc "Tag a release
|
|
103
|
+
desc "Tag a release and push to origin"
|
|
116
104
|
task :release do
|
|
117
|
-
bueller.
|
|
105
|
+
bueller.git_tag_release
|
|
118
106
|
end
|
|
119
107
|
end
|
|
120
108
|
|
|
@@ -122,7 +110,7 @@ class Bueller
|
|
|
122
110
|
|
|
123
111
|
namespace :rubygems do
|
|
124
112
|
desc "Release gem to Rubygems"
|
|
125
|
-
task :release =>
|
|
113
|
+
task :release => :build do
|
|
126
114
|
bueller.release_gem_to_rubygems
|
|
127
115
|
end
|
|
128
116
|
end
|
|
@@ -73,6 +73,7 @@ require 'rake/rdoctask'
|
|
|
73
73
|
Rake::RDocTask.new do |rdoc|
|
|
74
74
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
|
75
75
|
|
|
76
|
+
rdoc.main = 'README.rdoc'
|
|
76
77
|
rdoc.rdoc_dir = 'rdoc'
|
|
77
78
|
rdoc.title = "<%= project_name %> #{version}"
|
|
78
79
|
rdoc.rdoc_files.include('README*')
|
data/lib/bueller.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'date'
|
|
2
|
+
require 'git'
|
|
2
3
|
|
|
3
4
|
# Bueller helps you craft the perfect Rubygem. Give him a gemspec, and he takes care of the rest.
|
|
4
5
|
#
|
|
@@ -110,10 +111,6 @@ class Bueller
|
|
|
110
111
|
Bueller::Commands::Version::Write.run_for self, major, minor, patch, build
|
|
111
112
|
end
|
|
112
113
|
|
|
113
|
-
def release_gem_to_github
|
|
114
|
-
Bueller::Commands::ReleaseToGithub.run_for self
|
|
115
|
-
end
|
|
116
|
-
|
|
117
114
|
def git_tag_release
|
|
118
115
|
Bueller::Commands::GitTagRelease.run_for self
|
|
119
116
|
end
|
|
@@ -17,12 +17,21 @@ describe Bueller::Commands::GitTagRelease do
|
|
|
17
17
|
before :each do
|
|
18
18
|
command.repo.stub! :checkout
|
|
19
19
|
command.repo.stub! :push
|
|
20
|
+
command.repo.stub! :add_tag
|
|
21
|
+
command.stub!(:clean_staging_area?).and_return true
|
|
20
22
|
command.stub!(:release_tagged?).and_return true
|
|
21
23
|
end
|
|
22
24
|
|
|
23
|
-
it 'should
|
|
25
|
+
it 'should not run if the staging area is unclean and user does not confirm' do
|
|
24
26
|
command.stub!(:clean_staging_area?).and_return false
|
|
25
|
-
|
|
27
|
+
$stdin.stub!(:gets).and_return 'no'
|
|
28
|
+
expect { command.run }.should raise_error
|
|
29
|
+
end
|
|
30
|
+
it 'should run if the staging area is unclean and user confirms' do
|
|
31
|
+
command.stub!(:clean_staging_area?).and_return false
|
|
32
|
+
$stdin.stub!(:gets).and_return 'yes'
|
|
33
|
+
command.repo.should_receive :checkout
|
|
34
|
+
command.run
|
|
26
35
|
end
|
|
27
36
|
it 'should check out master' do
|
|
28
37
|
command.repo.should_receive(:checkout).with 'master'
|
|
@@ -32,17 +41,16 @@ describe Bueller::Commands::GitTagRelease do
|
|
|
32
41
|
command.repo.should_receive :push
|
|
33
42
|
command.run
|
|
34
43
|
end
|
|
35
|
-
|
|
36
44
|
it 'should not push tags if the release is already tagged' do
|
|
37
45
|
command.repo.should_not_receive :add_tag
|
|
38
|
-
command.repo.should_receive
|
|
46
|
+
command.repo.should_receive :push
|
|
39
47
|
|
|
40
48
|
command.run
|
|
41
49
|
end
|
|
42
50
|
it 'should push tags if the release is not tagged' do
|
|
43
51
|
command.stub!(:release_tagged?).and_return false
|
|
44
52
|
command.repo.should_receive :add_tag
|
|
45
|
-
command.repo.should_receive
|
|
53
|
+
command.repo.should_receive :push
|
|
46
54
|
|
|
47
55
|
command.run
|
|
48
56
|
end
|
data/spec/bueller_spec.rb
CHANGED
|
@@ -76,15 +76,7 @@ describe Bueller do
|
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
|
|
79
|
-
describe '#
|
|
80
|
-
it 'should build and run release to github command when running release_gem_to_github' do
|
|
81
|
-
Bueller::Commands::ReleaseToGithub.should_receive(:run_for).with(bueller)
|
|
82
|
-
|
|
83
|
-
bueller.release_gem_to_github
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
describe '#bump_major_version' do
|
|
79
|
+
describe '#git_tag_release' do
|
|
88
80
|
it 'should build and tag the release' do
|
|
89
81
|
Bueller::Commands::GitTagRelease.should_receive(:run_for).with(bueller)
|
|
90
82
|
|
metadata
CHANGED
|
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
|
5
5
|
segments:
|
|
6
6
|
- 0
|
|
7
7
|
- 0
|
|
8
|
-
-
|
|
9
|
-
version: 0.0.
|
|
8
|
+
- 2
|
|
9
|
+
version: 0.0.2
|
|
10
10
|
platform: ruby
|
|
11
11
|
authors:
|
|
12
12
|
- Derek Kastner
|
|
@@ -14,7 +14,7 @@ autorequire:
|
|
|
14
14
|
bindir: bin
|
|
15
15
|
cert_chain: []
|
|
16
16
|
|
|
17
|
-
date:
|
|
17
|
+
date: 2011-01-19 00:00:00 -05:00
|
|
18
18
|
default_executable: bueller
|
|
19
19
|
dependencies:
|
|
20
20
|
- !ruby/object:Gem::Dependency
|
|
@@ -198,7 +198,6 @@ files:
|
|
|
198
198
|
- lib/bueller/tasks.rb
|
|
199
199
|
- lib/bueller/rubyforge_tasks.rb
|
|
200
200
|
- lib/bueller/generator.rb
|
|
201
|
-
- lib/bueller/commands/release_to_github.rb
|
|
202
201
|
- lib/bueller/commands/build_gem.rb
|
|
203
202
|
- lib/bueller/commands/release_to_rubygems.rb
|
|
204
203
|
- lib/bueller/commands/install_gem.rb
|
|
@@ -287,7 +286,6 @@ files:
|
|
|
287
286
|
- spec/fixtures/bar/bar.gemspec
|
|
288
287
|
- spec/bueller/gemspec_helper_spec.rb
|
|
289
288
|
- spec/bueller/commands/git_tag_release_spec.rb
|
|
290
|
-
- spec/bueller/commands/release_to_github_spec.rb
|
|
291
289
|
- spec/bueller/commands/release_to_rubygems_spec.rb
|
|
292
290
|
- spec/bueller/commands/build_gem_spec.rb
|
|
293
291
|
- spec/bueller/commands/write_gemspec_spec.rb
|
|
@@ -316,7 +314,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
316
314
|
requirements:
|
|
317
315
|
- - ">="
|
|
318
316
|
- !ruby/object:Gem::Version
|
|
319
|
-
hash: -
|
|
317
|
+
hash: -330140273
|
|
320
318
|
segments:
|
|
321
319
|
- 0
|
|
322
320
|
version: "0"
|
|
@@ -364,7 +362,6 @@ test_files:
|
|
|
364
362
|
- spec/fixtures/bar/bar.gemspec
|
|
365
363
|
- spec/bueller/gemspec_helper_spec.rb
|
|
366
364
|
- spec/bueller/commands/git_tag_release_spec.rb
|
|
367
|
-
- spec/bueller/commands/release_to_github_spec.rb
|
|
368
365
|
- spec/bueller/commands/release_to_rubygems_spec.rb
|
|
369
366
|
- spec/bueller/commands/build_gem_spec.rb
|
|
370
367
|
- spec/bueller/commands/write_gemspec_spec.rb
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
class Bueller
|
|
2
|
-
module Commands
|
|
3
|
-
class ReleaseToGithub
|
|
4
|
-
def self.run_for(bueller, attributes = {})
|
|
5
|
-
command = new bueller, attributes
|
|
6
|
-
command.run
|
|
7
|
-
command
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
attr_accessor :output
|
|
11
|
-
attr_reader :bueller
|
|
12
|
-
|
|
13
|
-
def initialize(bueller, attributes = {})
|
|
14
|
-
self.output = $stdout
|
|
15
|
-
@bueller = bueller
|
|
16
|
-
|
|
17
|
-
attributes.each_pair do |key, value|
|
|
18
|
-
send("#{key}=", value)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def base_dir; bueller.base_dir; end
|
|
23
|
-
def version; bueller.version; end
|
|
24
|
-
def repo; bueller.repo; end
|
|
25
|
-
|
|
26
|
-
def run
|
|
27
|
-
raise "Hey buddy, try committing them files first" unless clean_staging_area?
|
|
28
|
-
|
|
29
|
-
repo.checkout('master')
|
|
30
|
-
|
|
31
|
-
output.puts "Pushing master to origin"
|
|
32
|
-
repo.push
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def clean_staging_area?
|
|
36
|
-
status = repo.status
|
|
37
|
-
status.added.empty? && status.deleted.empty? && status.changed.empty?
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
require 'spec_helper'
|
|
2
|
-
|
|
3
|
-
describe Bueller::Commands::ReleaseToGithub do
|
|
4
|
-
let(:bueller) { Bueller.new }
|
|
5
|
-
let(:command) { Bueller::Commands::ReleaseToGithub.new bueller, :output => StringIO.new }
|
|
6
|
-
|
|
7
|
-
before :each do
|
|
8
|
-
status = mock(Object)
|
|
9
|
-
bueller.repo = mock(Git, :status => status)
|
|
10
|
-
|
|
11
|
-
command.repo.status.stub!(:added).and_return []
|
|
12
|
-
command.repo.status.stub!(:changed).and_return []
|
|
13
|
-
command.repo.status.stub!(:deleted).and_return []
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe '#run' do
|
|
17
|
-
before :each do
|
|
18
|
-
command.repo.stub! :checkout
|
|
19
|
-
command.repo.stub! :push
|
|
20
|
-
command.stub!(:release_tagged?).and_return true
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
it 'should raise an error if the staging area is unclean' do
|
|
24
|
-
command.stub!(:clean_staging_area?).and_return false
|
|
25
|
-
expect { command.run }.should raise_error(RuntimeError, /try committing/i)
|
|
26
|
-
end
|
|
27
|
-
it 'should check out master' do
|
|
28
|
-
command.repo.should_receive(:checkout).with 'master'
|
|
29
|
-
command.run
|
|
30
|
-
end
|
|
31
|
-
it 'should push' do
|
|
32
|
-
command.repo.should_receive :push
|
|
33
|
-
command.run
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
describe '#clean_staging_area?' do
|
|
38
|
-
it 'should return true if there are no added, changed, or deleted files' do
|
|
39
|
-
command.should be_clean_staging_area
|
|
40
|
-
end
|
|
41
|
-
it 'should return false if there are added files' do
|
|
42
|
-
command.repo.status.stub!(:added).and_return ['Gemfile.lock']
|
|
43
|
-
command.should_not be_clean_staging_area
|
|
44
|
-
end
|
|
45
|
-
it 'should return false if there are changed files' do
|
|
46
|
-
command.repo.status.stub!(:changed).and_return ['Gemfile.lock']
|
|
47
|
-
command.should_not be_clean_staging_area
|
|
48
|
-
end
|
|
49
|
-
it 'should return false if there are deleted files' do
|
|
50
|
-
command.repo.status.stub!(:deleted).and_return ['Gemfile.lock']
|
|
51
|
-
command.should_not be_clean_staging_area
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|