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 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