hen 0.0.2.148 → 0.0.3.149
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/ChangeLog +10 -0
- data/README +2 -2
- data/Rakefile +12 -15
- data/example/.henrc +5 -0
- data/lib/hen.rb +14 -7
- data/lib/hen/dsl.rb +42 -11
- data/lib/hen/errors.rb +9 -9
- data/lib/hen/version.rb +4 -4
- data/lib/hens/gem.rake +18 -15
- data/lib/hens/rdoc.rake +44 -19
- metadata +5 -5
data/ChangeLog
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
= Revision history for hen
|
2
2
|
|
3
|
+
== 0.0.3 [2008-01-04]
|
4
|
+
|
5
|
+
* More cleanup and maturing.
|
6
|
+
* New tasks 'release' (formerly 'upload_gem'), 'publish_docs', and 'debug_gem'
|
7
|
+
* All in all: Pretty much inspired by Hoe ;-)
|
8
|
+
|
9
|
+
== 0.0.2 [2007-12-21]
|
10
|
+
|
11
|
+
* Cleanup and minor improvements
|
12
|
+
|
3
13
|
== 0.0.1 [2007-12-20]
|
4
14
|
|
5
15
|
* Birthday :-)
|
data/README
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
== VERSION
|
4
4
|
|
5
|
-
This documentation refers to hen version 0.0.
|
5
|
+
This documentation refers to hen version 0.0.3
|
6
6
|
|
7
7
|
|
8
8
|
== DESCRIPTION
|
@@ -17,7 +17,7 @@ TODO: well, the description... ;-)
|
|
17
17
|
|
18
18
|
== LICENSE AND COPYRIGHT
|
19
19
|
|
20
|
-
Copyright (C) 2007 University of Cologne,
|
20
|
+
Copyright (C) 2007-2008 University of Cologne,
|
21
21
|
Albertus-Magnus-Platz, 50932 Cologne, Germany
|
22
22
|
|
23
23
|
hen is free software: you can redistribute it and/or modify it under the
|
data/Rakefile
CHANGED
@@ -1,21 +1,18 @@
|
|
1
1
|
$:.unshift('lib')
|
2
2
|
|
3
3
|
require 'hen'
|
4
|
-
require 'hen/version'
|
5
4
|
|
6
|
-
|
7
|
-
:
|
8
|
-
|
5
|
+
Hen.lay! {{
|
6
|
+
:rubyforge => {
|
7
|
+
:package => 'hen'
|
8
|
+
},
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
:dependencies => ['rubyforge', ['ruby-nuggets', '>= 0.0.3']]
|
10
|
+
:gem => {
|
11
|
+
:version => Hen::VERSION,
|
12
|
+
:summary => "Hoe or Echoe? No, thanks! Just a Rake " <<
|
13
|
+
"helper that fits my own personal style.",
|
14
|
+
:files => FileList['lib/**/*.rb', 'bin/*'].to_a,
|
15
|
+
:extra_files => FileList['[A-Z]*', 'lib/hens/*.rake', 'example/*', 'example/.henrc'].to_a,
|
16
|
+
:dependencies => ['rubyforge', ['ruby-nuggets', '>= 0.0.3']]
|
17
|
+
}
|
19
18
|
}}
|
20
|
-
|
21
|
-
Hen.lay!
|
data/example/.henrc
CHANGED
data/lib/hen.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
# #
|
4
4
|
# hen -- Just a Rake helper #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007 University of Cologne,
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# Copyright (C) 2007-2008 University of Cologne, #
|
7
|
+
# Albertus-Magnus-Platz, #
|
8
|
+
# 50932 Cologne, Germany #
|
9
9
|
# #
|
10
10
|
# Authors: #
|
11
11
|
# Jens Wille <jens.wille@uni-koeln.de> #
|
@@ -34,6 +34,7 @@ require 'nuggets/proc/bind'
|
|
34
34
|
|
35
35
|
require 'hen/dsl'
|
36
36
|
require 'hen/errors'
|
37
|
+
require 'hen/version'
|
37
38
|
|
38
39
|
class Hen
|
39
40
|
|
@@ -76,8 +77,8 @@ class Hen
|
|
76
77
|
|
77
78
|
# call-seq:
|
78
79
|
# lay!
|
79
|
-
# lay!
|
80
|
-
# lay!
|
80
|
+
# lay!(:some_hen, :some_other_hen)
|
81
|
+
# lay!(:exclude => [:some_hen, :some_other_hen])
|
81
82
|
#
|
82
83
|
# Loads the hens, causing them to lay their eggs^H^H^Htasks. Either all,
|
83
84
|
# if no restrictions are specified, or the given hens, or all but those
|
@@ -88,9 +89,15 @@ class Hen
|
|
88
89
|
|
89
90
|
@verbose = options[:verbose] if options.has_key?(:verbose)
|
90
91
|
|
92
|
+
if block_given?
|
93
|
+
yield.each { |key, value|
|
94
|
+
config[key].update(value)
|
95
|
+
}
|
96
|
+
end
|
97
|
+
|
91
98
|
# Handle include/exclude requirements
|
92
|
-
|
93
|
-
args, default = args.empty? ? [
|
99
|
+
excl = options[:exclude]
|
100
|
+
args, default = args.empty? ? [excl ? [*excl] : [], true] : [args, false]
|
94
101
|
|
95
102
|
inclexcl = Hash.new(default)
|
96
103
|
args.each { |arg|
|
data/lib/hen/dsl.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
# #
|
4
4
|
# A component of hen, the Rake helper. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007 University of Cologne,
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# Copyright (C) 2007-2008 University of Cologne, #
|
7
|
+
# Albertus-Magnus-Platz, #
|
8
|
+
# 50932 Cologne, Germany #
|
9
9
|
# #
|
10
10
|
# Authors: #
|
11
11
|
# Jens Wille <jens.wille@uni-koeln.de> #
|
@@ -33,15 +33,20 @@ class Hen
|
|
33
33
|
|
34
34
|
extend self
|
35
35
|
|
36
|
-
#
|
37
|
-
|
38
|
-
raise HenError::TaskRequired.new(task) unless Rake::Task.task_defined?(task)
|
39
|
-
Rake::Task[task].invoke.first.call
|
40
|
-
end
|
41
|
-
|
42
|
-
# The Hen configuration.
|
36
|
+
# The Hen configuration. Raises HenError::ConfigRequired
|
37
|
+
# if a required configuration is missing.
|
43
38
|
def config
|
44
|
-
Hen.config
|
39
|
+
config = Hen.config
|
40
|
+
|
41
|
+
# always return a duplicate for a value, hence making the
|
42
|
+
# configuration immutable; raise if config is missing
|
43
|
+
def config.[](key)
|
44
|
+
raise HenError::ConfigRequired.new(key) unless has_key?(key)
|
45
|
+
|
46
|
+
fetch(key).dup
|
47
|
+
end
|
48
|
+
|
49
|
+
config
|
45
50
|
end
|
46
51
|
|
47
52
|
# Define task +t+, but overwrite any existing task of that name!
|
@@ -51,6 +56,32 @@ class Hen
|
|
51
56
|
task(t, &block)
|
52
57
|
end
|
53
58
|
|
59
|
+
# Execute a series of commands until one of them succeeds. Intended for
|
60
|
+
# platform-dependent alternatives (Command A is not available? Then try
|
61
|
+
# B instead).
|
62
|
+
#
|
63
|
+
# TODO: This won't detect cases where a command is actually available,
|
64
|
+
# but simply fails.
|
65
|
+
def execute(*commands)
|
66
|
+
commands.each { |command|
|
67
|
+
ok, res = sh(command) { |ok, res| [ok, res] }
|
68
|
+
break if ok
|
69
|
+
|
70
|
+
warn "Error while executing command (return code #{res.exitstatus})"
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
# Prepare the use of Rubyforge, optionally logging in right away.
|
75
|
+
# Returns the RubyForge object.
|
76
|
+
def init_rubyforge(login = true)
|
77
|
+
require 'rubyforge'
|
78
|
+
|
79
|
+
rf = RubyForge.new
|
80
|
+
rf.login if login
|
81
|
+
|
82
|
+
rf
|
83
|
+
end
|
84
|
+
|
54
85
|
end
|
55
86
|
|
56
87
|
end
|
data/lib/hen/errors.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
# #
|
4
4
|
# A component of hen, the Rake helper. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007 University of Cologne,
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# Copyright (C) 2007-2008 University of Cologne, #
|
7
|
+
# Albertus-Magnus-Platz, #
|
8
|
+
# 50932 Cologne, Germany #
|
9
9
|
# #
|
10
10
|
# Authors: #
|
11
11
|
# Jens Wille <jens.wille@uni-koeln.de> #
|
@@ -31,21 +31,21 @@ class Hen
|
|
31
31
|
# Base class for Hen errors.
|
32
32
|
class HenError < StandardError
|
33
33
|
|
34
|
-
# Raised if a required
|
35
|
-
class
|
34
|
+
# Raised if a required configuration is missing.
|
35
|
+
class ConfigRequired < HenError
|
36
36
|
|
37
37
|
# call-seq:
|
38
|
-
# new(
|
38
|
+
# new(key)
|
39
39
|
#
|
40
|
-
def initialize(
|
41
|
-
@
|
40
|
+
def initialize(key)
|
41
|
+
@key = key
|
42
42
|
end
|
43
43
|
|
44
44
|
# call-seq:
|
45
45
|
# to_s
|
46
46
|
#
|
47
47
|
def to_s
|
48
|
-
"Required
|
48
|
+
"Required configuration missing for #{@key}"
|
49
49
|
end
|
50
50
|
|
51
51
|
end
|
data/lib/hen/version.rb
CHANGED
@@ -3,9 +3,9 @@
|
|
3
3
|
# #
|
4
4
|
# A component of hen, the Rake helper. #
|
5
5
|
# #
|
6
|
-
# Copyright (C) 2007 University of Cologne,
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# Copyright (C) 2007-2008 University of Cologne, #
|
7
|
+
# Albertus-Magnus-Platz, #
|
8
|
+
# 50932 Cologne, Germany #
|
9
9
|
# #
|
10
10
|
# Authors: #
|
11
11
|
# Jens Wille <jens.wille@uni-koeln.de> #
|
@@ -32,7 +32,7 @@ class Hen
|
|
32
32
|
|
33
33
|
MAJOR = 0
|
34
34
|
MINOR = 0
|
35
|
-
TINY =
|
35
|
+
TINY = 3
|
36
36
|
|
37
37
|
class << self
|
38
38
|
|
data/lib/hens/gem.rake
CHANGED
@@ -2,10 +2,8 @@
|
|
2
2
|
Hen :gem => :rdoc do
|
3
3
|
require 'rake/gempackagetask'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
# Merge defaults with user's spec
|
8
|
-
gem_options = GEM_DEFAULTS.merge(call_task(:gem_spec))
|
5
|
+
gem_options = config[:gem]
|
6
|
+
rubyforge = config[:rubyforge]
|
9
7
|
|
10
8
|
if Object.const_defined?(:RDOC_OPTIONS)
|
11
9
|
gem_options[:rdoc_options] ||= RDOC_OPTIONS[:options]
|
@@ -14,11 +12,11 @@ Hen :gem => :rdoc do
|
|
14
12
|
|
15
13
|
gem_spec = Gem::Specification.new { |spec|
|
16
14
|
|
17
|
-
###
|
15
|
+
### name
|
18
16
|
|
19
|
-
|
20
|
-
|
21
|
-
|
17
|
+
gem_options[:name] ||= rubyforge[:package]
|
18
|
+
|
19
|
+
abort "Gem name missing" unless gem_options[:name]
|
22
20
|
|
23
21
|
### version
|
24
22
|
|
@@ -32,7 +30,9 @@ Hen :gem => :rdoc do
|
|
32
30
|
|
33
31
|
gem_options[:description] ||= gem_options[:summary]
|
34
32
|
|
35
|
-
### homepage
|
33
|
+
### rubyforge project, homepage
|
34
|
+
|
35
|
+
gem_options[:rubyforge_project] ||= rubyforge[:project]
|
36
36
|
|
37
37
|
if rf_project = gem_options[:rubyforge_project]
|
38
38
|
gem_options[:homepage] ||= "#{rf_project}.rubyforge.org/#{gem_options[:name]}"
|
@@ -49,6 +49,12 @@ Hen :gem => :rdoc do
|
|
49
49
|
|
50
50
|
gem_options[:executables].map! { |executable| File.basename(executable) }
|
51
51
|
|
52
|
+
### dependencies
|
53
|
+
|
54
|
+
(gem_options.delete(:dependencies) || []).each { |dependency|
|
55
|
+
spec.add_dependency(*dependency)
|
56
|
+
}
|
57
|
+
|
52
58
|
### => set options!
|
53
59
|
|
54
60
|
gem_options.each { |option, value|
|
@@ -67,8 +73,8 @@ Hen :gem => :rdoc do
|
|
67
73
|
end
|
68
74
|
|
69
75
|
desc "Package and upload the release to Rubyforge"
|
70
|
-
task :release => :package do
|
71
|
-
|
76
|
+
task :release => [:package, :publish_docs] do
|
77
|
+
rf = init_rubyforge
|
72
78
|
|
73
79
|
files = Dir[File.join('pkg', "#{pkg_task.package_name}.*")]
|
74
80
|
abort "Nothing to release!" if files.empty?
|
@@ -76,10 +82,7 @@ Hen :gem => :rdoc do
|
|
76
82
|
# shorten to (at most) three digits
|
77
83
|
version = pkg_task.version.to_s.split(/([.])/)[0..4].join
|
78
84
|
|
79
|
-
rf
|
80
|
-
rf.login
|
81
|
-
|
82
|
-
rf.add_release gem_spec.rubyforge_project, pkg_task.name, version, *files
|
85
|
+
rf.add_release rubyforge[:project], pkg_task.name, version, *files
|
83
86
|
end
|
84
87
|
|
85
88
|
end
|
data/lib/hens/rdoc.rake
CHANGED
@@ -1,28 +1,53 @@
|
|
1
1
|
Hen :rdoc do
|
2
2
|
require 'rake/rdoctask'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
RDOC_OPTIONS = {
|
11
|
-
:rdoc_dir => opts.delete(:rdoc_dir),
|
12
|
-
:rdoc_files => FileList[opts.delete(:rdoc_files)].to_a.uniq,
|
13
|
-
:options => opts.map { |option, value|
|
14
|
-
option = '--' << option.to_s.tr('_', '-')
|
15
|
-
value.is_a?(String) ? [option, value] : value ? option : nil
|
16
|
-
}.compact.flatten
|
17
|
-
}
|
4
|
+
rdoc_options = config[:rdoc]
|
5
|
+
rubyforge = config[:rubyforge]
|
6
|
+
|
7
|
+
if rf_package = rubyforge[:package]
|
8
|
+
rdoc_options[:title] ||= "#{rf_package} Application documentation"
|
18
9
|
end
|
19
10
|
|
20
|
-
|
21
|
-
|
11
|
+
RDOC_OPTIONS = {
|
12
|
+
:rdoc_dir => rdoc_options.delete(:rdoc_dir),
|
13
|
+
:rdoc_files => FileList[rdoc_options.delete(:rdoc_files)].to_a.uniq,
|
14
|
+
:options => rdoc_options.map { |option, value|
|
15
|
+
option = '--' << option.to_s.tr('_', '-')
|
16
|
+
value.is_a?(String) ? [option, value] : value ? option : nil
|
17
|
+
}.compact.flatten
|
18
|
+
}
|
22
19
|
|
23
|
-
|
24
|
-
rdoc.
|
25
|
-
rdoc.
|
20
|
+
rdoc_task = Rake::RDocTask.new(:doc) { |rdoc|
|
21
|
+
rdoc.rdoc_dir = RDOC_OPTIONS[:rdoc_dir]
|
22
|
+
rdoc.rdoc_files = RDOC_OPTIONS[:rdoc_files]
|
23
|
+
rdoc.options = RDOC_OPTIONS[:options]
|
26
24
|
}
|
27
25
|
|
26
|
+
desc "Publish RDoc to Rubyforge"
|
27
|
+
task :publish_docs => :doc do
|
28
|
+
rf_project = rubyforge[:project]
|
29
|
+
abort "Rubyforge project name missing" unless rf_project
|
30
|
+
|
31
|
+
rf_user = rubyforge[:username]
|
32
|
+
abort "Rubyforge user name missing" unless rf_user
|
33
|
+
|
34
|
+
user__host = "#{rf_user}@rubyforge.org"
|
35
|
+
|
36
|
+
local_dir = rdoc_task.rdoc_dir + '/'
|
37
|
+
remote_dir = "/var/www/gforge-projects/#{rf_project}/"
|
38
|
+
|
39
|
+
if rdoc_dir = rubyforge[:rdoc_dir]
|
40
|
+
if rf_package = rubyforge[:package]
|
41
|
+
rdoc_dir = rf_package if rdoc_dir == :package
|
42
|
+
end
|
43
|
+
|
44
|
+
remote_dir += rdoc_dir + '/'
|
45
|
+
end
|
46
|
+
|
47
|
+
execute(
|
48
|
+
"rsync -av --delete #{local_dir} #{user__host}:#{remote_dir}",
|
49
|
+
"scp -r #{local_dir} #{user__host}:#{remote_dir}"
|
50
|
+
)
|
51
|
+
end
|
52
|
+
|
28
53
|
end
|
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.
|
4
|
+
version: 0.0.3.149
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jens Wille
|
@@ -59,14 +59,14 @@ homepage: prometheus.rubyforge.org/hen
|
|
59
59
|
post_install_message:
|
60
60
|
rdoc_options:
|
61
61
|
- --all
|
62
|
+
- --line-numbers
|
63
|
+
- --inline-source
|
64
|
+
- --main
|
65
|
+
- README
|
62
66
|
- --charset
|
63
67
|
- UTF-8
|
64
68
|
- --title
|
65
69
|
- hen Application documentation
|
66
|
-
- --main
|
67
|
-
- README
|
68
|
-
- --line-numbers
|
69
|
-
- --inline-source
|
70
70
|
require_paths:
|
71
71
|
- lib
|
72
72
|
required_ruby_version: !ruby/object:Gem::Requirement
|