buildar 1.2.0.1 → 1.3.0.7
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/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
|