buildar 1.0.1.1 → 1.0.2.1
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/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
|