reap 6.0.2 → 9.2.0
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/CHANGES +6 -0
- data/COPYING +666 -395
- data/MANIFEST +139 -0
- data/NOTES +12 -0
- data/README +19 -163
- data/bin/reap-announce +7 -0
- data/bin/reap-check-load +8 -0
- data/bin/reap-check-syntax +7 -0
- data/bin/reap-clean +7 -0
- data/bin/reap-clobber +7 -0
- data/bin/reap-doc +7 -0
- data/bin/reap-doc-rdoc +7 -0
- data/bin/reap-doc-ri +7 -0
- data/bin/reap-init +69 -0
- data/bin/reap-inspect +7 -0
- data/bin/reap-install +8 -0
- data/bin/reap-install-gem +8 -0
- data/bin/reap-log +7 -0
- data/bin/reap-log-changes +8 -0
- data/bin/reap-log-notes +8 -0
- data/bin/reap-make +7 -0
- data/bin/reap-make-clean +7 -0
- data/bin/reap-make-distclean +7 -0
- data/bin/reap-make-extconf +7 -0
- data/bin/reap-make-static +8 -0
- data/bin/reap-package +8 -0
- data/bin/reap-package-gem +7 -0
- data/bin/reap-package-tgz +7 -0
- data/bin/reap-package-zip +7 -0
- data/bin/reap-prepare +7 -0
- data/bin/reap-publish +7 -0
- data/bin/reap-release +7 -0
- data/bin/reap-scaffold +8 -0
- data/bin/reap-scm-branch +7 -0
- data/bin/reap-scm-tag +7 -0
- data/bin/reap-spec +7 -0
- data/bin/reap-spec-doc +8 -0
- data/bin/reap-stamp +7 -0
- data/bin/reap-stats +7 -0
- data/bin/reap-test +7 -0
- data/bin/reap-test-cross +7 -0
- data/bin/reap-test-load +9 -0
- data/bin/reap-test-solo +7 -0
- data/bin/reap-uninstall +7 -0
- data/bin/reap-uninstall-gem +7 -0
- data/data/reap/base/CHANGES +19 -0
- data/data/reap/base/COPYING +674 -0
- data/data/reap/base/NOTES +12 -0
- data/data/reap/base/README +8 -0
- data/data/reap/build/rake/Rakefile +130 -0
- data/{forge/reference/installers → data/reap/build/rake}/setup.rb +155 -97
- data/data/reap/build/rake-lite/install.rb +79 -0
- data/data/reap/build/tasks/task/rdoc +211 -0
- data/data/reap/{setup.rb → build/tasks/task/setup} +248 -200
- data/data/reap/build/tasks/task/test +38 -0
- data/data/reap/init/meta/project.yaml +21 -0
- data/demo/README +15 -0
- data/demo/lib/foo/foo.rb +7 -0
- data/demo/meta/VERSION +1 -0
- data/demo/meta/project.yaml +21 -0
- data/lib/reap/application.rb +80 -0
- data/lib/reap/default.yaml +77 -0
- data/lib/reap/extensions/array.rb +50 -0
- data/lib/reap/extensions/hash.rb +63 -0
- data/lib/reap/extensions/string.rb +31 -0
- data/lib/reap/extensions.rb +6 -0
- data/lib/reap/iobject.rb +264 -0
- data/lib/reap/manager/announce.rb +193 -0
- data/lib/reap/manager/check.rb +109 -0
- data/lib/reap/manager/clean.rb +58 -0
- data/lib/reap/manager/gem.rb +200 -0
- data/lib/reap/manager/html.rb +69 -0
- data/lib/reap/manager/log.rb +214 -0
- data/lib/reap/manager/make.rb +109 -0
- data/lib/reap/manager/pack.rb +232 -0
- data/lib/reap/manager/publish.rb +72 -0
- data/lib/reap/manager/rdoc.rb +194 -0
- data/lib/reap/manager/release.rb +78 -0
- data/lib/reap/manager/rubyforge.rb +44 -0
- data/lib/reap/manager/scaffold.rb +138 -0
- data/lib/reap/manager/scm.rb +66 -0
- data/lib/reap/manager/site.rb +27 -0
- data/lib/reap/manager/spec.rb +94 -0
- data/lib/reap/manager/stats.rb +145 -0
- data/lib/reap/manager/svn.rb +76 -0
- data/lib/reap/manager/test.rb +389 -0
- data/lib/reap/manager.rb +74 -0
- data/lib/reap/metadata.rb +603 -0
- data/lib/reap/project.rb +165 -0
- data/lib/reap/settings.rb +67 -0
- data/lib/reap/systems/rubyforge.rb +737 -0
- data/lib/reap/systems/subversion.rb +333 -0
- data/lib/reap/utilities/fileutils.rb +304 -0
- data/lib/reap/utilities/netutils.rb +221 -0
- data/lib/reap/utilities/setuputils.rb +124 -0
- data/lib/reap/utilities/shellutils.rb +175 -0
- data/log/Changelog.txt +107 -0
- data/log/FIXME.txt +25 -0
- data/log/TODO.txt +72 -0
- data/meta/VERSION +1 -0
- data/meta/description +4 -0
- data/meta/project.yaml +20 -0
- data/task/man +14 -0
- data/task/rdoc +20 -0
- data/{data/reap/scaffold/standard/setup.rb → task/setup} +248 -200
- metadata +225 -153
- data/ProjectInfo +0 -105
- data/bin/reap +0 -5
- data/bin/rubytest +0 -5
- data/data/reap/install.rb +0 -62
- data/data/reap/scaffold/standard/COPYING +0 -403
- data/data/reap/scaffold/standard/ChangeLog +0 -0
- data/data/reap/scaffold/standard/INSTALL +0 -14
- data/data/reap/scaffold/standard/ProjectInfo +0 -77
- data/data/reap/scaffold/standard/README +0 -3
- data/data/reap/scaffold/standard/Rakefile +0 -10
- data/data/reap/scaffold/standard/TODO +0 -0
- data/data/reap/scaffold/subversion/trunk/COPYING +0 -403
- data/data/reap/scaffold/subversion/trunk/ChangeLog +0 -0
- data/data/reap/scaffold/subversion/trunk/INSTALL +0 -14
- data/data/reap/scaffold/subversion/trunk/ProjectInfo +0 -76
- data/data/reap/scaffold/subversion/trunk/README +0 -3
- data/data/reap/scaffold/subversion/trunk/Rakefile +0 -10
- data/data/reap/scaffold/subversion/trunk/TODO +0 -0
- data/data/reap/scaffold/subversion/trunk/setup.rb +0 -1568
- data/forge/ProjectInfo +0 -38
- data/forge/ProjectInfo.rb +0 -76
- data/forge/TODO +0 -10
- data/forge/installer.rb +0 -250
- data/forge/reference/Rakefile +0 -124
- data/forge/reference/Rakefile.htm +0 -69
- data/forge/reference/aRakefile +0 -60
- data/forge/reference/compositepublisher.rb +0 -24
- data/forge/reference/ftptools.rb +0 -139
- data/forge/reference/installers/package.rb +0 -629
- data/forge/reference/license-each.rb +0 -85
- data/forge/reference/publisher.rb +0 -75
- data/forge/reference/rubyforge.rb +0 -247
- data/forge/reference/rubyforgepublisher.rb +0 -18
- data/forge/reference/sshpublisher.rb +0 -47
- data/forge/reference/suby-cvs.rb +0 -46
- data/forge/scaffold.rb +0 -126
- data/forge/unit_runner/README +0 -6
- data/forge/unit_runner/commentrunner.rb +0 -62
- data/forge/unit_runner/cunit.rb +0 -17
- data/forge/unit_runner/forkedrunner.rb +0 -91
- data/forge/unit_runner/sample.rb +0 -16
- data/lib/reap/bin/reap.rb +0 -230
- data/lib/reap/bin/rubytest.rb +0 -53
- data/lib/reap/class/announce.rb +0 -220
- data/lib/reap/class/doap.rb +0 -80
- data/lib/reap/class/extest.rb +0 -146
- data/lib/reap/class/filer.rb +0 -62
- data/lib/reap/class/manifest.rb +0 -68
- data/lib/reap/class/package.rb +0 -576
- data/lib/reap/class/publish.rb +0 -152
- data/lib/reap/class/rdoc.rb +0 -123
- data/lib/reap/class/test.rb +0 -264
- data/lib/reap/projectinfo.rb +0 -208
- data/lib/reap/rake.rb +0 -42
- data/lib/reap/reap.rb +0 -89
- data/lib/reap/tasks.rb +0 -756
- data/lib/reap/taskutils.rb +0 -122
- data/note/LATEST +0 -44
- data/note/doap.xml +0 -28
- data/note/history/Rakefile-0.1 +0 -308
- data/sample/ProjectInfo +0 -96
- data/sample/Rakefile +0 -9
- data/sample/Reapfile +0 -11
- data/sample/task/demo.rb +0 -15
- data/setup.rb +0 -1568
- data/web/ProjectInfo.html +0 -75
- data/web/images/grape.jpg +0 -0
- data/web/index.html +0 -312
data/lib/reap/project.rb
ADDED
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
module Reap
|
|
2
|
+
require 'reap/manager'
|
|
3
|
+
|
|
4
|
+
# = Project
|
|
5
|
+
#
|
|
6
|
+
# The Project class is the main class of Reap. It provides the tools for
|
|
7
|
+
# working with a project. The CLI Application class delegates to this class,
|
|
8
|
+
# for instance.
|
|
9
|
+
|
|
10
|
+
class Project < Manager
|
|
11
|
+
require 'reap/metadata'
|
|
12
|
+
require 'reap/settings'
|
|
13
|
+
|
|
14
|
+
# New Project.
|
|
15
|
+
|
|
16
|
+
def initialize(options=nil)
|
|
17
|
+
@options = options || {}
|
|
18
|
+
begin
|
|
19
|
+
@location = locate
|
|
20
|
+
raise LoadError, "no .reap configuration file" unless @location
|
|
21
|
+
|
|
22
|
+
@metadata = Metadata.read(location)
|
|
23
|
+
@settings = Settings.read(location, @metadata)
|
|
24
|
+
rescue LoadError => e
|
|
25
|
+
abort e.message.capitalize + '.'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Location of project.
|
|
30
|
+
|
|
31
|
+
def location ; @location ; end
|
|
32
|
+
|
|
33
|
+
# Project metadata.
|
|
34
|
+
|
|
35
|
+
def metadata ; @metadata ; end
|
|
36
|
+
|
|
37
|
+
# Configuration data.
|
|
38
|
+
|
|
39
|
+
def settings ; @settings ; end
|
|
40
|
+
|
|
41
|
+
alias_method :configuration, :settings
|
|
42
|
+
|
|
43
|
+
#alias_method :config, :configuration
|
|
44
|
+
|
|
45
|
+
# Common options.
|
|
46
|
+
|
|
47
|
+
def options ; @options ; end
|
|
48
|
+
|
|
49
|
+
def dryrun? ; options['dryrun'] ; end
|
|
50
|
+
def trace? ; options['trace'] ; end
|
|
51
|
+
def force? ; options['force'] ; end
|
|
52
|
+
def verbose? ; options['verbose'] ; end
|
|
53
|
+
def debug? ; options['debug'] ; end
|
|
54
|
+
|
|
55
|
+
def dryrun=(x) ; options['dryrun'] = x ; end
|
|
56
|
+
def trace=(x) ; options['trace'] = x ; end
|
|
57
|
+
def force=(x) ; options['force'] = x ; end
|
|
58
|
+
def verbose=(x) ; options['verbose'] = x ; end
|
|
59
|
+
def debug=(x) ; options['debug'] = x ; end
|
|
60
|
+
|
|
61
|
+
alias_method :noharm?, :dryrun?
|
|
62
|
+
alias_method :noharm=, :dryrun=
|
|
63
|
+
|
|
64
|
+
# Invoke a tool.
|
|
65
|
+
|
|
66
|
+
def invoke(command, *args)
|
|
67
|
+
#display_location
|
|
68
|
+
meth = method(command)
|
|
69
|
+
chdir_to_project do
|
|
70
|
+
case meth.arity
|
|
71
|
+
when 0
|
|
72
|
+
meth.call
|
|
73
|
+
else
|
|
74
|
+
meth.call(*args)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Display the project's root location.
|
|
80
|
+
|
|
81
|
+
def display_location
|
|
82
|
+
puts "[#{location}]"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Change directory to project's root location,
|
|
86
|
+
# and execute block if given. If a block is
|
|
87
|
+
# provided, the current directory will revert
|
|
88
|
+
# back to what it was prior to this call, otherwise
|
|
89
|
+
# it will remain changed.
|
|
90
|
+
|
|
91
|
+
def chdir_to_project(&block)
|
|
92
|
+
if block
|
|
93
|
+
Dir.chdir(location, &block)
|
|
94
|
+
else
|
|
95
|
+
Dir.chdir(location)
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# Return a list of all ruby script in the project loadpaths.
|
|
100
|
+
#def scripts
|
|
101
|
+
# @scripts ||= multiglob(*metadata.libpath.collect{ |l| File.join(l, '**', '*.rb') })
|
|
102
|
+
#end
|
|
103
|
+
|
|
104
|
+
# Query infromation about reap settings and/or the current
|
|
105
|
+
# project.
|
|
106
|
+
#
|
|
107
|
+
# NOTE: This would dhave been naed #inspect but for the
|
|
108
|
+
# built-in method.
|
|
109
|
+
|
|
110
|
+
def introspect(options)
|
|
111
|
+
args = options['arguments']
|
|
112
|
+
if args
|
|
113
|
+
args.each do |field|
|
|
114
|
+
puts metadata.send(field)
|
|
115
|
+
end
|
|
116
|
+
else
|
|
117
|
+
y self
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
private
|
|
122
|
+
|
|
123
|
+
# Locate the project root directory. This is determined
|
|
124
|
+
# by ascending up the directory tree from the current position
|
|
125
|
+
# until a .reap file is found. Returns +nil+ if not found.
|
|
126
|
+
|
|
127
|
+
def locate
|
|
128
|
+
loc = nil
|
|
129
|
+
dir = Dir.pwd
|
|
130
|
+
while dir != '/'
|
|
131
|
+
glob = File.join(dir, Settings::REAP_FILE) #Project::PROJECT_FILE)
|
|
132
|
+
file = Dir.glob(glob, File::FNM_CASEFOLD).first
|
|
133
|
+
if file
|
|
134
|
+
loc = File.dirname(file)
|
|
135
|
+
break
|
|
136
|
+
else
|
|
137
|
+
dir = File.dirname(dir)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
return loc
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
#
|
|
144
|
+
|
|
145
|
+
def configure_options(options, *entries)
|
|
146
|
+
options = (options || {}).rekey(&:to_s)
|
|
147
|
+
entries.inject(options) do |memo, entry|
|
|
148
|
+
(settings[entry] || {}).merge(memo)
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
# Helper method for cleaning list options.
|
|
153
|
+
# This will split the option on ':' or ';'
|
|
154
|
+
# if it is a string, rather than an array.
|
|
155
|
+
# And it will make sure there are no nil elements.
|
|
156
|
+
|
|
157
|
+
def list_option(option)
|
|
158
|
+
option = option.to_s.split(/[:;,]/) unless Array===option
|
|
159
|
+
[option].compact.flatten
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
end
|
|
165
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
module Reap
|
|
2
|
+
|
|
3
|
+
class Project
|
|
4
|
+
|
|
5
|
+
# Configuration is an open hash.
|
|
6
|
+
#
|
|
7
|
+
# TODO: Settings needs improvement -- it's rather sloppy at this point.
|
|
8
|
+
|
|
9
|
+
class Settings < Hash
|
|
10
|
+
|
|
11
|
+
DEFAULT_FILE = File.join(File.dirname(__FILE__), 'default.yaml')
|
|
12
|
+
REAP_FILE = '{.reap,_reap,reapfile}{.yaml,.yml,}'
|
|
13
|
+
|
|
14
|
+
def self.read(location, metadata)
|
|
15
|
+
if File.file?(location)
|
|
16
|
+
file = location
|
|
17
|
+
else
|
|
18
|
+
file = Dir.glob(File.join(location, REAP_FILE), File::FNM_CASEFOLD).first
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
if file
|
|
22
|
+
data = YAML::load(File.open(file)) || {}
|
|
23
|
+
else
|
|
24
|
+
data = {}
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
new(data, metadata)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
attr :metadata
|
|
32
|
+
|
|
33
|
+
# FIXME: when using the settings, I think nil should be considered a none entry and
|
|
34
|
+
# so false would be required to actually mean "off". This means assigning each key value par one a time?
|
|
35
|
+
|
|
36
|
+
def initialize(data, metadata)
|
|
37
|
+
super()
|
|
38
|
+
@metadata = metadata
|
|
39
|
+
defaults = File.read(DEFAULT_FILE)
|
|
40
|
+
defaults = instance_eval("<<-XXXXXXXXXXXXX\n#{defaults}\nXXXXXXXXXXXXX")
|
|
41
|
+
defaults = YAML::load(defaults)
|
|
42
|
+
settings = defaults.dup
|
|
43
|
+
data.each do |key, value|
|
|
44
|
+
settings[key] ||= {}
|
|
45
|
+
settings[key].update(value) if value
|
|
46
|
+
end
|
|
47
|
+
update(settings)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# open hash
|
|
51
|
+
|
|
52
|
+
def method_missing(s, *a)
|
|
53
|
+
if s =~ /=$/
|
|
54
|
+
self[s] = a[0]
|
|
55
|
+
elsif a.empty?
|
|
56
|
+
self[s]
|
|
57
|
+
else
|
|
58
|
+
super
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
|
67
|
+
|