tumbler 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +8 -0
- data/VERSION +1 -1
- data/lib/tumbler/rake_tasks.rb +12 -13
- data/lib/tumbler.rb +2 -1
- data/spec/spec_helper.rb +1 -1
- data/spec/tasks_spec.rb +80 -0
- data/test1 +0 -0
- data/thinking2.txt +72 -0
- data/tumbler-0.0.1.gem +0 -0
- metadata +8 -3
data/CHANGELOG
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/lib/tumbler/rake_tasks.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
class Tumbler
|
2
|
-
class
|
2
|
+
class RakeTasks
|
3
3
|
|
4
4
|
def self.register(base, name)
|
5
5
|
if manager = Tumbler.load(base)
|
6
|
-
tasks =
|
6
|
+
tasks = RakeTasks.new(manager)
|
7
7
|
tasks.activate_project_tasks(name)
|
8
8
|
else
|
9
9
|
raise "This is not properly configured for tumbler probably due to a lack of a Tumbler configuration file."
|
@@ -33,18 +33,7 @@ class Tumbler
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
namespace :git do
|
37
|
-
task :check_clean do
|
38
|
-
@manager.clean? or raise("There are files that need to be committed first.")
|
39
|
-
end
|
40
|
-
|
41
|
-
task :check_uptodate do
|
42
|
-
@manager.update or raise("Unable to update first.")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
36
|
namespace :version do
|
47
|
-
|
48
37
|
desc "Tag current version into git"
|
49
38
|
task :tag do
|
50
39
|
@manager.tag
|
@@ -62,9 +51,19 @@ class Tumbler
|
|
62
51
|
@manager.bump_and_commit(field)
|
63
52
|
end
|
64
53
|
|
54
|
+
task :push do
|
55
|
+
@manager.tag_and_push(field)
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "Bump version from #{@manager.version.to_s} -> #{@manager.version.value.bump(field).to_s} and push"
|
59
|
+
task :release do
|
60
|
+
@manager.bump_and_push(field)
|
61
|
+
end
|
62
|
+
|
65
63
|
desc "Bump version from #{@manager.version.to_s} -> #{@manager.version.value.bump(field).to_s} and push"
|
66
64
|
task :release do
|
67
65
|
@manager.bump_and_push(field)
|
66
|
+
@manager.gem.push
|
68
67
|
end
|
69
68
|
end
|
70
69
|
end
|
data/lib/tumbler.rb
CHANGED
@@ -3,6 +3,7 @@ require 'versionomy'
|
|
3
3
|
require 'bundler'
|
4
4
|
|
5
5
|
Callsite.activate_kernel_dir_methods
|
6
|
+
|
6
7
|
$LOAD_PATH << __DIR__
|
7
8
|
|
8
9
|
require 'tumbler/runner'
|
@@ -31,7 +32,7 @@ class Tumbler
|
|
31
32
|
|
32
33
|
def self.use_rake_tasks(name = nil)
|
33
34
|
root = File.dirname(Callsite.parse(caller).find{|c| c.filename =~ /Rakefile/}.filename)
|
34
|
-
Tumbler::
|
35
|
+
Tumbler::RakeTasks.register(File.expand_path(root), name)
|
35
36
|
end
|
36
37
|
|
37
38
|
def self.load(base)
|
data/spec/spec_helper.rb
CHANGED
@@ -6,7 +6,7 @@ $LOAD_PATH << File.join(File.basename(__FILE__), '..', 'lib')
|
|
6
6
|
|
7
7
|
require 'tumbler'
|
8
8
|
|
9
|
-
def create_app(name, opts = {})
|
9
|
+
def create_app(name = 'test', opts = {})
|
10
10
|
temp_dir(name) do |dir|
|
11
11
|
temp_dir("remote-#{name}.git") do |remote_dir|
|
12
12
|
Tumbler::Generate.app(dir, name, opts).write
|
data/spec/tasks_spec.rb
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
require 'spec/spec_helper'
|
2
|
+
|
3
|
+
describe Tumbler do
|
4
|
+
before(:all) do
|
5
|
+
ENV['RUBYLIB'] = File.expand_path(File.join(__DIR__, '..', 'lib'))
|
6
|
+
end
|
7
|
+
|
8
|
+
#before(:each) do
|
9
|
+
# dir = File.expand_path(File.join(__DIR__, 'tmp'))
|
10
|
+
# FileUtils.mkdir_p(dir)
|
11
|
+
# @dir, @app = create_bare_app('test', :dir => dir)
|
12
|
+
#end
|
13
|
+
#
|
14
|
+
#after(:each) do
|
15
|
+
# FileUtils.rm_rf(@dir)
|
16
|
+
# $".delete "tumbler/gemspec.rb" # we need to delete this so each gemspec can be generated fresh
|
17
|
+
#end
|
18
|
+
|
19
|
+
it "should gem.build" do
|
20
|
+
create_app do |app|
|
21
|
+
app.gem.build
|
22
|
+
File.exist?("#{app.base}/test-0.0.0.gem").should be_true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context "version bumping" do
|
27
|
+
it "shouldn't write a new tag" do
|
28
|
+
create_app do |app|
|
29
|
+
app.bump_and_commit(:minor)
|
30
|
+
app.tags.should == ['0.0.0']
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
it "should increment the locally stored version" do
|
35
|
+
create_app do |app|
|
36
|
+
app.bump_and_commit(:minor)
|
37
|
+
app.reload
|
38
|
+
app.version.to_s.should == '0.1.0'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should successfully push after a bump" do
|
43
|
+
create_app do |app|
|
44
|
+
app.bump_and_commit(:minor)
|
45
|
+
app.tag_and_push
|
46
|
+
app.reload
|
47
|
+
app.version.to_s.should == '0.1.0'
|
48
|
+
app.tags.should == %w(0.0.0 0.1.0)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "version bumping & pushing" do
|
54
|
+
it "should create a nice changelog" do
|
55
|
+
create_app do |app|
|
56
|
+
app.sh 'touch test1; git add test1; git commit test1 -m"Added test1"'
|
57
|
+
app.bump_and_push(:minor)
|
58
|
+
app.sh 'touch test2; git add test2; git commit test2 -m"Added test2"'
|
59
|
+
app.sh 'touch test2-1; git add test2-1; git commit test2-1 -m"Added test2-1"'
|
60
|
+
app.bump_and_push(:minor)
|
61
|
+
app.sh 'touch test3; git add test3; git commit test3 -m"Added test3"'
|
62
|
+
app.bump_and_push(:minor)
|
63
|
+
app.sh 'touch test4; git add test4; git commit test4 -m"Added test4"'
|
64
|
+
app.bump_and_push(:minor)
|
65
|
+
app.reload
|
66
|
+
changelog = File.read(app.changelog.file)
|
67
|
+
changelog.should match(/== 0\.4\.0\s+\* Added test4 \(.*?\)\n\n==/)
|
68
|
+
changelog.should match(/== 0\.3\.0\s+\* Added test3 \(.*?\)\n\n==/)
|
69
|
+
changelog.should match(/== 0\.2\.0\s+\* Added test2-1 \(.*?\)\n\* Added test2 \(.*?\)\n\n==/)
|
70
|
+
changelog.should match(/== 0\.1\.0\s+\* Added test1 \(.*?\)\n\n$/)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
#
|
76
|
+
# @app.bump_and_commit(:minor)
|
77
|
+
# @app.tag_and_push
|
78
|
+
#end
|
79
|
+
|
80
|
+
end
|
data/test1
ADDED
File without changes
|
data/thinking2.txt
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
You left the chat by being disconnected from the server.
|
2
|
+
[4:53pm] You were promoted to operator by ChanServ.
|
3
|
+
[4:53pm] You rejoined the room.
|
4
|
+
[4:53pm] nesquena: the issue is that when using :git => "xxx" in gemfile, bundler is relying on the dynamic gemspec directly
|
5
|
+
[4:53pm] nesquena: but its not clear to me why this causes everything to break hard
|
6
|
+
[4:54pm] You left the chat by being disconnected from the server.
|
7
|
+
[4:54pm] calvino.freenode.net: [freenode-info] channel flooding and no channel staff around to help? Please check with freenode support: http://freenode.net/faq.shtml#gettinghelp
|
8
|
+
[4:54pm] You rejoined the room.
|
9
|
+
[4:54pm] You were promoted to operator by ChanServ.
|
10
|
+
[4:55pm] nesquena: joshbuddy: i noticed tumbler relies on a VERSION file similar to jeweler. for some reason i have heard multiple people recommend using a version.rb file with a GemName::Version syntax instead. have you ever heard that before?
|
11
|
+
[4:55pm] nesquena: heres where padrino moved from VERSION to a version.rb: http://github.com/padrino/padrino-framework/issuesearch?state=closed&q=version#issue/88
|
12
|
+
[4:55pm] nesquena: and where sinatra did: http://github.com/sinatra/sinatra/commit/e1638a43ad3a5c5ea70db56944a5230cc86e537a
|
13
|
+
[4:55pm] achiu joined the chat room.
|
14
|
+
[4:55pm] achiu was promoted to operator by ChanServ.
|
15
|
+
[4:55pm] joshbuddy: nesquena: oh, well, i'll just follow that then
|
16
|
+
[4:55pm] joshbuddy: should be easy to change
|
17
|
+
[4:56pm] nesquena: joshbuddy: yea seems like it has partially to do with rip only taking the lib folder
|
18
|
+
[4:56pm] joshbuddy: not sure why its best practice though
|
19
|
+
[4:56pm] nesquena: joshbuddy: so any attempt to read version fails miserably
|
20
|
+
[4:56pm] joshbuddy: oh, i suppose thats valid
|
21
|
+
[4:56pm] joshbuddy: i'll fix that, thanks!
|
22
|
+
[4:56pm] nesquena: joshbuddy: sure, they sort of discuss it in the comments here: http://github.com/sinatra/sinatra/commit/e1638a43ad3a5c5ea70db56944a5230cc86e537a
|
23
|
+
[4:56pm] nesquena: joshbuddy: isnt a big deal but thot id let you know since id like padrino to use tumbler too!
|
24
|
+
[4:57pm] joshbuddy: well, i'd like to follow the current state of the art
|
25
|
+
[4:57pm] nesquena: joshbuddy: yea i figured as much. tumbler is looking awesome
|
26
|
+
[4:58pm] joshbuddy: thanks! just wanna finish it already!
|
27
|
+
[4:58pm] nesquena: joshbuddy: and i would love to put it into padrino for 0.9.12
|
28
|
+
[4:58pm] joshbuddy: uup
|
29
|
+
[4:58pm] joshbuddy: thats the goal
|
30
|
+
[4:58pm] joshbuddy: and raise everyone's boats
|
31
|
+
[4:59pm] nesquena: joshbuddy: yea i can easily see it taking over for jeweler once the kinks are worked out
|
32
|
+
[4:59pm] joshbuddy: yeah, exactly.
|
33
|
+
[4:59pm] joshbuddy: but i don't want to release until it does what it minimially promises
|
34
|
+
[4:59pm] nesquena: joshbuddy: we should definately put it on rubyflow, im even down to write a padrino blog post about it or you are welcome to also
|
35
|
+
[4:59pm] nesquena: joshbuddy: yea definately
|
36
|
+
[4:59pm] joshbuddy: and the key there, is really really good testing
|
37
|
+
[4:59pm] joshbuddy: yup
|
38
|
+
[5:01pm] nesquena: joshbuddy: in padrino the way we update version is just to gsub it into the version.rb file:
|
39
|
+
[5:01pm] nesquena: version_text = File.read(version_path).sub(/VERSION = '[\d\.]+'/, "VERSION = '#{args.version}'")
|
40
|
+
[5:01pm] nesquena: not sure its the best but it gets the job done
|
41
|
+
[5:01pm] joshbuddy: i'll do something like it for now ..
|
42
|
+
[5:02pm] nesquena: joshbuddy: yea you can even keep the sytax
|
43
|
+
[5:03pm] nesquena: use_version do
|
44
|
+
[5:03pm] nesquena: filename 'padrino-core/lib/version.rb'
|
45
|
+
[5:03pm] nesquena: end
|
46
|
+
[5:03pm] joshbuddy: thats exactly what i'm thinkin'
|
47
|
+
[5:03pm] RichGuk: Man you guys talk to quick.
|
48
|
+
[5:03pm] RichGuk: *reads up*
|
49
|
+
[5:03pm] nesquena: joshbuddy: although im not sure thats better than version_file 'padrino-core/lib/version.rb'
|
50
|
+
[5:03pm] nesquena: more dsl declarative
|
51
|
+
[5:04pm] joshbuddy: well, i suspect there are other version options ..
|
52
|
+
[5:04pm] joshbuddy: in fact, there are ..
|
53
|
+
[5:04pm] joshbuddy: its not documented yet, but you can have fields in there..
|
54
|
+
[5:04pm] joshbuddy: to indicate which version fields you want to be able to act one
|
55
|
+
[5:04pm] joshbuddy: on
|
56
|
+
[5:06pm] nesquena: joshbuddy: what do you mean which to act on? like major, tiny, minor?
|
57
|
+
[5:06pm] nesquena: what about something like: joshbuddy: i was
|
58
|
+
[5:06pm] nesquena: http://gist.github.com/441270
|
59
|
+
[5:06pm] joshbuddy: nesquena: exactly
|
60
|
+
[5:06pm] nesquena: joshbuddy: ok not a big deal, works either way
|
61
|
+
[5:06pm] joshbuddy: oh, thats nicer!
|
62
|
+
[5:06pm] joshbuddy: but _file ..
|
63
|
+
[5:07pm] joshbuddy: seems odd ..
|
64
|
+
[5:07pm] nesquena: joshbuddy: yea because i think in the 80% case it will be much cleaner
|
65
|
+
[5:07pm] joshbuddy: when changelog doesn't get it too
|
66
|
+
[5:07pm] nesquena: joshbuddy: ok just version then
|
67
|
+
[5:07pm] joshbuddy: nono, i'm thinking changelog_file
|
68
|
+
[5:07pm] joshbuddy:
|
69
|
+
[5:07pm] nesquena: http://gist.github.com/441270
|
70
|
+
[5:07pm] nesquena: oh
|
71
|
+
[5:07pm] nesquena: haha
|
72
|
+
[5:07pm] nesquena: yea that makes sense. i think that looks pretty clean
|
data/tumbler-0.0.1.gem
ADDED
Binary file
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tumbler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Joshua Hull
|
@@ -151,13 +151,17 @@ files:
|
|
151
151
|
- spec/generate_spec.rb
|
152
152
|
- spec/spec.opts
|
153
153
|
- spec/spec_helper.rb
|
154
|
+
- spec/tasks_spec.rb
|
154
155
|
- spec/updater_spec.rb
|
155
156
|
- spec/version_spec.rb
|
156
157
|
- template/Gemfile
|
157
158
|
- template/Rakefile
|
158
159
|
- template/generic.Tumbler.erb
|
159
160
|
- template/generic.gemspec.erb
|
161
|
+
- test1
|
160
162
|
- thinking.txt
|
163
|
+
- thinking2.txt
|
164
|
+
- tumbler-0.0.1.gem
|
161
165
|
- tumbler.gemspec
|
162
166
|
has_rdoc: true
|
163
167
|
homepage: http://github.com/joshbuddy/tumbler
|
@@ -200,5 +204,6 @@ test_files:
|
|
200
204
|
- spec/generate_spec.rb
|
201
205
|
- spec/spec.opts
|
202
206
|
- spec/spec_helper.rb
|
207
|
+
- spec/tasks_spec.rb
|
203
208
|
- spec/updater_spec.rb
|
204
209
|
- spec/version_spec.rb
|