buildar 1.2.0.1 → 1.3.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/MANIFEST.txt +1 -0
- data/VERSION +1 -1
- data/buildar.gemspec +22 -0
- data/lib/buildar.rb +77 -43
- data/lib/buildar/tasks.rb +38 -1
- data/rakefile.rb +11 -9
- metadata +3 -2
data/MANIFEST.txt
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.3.0.7
|
data/buildar.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
# static stuff
|
3
|
+
s.name = 'buildar'
|
4
|
+
s.summary = 'Buildar crept inside your rakefile and scratched upon the tasking post'
|
5
|
+
s.author = 'Rick Hull'
|
6
|
+
s.homepage = 'https://github.com/rickhull/buildar'
|
7
|
+
s.license = 'MIT'
|
8
|
+
s.has_rdoc = true
|
9
|
+
s.description = 'Buildar helps automate the release process with versioning, building, packaging, and publishing. Optional git integration.'
|
10
|
+
|
11
|
+
s.add_runtime_dependency "rake", ">= 8" # guess?
|
12
|
+
s.add_development_dependency "buildar", "~> 1.0"
|
13
|
+
|
14
|
+
# dynamic setup
|
15
|
+
this_dir = File.dirname(File.expand_path(__FILE__))
|
16
|
+
version_file = File.join(this_dir, 'VERSION')
|
17
|
+
manifest_file = File.join(this_dir, 'MANIFEST.txt')
|
18
|
+
|
19
|
+
# dynamic assignments
|
20
|
+
s.version = File.read(version_file).chomp
|
21
|
+
s.files = File.readlines(manifest_file).map { |f| f.chomp }
|
22
|
+
end
|
data/lib/buildar.rb
CHANGED
@@ -7,9 +7,12 @@
|
|
7
7
|
# And it can't be set to nil, for example.
|
8
8
|
#
|
9
9
|
class Buildar
|
10
|
+
def self.dir(file)
|
11
|
+
File.expand_path('..', file)
|
12
|
+
end
|
13
|
+
|
10
14
|
def self.version
|
11
|
-
|
12
|
-
File.read(vpath).chomp
|
15
|
+
File.read(File.join(dir(__FILE__), '..', 'VERSION')).chomp
|
13
16
|
end
|
14
17
|
|
15
18
|
# Call this from the rakefile, like:
|
@@ -58,62 +61,59 @@ class Buildar
|
|
58
61
|
}.join('.')
|
59
62
|
end
|
60
63
|
|
61
|
-
attr_accessor :root, :name,
|
62
|
-
:use_git, :publish,
|
64
|
+
attr_accessor :root, :name,
|
65
|
+
:use_git, :publish,
|
66
|
+
:use_gemspec_file, :gemspec_filename,
|
67
|
+
:use_version_file, :version_filename,
|
68
|
+
:use_manifest_file, :manifest_filename
|
69
|
+
|
70
|
+
attr_writer :gemspec_filename
|
63
71
|
|
64
|
-
def initialize(root = nil
|
72
|
+
def initialize(root = nil)
|
65
73
|
@root = root ? File.expand_path(root) : Dir.pwd
|
66
|
-
@name =
|
74
|
+
@name = File.split(@root).last
|
75
|
+
@use_git = false
|
76
|
+
@publish = { rubygems: false }
|
77
|
+
@use_gemspec_file = true
|
67
78
|
@use_version_file = false
|
68
79
|
@version_filename = 'VERSION'
|
69
80
|
@use_manifest_file = false
|
70
81
|
@manifest_filename = 'MANIFEST.txt'
|
71
|
-
@use_git = false
|
72
|
-
@publish = { rubygems: false }
|
73
82
|
end
|
74
83
|
|
75
|
-
# created on demand and kept up to date
|
76
|
-
#
|
77
84
|
def gemspec
|
78
|
-
@
|
79
|
-
@gemspec.name = @name
|
80
|
-
@gemspec.files = self.manifest if @use_manifest_file
|
81
|
-
@gemspec.version = self.version if @use_version_file
|
82
|
-
@gemspec
|
85
|
+
@use_gemspec_file ? self.hard_gemspec : self.soft_gemspec
|
83
86
|
end
|
84
87
|
|
85
|
-
def
|
86
|
-
|
87
|
-
|
88
|
-
|
88
|
+
def soft_gemspec
|
89
|
+
@soft_gemspec ||= Gem::Specification.new
|
90
|
+
@soft_gemspec.name = @name
|
91
|
+
@soft_gemspec.version = self.version if @use_version_file
|
92
|
+
@soft_gemspec.files = self.manifest if @use_manifest_file
|
93
|
+
@soft_gemspec
|
89
94
|
end
|
90
95
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
raise "gemspec.version is false or nil"
|
96
|
-
elsif @gemspec.version.to_s.empty?
|
97
|
-
raise "gemspec.version is empty"
|
98
|
-
else
|
99
|
-
@gemspec.version
|
100
|
-
end
|
96
|
+
# load every time; cache locally if you must
|
97
|
+
#
|
98
|
+
def hard_gemspec
|
99
|
+
Gem::Specification.load self.gemspec_file
|
101
100
|
end
|
102
101
|
|
103
|
-
def
|
104
|
-
|
105
|
-
self.manifest
|
106
|
-
elsif !@gemspec.files
|
107
|
-
raise "gemspec.files is false or nil"
|
108
|
-
elsif @gemspec.files.empty?
|
109
|
-
raise "gemspec.files is empty"
|
110
|
-
else
|
111
|
-
@gemspec.files
|
112
|
-
end
|
102
|
+
def gemspec_file
|
103
|
+
File.join(@root, self.gemspec_filename)
|
113
104
|
end
|
114
105
|
|
115
|
-
|
116
|
-
|
106
|
+
# @name.gemspec is the default, but don't set this in the constructor
|
107
|
+
# it's common to set the name after intialization. e.g. via Buildar.conf
|
108
|
+
# so set the default on first invocation. After that, it's an accessor.
|
109
|
+
#
|
110
|
+
def gemspec_filename
|
111
|
+
@gemspec_filename ||= "#{@name}.gemspec"
|
112
|
+
@gemspec_filename
|
113
|
+
end
|
114
|
+
|
115
|
+
def gemspec_location
|
116
|
+
@use_gemspec_file ? self.gemspec_filename : 'Rakefile'
|
117
117
|
end
|
118
118
|
|
119
119
|
def version
|
@@ -124,11 +124,45 @@ class Buildar
|
|
124
124
|
File.open(self.version_file, 'w') { |f| f.write(new_version) }
|
125
125
|
end
|
126
126
|
|
127
|
-
def
|
128
|
-
File.join(@root, @
|
127
|
+
def version_file
|
128
|
+
File.join(@root, @version_filename)
|
129
|
+
end
|
130
|
+
|
131
|
+
def available_version
|
132
|
+
return self.version if @use_version_file
|
133
|
+
version = self.gemspec.version
|
134
|
+
raise "gemspec.version is missing" if !version or version.to_s.empty?
|
135
|
+
version
|
136
|
+
end
|
137
|
+
|
138
|
+
def version_location
|
139
|
+
@use_version_file ? self.version_filename : self.gemspec_filename
|
140
|
+
end
|
141
|
+
|
142
|
+
# where we expect a built gem to land
|
143
|
+
#
|
144
|
+
def gemfile
|
145
|
+
path = File.join(@root, 'pkg', "#{@name}-#{self.available_version}.gem")
|
146
|
+
raise "gemfile #{path} does not exist" unless File.exists?(path)
|
147
|
+
path
|
148
|
+
end
|
149
|
+
|
150
|
+
def available_manifest
|
151
|
+
return self.manifest if @use_manifest_file
|
152
|
+
manifest = self.gemspec.files
|
153
|
+
raise "gemspec.files is missing" if !manifest or manifest.to_s.empty?
|
154
|
+
manifest
|
129
155
|
end
|
130
156
|
|
131
157
|
def manifest
|
132
158
|
File.readlines(self.manifest_file).map { |line| line.chomp }
|
133
159
|
end
|
160
|
+
|
161
|
+
def manifest_file
|
162
|
+
File.join(@root, @manifest_filename)
|
163
|
+
end
|
164
|
+
|
165
|
+
def manifest_location
|
166
|
+
@use_manifest_file ? self.manifest_filename : self.gemspec_filename
|
167
|
+
end
|
134
168
|
end
|
data/lib/buildar/tasks.rb
CHANGED
@@ -7,6 +7,28 @@ def proj
|
|
7
7
|
Buildar.instance
|
8
8
|
end
|
9
9
|
|
10
|
+
# dump environment stuff, smoketest
|
11
|
+
#
|
12
|
+
task :buildar do
|
13
|
+
puts
|
14
|
+
puts <<EOF
|
15
|
+
Project: #{proj.name} #{proj.version}
|
16
|
+
Root: #{proj.root}
|
17
|
+
Use gemspec file: #{proj.use_gemspec_file}
|
18
|
+
Use version file: #{proj.use_version_file}
|
19
|
+
Use manifest file: #{proj.use_manifest_file}
|
20
|
+
Use git: #{proj.use_git}
|
21
|
+
Publish: #{proj.publish.keys}
|
22
|
+
Gemspec location: #{proj.gemspec_location}
|
23
|
+
Version location: #{proj.version_location}
|
24
|
+
Manifest location: #{proj.manifest_location}
|
25
|
+
----
|
26
|
+
using Buildar #{Buildar.version}
|
27
|
+
EOF
|
28
|
+
puts
|
29
|
+
end
|
30
|
+
|
31
|
+
|
10
32
|
# the reason you're here
|
11
33
|
#
|
12
34
|
task :release => [:message, :build, :tag, :publish]
|
@@ -29,18 +51,33 @@ end
|
|
29
51
|
# roughly equivalent to `gem build foo.gemspec`
|
30
52
|
# places .gem file in pkg/
|
31
53
|
#
|
32
|
-
task :
|
54
|
+
task :package => [:test, :bump_build] do
|
33
55
|
# definine the task at runtime, rather than requiretime
|
34
56
|
# so that the gemspec will reflect any version bumping since requiretime
|
35
57
|
Gem::PackageTask.new(proj.gemspec).define
|
36
58
|
Rake::Task["package"].invoke
|
37
59
|
end
|
38
60
|
|
61
|
+
task :build => [:test, :bump_build] do
|
62
|
+
if proj.use_gemspec_file
|
63
|
+
sh "gem build #{proj.gemspec_filename}"
|
64
|
+
target_file = "#{proj.name}-#{proj.available_version}.gem"
|
65
|
+
if File.exists? target_file
|
66
|
+
sh "mv #{target_file} pkg/#{target_file}"
|
67
|
+
else
|
68
|
+
puts "warning: expected #{target_file} but didn't find it"
|
69
|
+
end
|
70
|
+
else
|
71
|
+
puts "warning: cannot build without use_gemspec_file; try package"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
39
75
|
task :install => [:build] do
|
40
76
|
sh "gem uninstall #{proj.name}"
|
41
77
|
sh "gem install #{proj.gemfile}"
|
42
78
|
end
|
43
79
|
|
80
|
+
# if proj.use_version_file
|
44
81
|
# tasks :bump_major, :bump_minor, :bump_patch, :bump_build
|
45
82
|
# commit the version file if proj.use_git
|
46
83
|
#
|
data/rakefile.rb
CHANGED
@@ -2,21 +2,23 @@ require 'buildar/tasks'
|
|
2
2
|
require 'rake/testtask'
|
3
3
|
|
4
4
|
Buildar.conf(__FILE__) do |b|
|
5
|
+
b.name = 'buildar'
|
5
6
|
b.use_version_file = true
|
6
7
|
b.version_filename = 'VERSION'
|
7
8
|
b.use_manifest_file = true
|
8
9
|
b.manifest_filename = 'MANIFEST.txt'
|
9
10
|
b.use_git = true
|
10
11
|
b.publish[:rubygems] = true
|
11
|
-
|
12
|
-
b.gemspec.summary = 'Buildar crept inside your rakefile and scratched upon the tasking post'
|
13
|
-
b.gemspec.author = 'Rick Hull'
|
14
|
-
b.gemspec.homepage = 'https://github.com/rickhull/buildar'
|
15
|
-
b.gemspec.license = 'MIT'
|
16
|
-
b.gemspec.has_rdoc = true
|
17
|
-
b.gemspec.description = 'Buildar helps automate the release process with versioning, building, packaging, and publishing. Optional git integration.'
|
18
|
-
|
19
|
-
b.gemspec.
|
12
|
+
|
13
|
+
# b.gemspec.summary = 'Buildar crept inside your rakefile and scratched upon the tasking post'
|
14
|
+
# b.gemspec.author = 'Rick Hull'
|
15
|
+
# b.gemspec.homepage = 'https://github.com/rickhull/buildar'
|
16
|
+
# b.gemspec.license = 'MIT'
|
17
|
+
# b.gemspec.has_rdoc = true
|
18
|
+
# b.gemspec.description = 'Buildar helps automate the release process with versioning, building, packaging, and publishing. Optional git integration.'
|
19
|
+
|
20
|
+
# b.gemspec.add_runtime_dependency "rake", ">= 8" # guess?
|
21
|
+
# b.gemspec.add_development_dependency "buildar", "~> 1.0"
|
20
22
|
end
|
21
23
|
|
22
24
|
Rake::TestTask.new :test do |t|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: buildar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -50,6 +50,7 @@ executables: []
|
|
50
50
|
extensions: []
|
51
51
|
extra_rdoc_files: []
|
52
52
|
files:
|
53
|
+
- buildar.gemspec
|
53
54
|
- MANIFEST.txt
|
54
55
|
- VERSION
|
55
56
|
- rakefile.rb
|