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 CHANGED
@@ -1,3 +1,4 @@
1
+ buildar.gemspec
1
2
  MANIFEST.txt
2
3
  VERSION
3
4
  rakefile.rb
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.0.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
- vpath = File.join(File.dirname(__FILE__), '..', 'VERSION')
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, :version_filename, :manifest_filename,
62
- :use_git, :publish, :use_manifest_file, :use_version_file
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, name = nil)
72
+ def initialize(root = nil)
65
73
  @root = root ? File.expand_path(root) : Dir.pwd
66
- @name = name || File.split(@root).last
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
- @gemspec ||= Gem::Specification.new
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 gemfile
86
- path = File.join(@root, 'pkg', "#{@name}-#{self.available_version}.gem")
87
- raise "gemfile #{path} does not exist" unless File.exists?(path)
88
- path
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
- def available_version
92
- if @use_version_file
93
- self.version
94
- elsif !@gemspec.version
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 available_manifest
104
- if @use_manifest_file
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
- def version_file
116
- File.join(@root, @version_filename)
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 manifest_file
128
- File.join(@root, @manifest_filename)
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 :build => [:test, :bump_build] do
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
- b.gemspec.name = 'buildar'
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
- b.gemspec.add_runtime_dependency "rake", ">= 8" # guess?
19
- b.gemspec.add_development_dependency "buildar", "~> 1.0"
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.2.0.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-07 00:00:00.000000000 Z
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