hen 0.0.2.144 → 0.0.2.148
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/Rakefile +1 -1
- data/lib/hen.rb +34 -7
- data/lib/hen/dsl.rb +8 -27
- data/lib/hens/gem.rake +45 -56
- data/lib/hens/rdoc.rake +4 -5
- metadata +21 -10
data/Rakefile
CHANGED
@@ -15,7 +15,7 @@ task(:gem_spec) {{
|
|
15
15
|
"that fits my own personal style.",
|
16
16
|
:files => FileList['lib/**/*.rb', 'bin/*'].to_a,
|
17
17
|
:extra_files => FileList['[A-Z]*', 'lib/hens/*.rake', 'example/*', 'example/.henrc'].to_a,
|
18
|
-
:dependencies =>
|
18
|
+
:dependencies => ['rubyforge', ['ruby-nuggets', '>= 0.0.3']]
|
19
19
|
}}
|
20
20
|
|
21
21
|
Hen.lay!
|
data/lib/hen.rb
CHANGED
@@ -29,6 +29,9 @@
|
|
29
29
|
require 'rake'
|
30
30
|
require 'yaml'
|
31
31
|
|
32
|
+
require 'rubygems'
|
33
|
+
require 'nuggets/proc/bind'
|
34
|
+
|
32
35
|
require 'hen/dsl'
|
33
36
|
require 'hen/errors'
|
34
37
|
|
@@ -102,14 +105,10 @@ class Hen
|
|
102
105
|
|
103
106
|
# Execute each hen definition
|
104
107
|
hens.each { |name, hen|
|
105
|
-
# Load any dependencies
|
108
|
+
# Load any dependencies, in case they're not included yet
|
106
109
|
load_hens(*hen.dependencies)
|
107
110
|
|
108
|
-
|
109
|
-
hen.lay!
|
110
|
-
rescue HenError => err
|
111
|
-
warn "#{name}: #{err}" if verbose
|
112
|
-
end
|
111
|
+
hen.lay!
|
113
112
|
}
|
114
113
|
end
|
115
114
|
|
@@ -126,6 +125,14 @@ class Hen
|
|
126
125
|
end
|
127
126
|
end
|
128
127
|
|
128
|
+
# call-seq:
|
129
|
+
# Hen[hen] => aHen
|
130
|
+
#
|
131
|
+
# Get hen by name.
|
132
|
+
def [](hen)
|
133
|
+
@hens[hen]
|
134
|
+
end
|
135
|
+
|
129
136
|
private
|
130
137
|
|
131
138
|
# call-seq:
|
@@ -182,7 +189,16 @@ class Hen
|
|
182
189
|
#
|
183
190
|
# Runs the definition block, exposing the DSL if requested.
|
184
191
|
def lay!
|
185
|
-
|
192
|
+
return if laid?
|
193
|
+
|
194
|
+
# Call dependencies first
|
195
|
+
dependencies.each { |hen|
|
196
|
+
self.class[hen].lay!
|
197
|
+
}
|
198
|
+
|
199
|
+
block.bind(DSL).call
|
200
|
+
rescue HenError => err
|
201
|
+
warn "#{name}: #{err}" if verbose
|
186
202
|
end
|
187
203
|
|
188
204
|
# call-seq:
|
@@ -217,6 +233,17 @@ class Hen
|
|
217
233
|
[name.to_sym, dependencies.map { |d| d.to_sym }]
|
218
234
|
end
|
219
235
|
|
236
|
+
# call-seq:
|
237
|
+
# laid? => true or false
|
238
|
+
#
|
239
|
+
# Keeps track of whether the block has already been executed.
|
240
|
+
def laid?
|
241
|
+
return @laid if @laid
|
242
|
+
|
243
|
+
@laid = true
|
244
|
+
false
|
245
|
+
end
|
246
|
+
|
220
247
|
end
|
221
248
|
|
222
249
|
# call-seq:
|
data/lib/hen/dsl.rb
CHANGED
@@ -33,41 +33,22 @@ class Hen
|
|
33
33
|
|
34
34
|
extend self
|
35
35
|
|
36
|
-
#
|
37
|
-
|
38
|
-
|
39
|
-
# Specify a list of +tasks+ the hen requires to be present in
|
40
|
-
# actual the Rakefile. In case one of those is not available,
|
41
|
-
# a HenError::TaskRequired error is raised.
|
42
|
-
def requires(*tasks)
|
43
|
-
tasks.each { |task|
|
44
|
-
raise HenError::TaskRequired.new(task) \
|
45
|
-
unless Rake::Task.task_defined?(task)
|
46
|
-
}
|
47
|
-
end
|
48
|
-
|
49
|
-
# call-seq:
|
50
|
-
# hen.call(task)
|
51
|
-
#
|
52
|
-
# Short-cut to call Rake task +task+.
|
53
|
-
def call(task)
|
36
|
+
# Call Rake task +task+. Raises HenError::TaskRequired if task is not defined.
|
37
|
+
def call_task(task)
|
38
|
+
raise HenError::TaskRequired.new(task) unless Rake::Task.task_defined?(task)
|
54
39
|
Rake::Task[task].invoke.first.call
|
55
40
|
end
|
56
41
|
|
57
|
-
# call-seq:
|
58
|
-
# hen.config
|
59
|
-
#
|
60
42
|
# The Hen configuration.
|
61
43
|
def config
|
62
44
|
Hen.config
|
63
45
|
end
|
64
46
|
|
65
|
-
#
|
66
|
-
#
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
config[key]
|
47
|
+
# Define task +t+, but overwrite any existing task of that name!
|
48
|
+
# (Rake usually just adds them up)
|
49
|
+
def task!(t, &block)
|
50
|
+
Rake.application.instance_variable_get(:@tasks).delete(t.to_s)
|
51
|
+
task(t, &block)
|
71
52
|
end
|
72
53
|
|
73
54
|
end
|
data/lib/hens/gem.rake
CHANGED
@@ -1,96 +1,85 @@
|
|
1
1
|
# Use RDOC_OPTIONS from 'rdoc.rake'
|
2
|
-
Hen :gem => :rdoc do
|
3
|
-
hen.requires :gem_spec
|
4
|
-
|
2
|
+
Hen :gem => :rdoc do
|
5
3
|
require 'rake/gempackagetask'
|
6
4
|
|
7
|
-
GEM_DEFAULTS =
|
5
|
+
GEM_DEFAULTS = config[:gem] unless Object.const_defined?(:GEM_DEFAULTS)
|
8
6
|
|
9
|
-
|
7
|
+
# Merge defaults with user's spec
|
8
|
+
gem_options = GEM_DEFAULTS.merge(call_task(:gem_spec))
|
10
9
|
|
11
10
|
if Object.const_defined?(:RDOC_OPTIONS)
|
12
11
|
gem_options[:rdoc_options] ||= RDOC_OPTIONS[:options]
|
13
12
|
rdoc_files = RDOC_OPTIONS[:rdoc_files]
|
14
13
|
end
|
15
14
|
|
16
|
-
|
15
|
+
gem_spec = Gem::Specification.new { |spec|
|
16
|
+
|
17
|
+
### dependencies
|
18
|
+
|
17
19
|
(gem_options.delete(:dependencies) || []).each { |dependency|
|
18
|
-
|
20
|
+
spec.add_dependency(*dependency)
|
19
21
|
}
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
abort "Gem version missing"
|
25
|
-
end
|
23
|
+
### version
|
24
|
+
|
25
|
+
abort 'Gem version missing' unless gem_options[:version]
|
26
26
|
|
27
27
|
if gem_options.delete(:append_svnversion) && svnversion = `svnversion`.chomp[/\d+/]
|
28
|
-
|
28
|
+
gem_options[:version] << '.' << svnversion
|
29
29
|
end
|
30
30
|
|
31
|
-
|
31
|
+
### description
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
gem_options[:description] ||= gem_options[:summary]
|
34
|
+
|
35
|
+
### homepage
|
36
|
+
|
37
|
+
if rf_project = gem_options[:rubyforge_project]
|
38
|
+
gem_options[:homepage] ||= "#{rf_project}.rubyforge.org/#{gem_options[:name]}"
|
36
39
|
end
|
37
40
|
|
38
|
-
|
39
|
-
extra_files = gem_options.delete(:extra_files) || []
|
40
|
-
executable_files = gem_options.delete(:executables) || files.grep(/\Abin\//)
|
41
|
+
### extra_rdoc_files, files, executables, bindir
|
41
42
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
}
|
43
|
+
gem_options[:files] ||= []
|
44
|
+
gem_options[:extra_rdoc_files] ||= rdoc_files - gem_options[:files] if rdoc_files
|
45
|
+
gem_options[:files] += gem_options.delete(:extra_files) || []
|
46
46
|
|
47
|
-
|
48
|
-
|
47
|
+
gem_options[:executables] ||= gem_options[:files].grep(/\Abin\//)
|
48
|
+
gem_options[:bindir] ||= File.dirname(gem_options[:executables].first)
|
49
49
|
|
50
|
-
|
51
|
-
gem_spec.extra_rdoc_files ||= rdoc_files - files if rdoc_files
|
50
|
+
gem_options[:executables].map! { |executable| File.basename(executable) }
|
52
51
|
|
53
|
-
|
52
|
+
### => set options!
|
54
53
|
|
55
54
|
gem_options.each { |option, value|
|
56
|
-
|
55
|
+
spec.send("#{option}=", value)
|
57
56
|
}
|
58
57
|
}
|
59
58
|
|
60
|
-
|
61
|
-
|
59
|
+
desc "Display the gem specification"
|
60
|
+
task :debug_gem do
|
61
|
+
puts gem_spec.to_ruby
|
62
|
+
end
|
63
|
+
|
64
|
+
pkg_task = Rake::GemPackageTask.new(gem_spec) do |pkg|
|
65
|
+
pkg.need_tar_gz = true
|
66
|
+
pkg.need_zip = true
|
62
67
|
end
|
63
68
|
|
64
|
-
desc
|
65
|
-
task :
|
69
|
+
desc "Package and upload the release to Rubyforge"
|
70
|
+
task :release => :package do
|
66
71
|
require 'rubyforge'
|
67
72
|
|
68
|
-
|
69
|
-
|
73
|
+
files = Dir[File.join('pkg', "#{pkg_task.package_name}.*")]
|
74
|
+
abort "Nothing to release!" if files.empty?
|
70
75
|
|
71
76
|
# shorten to (at most) three digits
|
72
|
-
version =
|
77
|
+
version = pkg_task.version.to_s.split(/([.])/)[0..4].join
|
73
78
|
|
74
|
-
|
75
|
-
|
76
|
-
}.last
|
77
|
-
|
78
|
-
rf.add_release spec.rubyforge_project, spec.name, version, latest_gem
|
79
|
-
end
|
80
|
-
|
81
|
-
desc 'Upload latest gem to gem server'
|
82
|
-
task :upload_gem_to_server => :gem do
|
83
|
-
host = ENV['GEM_HOST'] || 'prometheus.khi.uni-koeln.de'
|
84
|
-
user = ENV['GEM_USER'] || 'prometheus'
|
85
|
-
path = ENV['GEM_PATH'] || '/var/www/rubygems'
|
86
|
-
temp = ENV['GEM_TEMP'] || File.join(path, 'tmp')
|
87
|
-
|
88
|
-
latest_gem = Dir['pkg/*.gem'].sort_by { |gem|
|
89
|
-
File.mtime(gem)
|
90
|
-
}.last
|
79
|
+
rf = RubyForge.new
|
80
|
+
rf.login
|
91
81
|
|
92
|
-
|
93
|
-
sh "ssh #{user}@#{host} 'TMPDIR='#{temp}' gem generate_index -d #{path} -V'"
|
82
|
+
rf.add_release gem_spec.rubyforge_project, pkg_task.name, version, *files
|
94
83
|
end
|
95
84
|
|
96
85
|
end
|
data/lib/hens/rdoc.rake
CHANGED
@@ -1,12 +1,11 @@
|
|
1
|
-
Hen :rdoc do
|
2
|
-
hen.requires :doc_spec
|
3
|
-
|
1
|
+
Hen :rdoc do
|
4
2
|
require 'rake/rdoctask'
|
5
3
|
|
6
|
-
RDOC_DEFAULTS =
|
4
|
+
RDOC_DEFAULTS = config[:rdoc] unless Object.const_defined?(:RDOC_DEFAULTS)
|
7
5
|
|
8
6
|
unless Object.const_defined?(:RDOC_OPTIONS)
|
9
|
-
|
7
|
+
# Merge defaults with user's spec
|
8
|
+
opts = RDOC_DEFAULTS.merge(call_task(:doc_spec))
|
10
9
|
|
11
10
|
RDOC_OPTIONS = {
|
12
11
|
:rdoc_dir => opts.delete(:rdoc_dir),
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.2.
|
4
|
+
version: 0.0.2.148
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Wille
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2008-01-04 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -21,14 +21,25 @@ dependencies:
|
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: "0"
|
23
23
|
version:
|
24
|
-
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: ruby-nuggets
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 0.0.3
|
32
|
+
version:
|
33
|
+
description: Hoe or Echoe? No, thanks! Just a Rake helper that fits my own personal style.
|
25
34
|
email: jens.wille@uni-koeln.de
|
26
35
|
executables:
|
27
36
|
- hen
|
28
37
|
extensions: []
|
29
38
|
|
30
|
-
extra_rdoc_files:
|
31
|
-
|
39
|
+
extra_rdoc_files:
|
40
|
+
- README
|
41
|
+
- COPYING
|
42
|
+
- ChangeLog
|
32
43
|
files:
|
33
44
|
- lib/hen/version.rb
|
34
45
|
- lib/hen/dsl.rb
|
@@ -48,14 +59,14 @@ homepage: prometheus.rubyforge.org/hen
|
|
48
59
|
post_install_message:
|
49
60
|
rdoc_options:
|
50
61
|
- --all
|
51
|
-
- --
|
62
|
+
- --charset
|
63
|
+
- UTF-8
|
64
|
+
- --title
|
65
|
+
- hen Application documentation
|
52
66
|
- --main
|
53
67
|
- README
|
68
|
+
- --line-numbers
|
54
69
|
- --inline-source
|
55
|
-
- --title
|
56
|
-
- hen Application documentation
|
57
|
-
- --charset
|
58
|
-
- UTF-8
|
59
70
|
require_paths:
|
60
71
|
- lib
|
61
72
|
required_ruby_version: !ruby/object:Gem::Requirement
|