buildar 1.0.1.1 → 1.0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/lib/buildar.rb +34 -3
- data/lib/buildar/tasks.rb +19 -35
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.2.1
|
data/lib/buildar.rb
CHANGED
@@ -53,13 +53,14 @@ class Buildar
|
|
53
53
|
end
|
54
54
|
|
55
55
|
attr_accessor :root, :name, :version_filename, :manifest_filename,
|
56
|
-
:use_git, :publish, :use_manifest_file
|
56
|
+
:use_git, :publish, :use_manifest_file, :use_version_file
|
57
57
|
|
58
58
|
def initialize(root = nil, name = nil)
|
59
59
|
@root = root ? File.expand_path(root) : Dir.pwd
|
60
60
|
@name = name || File.split(@root).last
|
61
|
+
@use_version_file = false
|
61
62
|
@version_filename = 'VERSION'
|
62
|
-
@use_manifest_file =
|
63
|
+
@use_manifest_file = false
|
63
64
|
@manifest_filename = 'MANIFEST.txt'
|
64
65
|
@use_git = true
|
65
66
|
@publish = { rubygems: true }
|
@@ -86,10 +87,40 @@ class Buildar
|
|
86
87
|
# Make sure things tracked elsewhere stay updated
|
87
88
|
@gemspec.name = @name
|
88
89
|
@gemspec.files = self.manifest if @use_manifest_file
|
89
|
-
@gemspec.version = self.version
|
90
|
+
@gemspec.version = self.version if @use_version_file
|
90
91
|
@gemspec
|
91
92
|
end
|
92
93
|
|
94
|
+
def gemfile
|
95
|
+
path = File.join(@root, 'pkg', "#{@name}-#{self.available_version}.gem")
|
96
|
+
raise "gemfile #{path} does not exist" unless File.exists?(path)
|
97
|
+
path
|
98
|
+
end
|
99
|
+
|
100
|
+
def available_version
|
101
|
+
if @use_version_file
|
102
|
+
self.version
|
103
|
+
elsif !@gemspec.version
|
104
|
+
raise "gemspec.version is false or nil"
|
105
|
+
elsif @gemspec.version.to_s.empty?
|
106
|
+
raise "gemspec.version is empty"
|
107
|
+
else
|
108
|
+
@gemspec.version
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def available_manifest
|
113
|
+
if @use_manifest_file
|
114
|
+
self.manifest
|
115
|
+
elsif !@gemspec.files
|
116
|
+
raise "gemspec.files is false or nil"
|
117
|
+
elsif @gemspec.files.empty?
|
118
|
+
raise "gemspec.files is empty"
|
119
|
+
else
|
120
|
+
@gemspec.files
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
93
124
|
def version_file
|
94
125
|
File.join(@root, @version_filename)
|
95
126
|
end
|
data/lib/buildar/tasks.rb
CHANGED
@@ -36,18 +36,25 @@ task :build => [:test, :bump_build] do
|
|
36
36
|
Rake::Task["package"].invoke
|
37
37
|
end
|
38
38
|
|
39
|
+
task :install => [:build] do
|
40
|
+
sh "gem uninstall #{proj.name}"
|
41
|
+
sh "gem install #{proj.gemfile}"
|
42
|
+
end
|
43
|
+
|
39
44
|
# tasks :bump_major, :bump_minor, :bump_patch, :bump_build
|
40
45
|
# commit the version file if proj.use_git
|
41
46
|
#
|
42
47
|
[:major, :minor, :patch, :build].each { |v|
|
43
48
|
task "bump_#{v}" do
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
49
|
+
if proj.use_version_file
|
50
|
+
old_version = proj.version
|
51
|
+
new_version = Buildar.bump(v, old_version)
|
52
|
+
puts "bumping #{old_version} to #{new_version}"
|
53
|
+
proj.write_version new_version
|
54
|
+
if proj.use_git
|
55
|
+
msg = "rake bump_#{v} to #{new_version}"
|
56
|
+
sh "git commit #{proj.version_file} -m '#{msg}'"
|
57
|
+
end
|
51
58
|
end
|
52
59
|
end
|
53
60
|
}
|
@@ -58,7 +65,7 @@ end
|
|
58
65
|
#
|
59
66
|
task :tag => [:test] do
|
60
67
|
if proj.use_git
|
61
|
-
tagname = "v#{proj.
|
68
|
+
tagname = "v#{proj.available_version}"
|
62
69
|
message = ENV['message'] || "auto-tagged #{tagname} by Rake"
|
63
70
|
sh "git tag -a '#{tagname}' -m '#{message}'"
|
64
71
|
sh "git push origin --tags"
|
@@ -69,22 +76,7 @@ end
|
|
69
76
|
# roughly, gem push foo-VERSION.gem
|
70
77
|
#
|
71
78
|
task :publish => [:verify_publish_credentials] do
|
72
|
-
if proj.publish[:rubygems]
|
73
|
-
fragment = "-#{proj.version}.gem"
|
74
|
-
pkg_dir = File.join(proj.root, 'pkg')
|
75
|
-
Dir.chdir(pkg_dir) {
|
76
|
-
candidates = Dir.glob "*#{fragment}"
|
77
|
-
# sanity check
|
78
|
-
case candidates.length
|
79
|
-
when 0
|
80
|
-
raise "could not find .gem matching #{fragment}"
|
81
|
-
when 1
|
82
|
-
sh "gem push #{candidates.first}"
|
83
|
-
else
|
84
|
-
raise "multiple candidates found matching #{fragment}"
|
85
|
-
end
|
86
|
-
}
|
87
|
-
end
|
79
|
+
sh "gem push #{proj.gemfile}" if proj.publish[:rubygems]
|
88
80
|
end
|
89
81
|
|
90
82
|
# if proj.publish[:rubygems]
|
@@ -102,21 +94,13 @@ end
|
|
102
94
|
# display project name and version
|
103
95
|
#
|
104
96
|
task :version do
|
105
|
-
puts "#{proj.name} #{proj.
|
97
|
+
puts "#{proj.name} #{proj.available_version}"
|
106
98
|
end
|
107
99
|
|
108
|
-
# display
|
100
|
+
# display files tracked by the gem
|
109
101
|
#
|
110
102
|
task :manifest do
|
111
|
-
|
112
|
-
puts proj.manifest.join("\n")
|
113
|
-
elsif !proj.gemspec.files
|
114
|
-
puts "warning: gemspec.files is false or nil"
|
115
|
-
elsif proj.gemspec.files.empty?
|
116
|
-
puts "warning: gemspec.files is empty"
|
117
|
-
else
|
118
|
-
puts proj.gemspec.files.join("\n")
|
119
|
-
end
|
103
|
+
puts proj.available_manifest.join("\n")
|
120
104
|
end
|
121
105
|
|
122
106
|
# if the user wants a bump, make it a patch
|