setup 5.0.1 → 5.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Assembly +46 -0
- data/Gemfile +2 -0
- data/{HISTORY → HISTORY.rdoc} +21 -0
- data/LICENSE.txt +28 -0
- data/{COPYING → NOTICE.txt} +11 -4
- data/README.rdoc +28 -40
- data/SetupReceipt +405 -0
- data/bin/setup.rb +1302 -3
- data/lib/setup.rb +4 -3
- data/lib/setup/base.rb +1 -1
- data/lib/setup/command.rb +41 -18
- data/lib/setup/configuration.rb +21 -16
- data/lib/setup/constants.rb +4 -1
- data/lib/setup/documentor.rb +47 -41
- data/lib/setup/installer.rb +2 -2
- data/lib/setup/project.rb +85 -35
- data/lib/setup/session.rb +44 -31
- data/lib/setup/version.rb +4 -0
- data/meta/authors +4 -2
- data/meta/copyrights +4 -0
- data/meta/description +1 -1
- data/meta/organization +1 -0
- data/meta/repositories +2 -0
- data/meta/requirements +4 -0
- data/meta/resources +6 -0
- data/meta/version +1 -1
- data/script/{bstrap → bootstrap} +0 -0
- data/script/bundle +23 -6
- data/script/setup +122 -164
- data/test/features/{make.feature → compile.feature} +5 -6
- data/test/features/config.feature +1 -1
- data/test/features/install.feature +5 -5
- data/test/features/step_definitions/compile_steps.rb +26 -0
- data/test/features/step_definitions/config_steps.rb +2 -2
- data/test/features/step_definitions/install_steps.rb +11 -5
- data/test/features/uninstall.feature +1 -1
- data/test/fixtures/faux-project/.setup/metaconfig.rb +6 -0
- metadata +99 -60
- data/MANIFEST +0 -65
- data/Syckfile +0 -77
- data/meta/collection +0 -1
- data/meta/contact +0 -1
- data/meta/homepage +0 -1
- data/meta/released +0 -1
- data/meta/repository +0 -1
- data/meta/ruby +0 -3
- data/test/features/document.feature +0 -2
- data/test/features/step_definitions/setup_steps.rb +0 -30
data/lib/setup.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'yaml'
|
2
|
+
require 'setup/version'
|
3
|
+
require 'setup/session'
|
4
|
+
|
data/lib/setup/base.rb
CHANGED
@@ -44,7 +44,7 @@ module Setup
|
|
44
44
|
# according to the name of the class. For instance to
|
45
45
|
# augment the behavior of the Installer, use:
|
46
46
|
#
|
47
|
-
#
|
47
|
+
# .setup/installer.rb
|
48
48
|
#
|
49
49
|
def initialize_hooks
|
50
50
|
file = META_EXTENSION_DIR + "/#{self.class.name.downcase}.rb"
|
data/lib/setup/command.rb
CHANGED
@@ -32,16 +32,15 @@ module Setup
|
|
32
32
|
order << name
|
33
33
|
end
|
34
34
|
|
35
|
-
task 'all' , "config, setup, test, install"
|
36
|
-
task 'config' , "saves your configuration"
|
37
35
|
task 'show' , "show current configuration"
|
38
|
-
task '
|
36
|
+
task 'all' , "config, compile and install"
|
37
|
+
task 'config' , "save/customize configuration settings"
|
38
|
+
task 'compile' , "compile ruby extentions"
|
39
39
|
task 'test' , "run test suite"
|
40
|
-
task 'doc' , "generate ri documentation"
|
41
40
|
task 'install' , "install project files"
|
42
|
-
task 'uninstall', "uninstall previously installed files"
|
43
41
|
task 'clean' , "does `make clean' for each extention"
|
44
42
|
task 'distclean', "does `make distclean' for each extention"
|
43
|
+
task 'uninstall', "uninstall previously installed files"
|
45
44
|
|
46
45
|
# Run command.
|
47
46
|
|
@@ -54,6 +53,8 @@ module Setup
|
|
54
53
|
task = ARGV.find{ |a| a !~ /^[-]/ }
|
55
54
|
task = 'all' unless task
|
56
55
|
|
56
|
+
#task = 'doc' if task == 'document'
|
57
|
+
|
57
58
|
unless task_names.include?(task)
|
58
59
|
$stderr.puts "Not a valid task -- #{task}"
|
59
60
|
exit 1
|
@@ -66,12 +67,14 @@ module Setup
|
|
66
67
|
|
67
68
|
optparse_header(parser, options)
|
68
69
|
case task
|
69
|
-
when 'all'
|
70
|
-
optparse_all(parser, options)
|
71
70
|
when 'config'
|
72
71
|
optparse_config(parser, options)
|
72
|
+
when 'compile'
|
73
|
+
optparse_compile(parser, options)
|
73
74
|
when 'install'
|
74
75
|
optparse_install(parser, options)
|
76
|
+
when 'all'
|
77
|
+
optparse_all(parser, options)
|
75
78
|
end
|
76
79
|
optparse_common(parser, options)
|
77
80
|
|
@@ -87,6 +90,12 @@ module Setup
|
|
87
90
|
|
88
91
|
print_header
|
89
92
|
|
93
|
+
begin
|
94
|
+
$stderr.puts "(#{RUBY_ENGINE} #{RUBY_VERSION} #{RUBY_PLATFORM})"
|
95
|
+
rescue
|
96
|
+
$stderr.puts "(#{RUBY_VERSION} #{RUBY_PLATFORM})"
|
97
|
+
end
|
98
|
+
|
90
99
|
begin
|
91
100
|
session.__send__(task)
|
92
101
|
rescue Error => err
|
@@ -120,14 +129,12 @@ module Setup
|
|
120
129
|
|
121
130
|
def optparse_all(parser, options)
|
122
131
|
optparse_config(parser, options)
|
123
|
-
|
124
|
-
|
132
|
+
optparse_compile(parser, options)
|
133
|
+
optparse_install(parser, options) # TODO: why was this remarked out ?
|
134
|
+
#parser.on("-t", "--[no-]test", "run tests (default is --no-test)") do |val|
|
125
135
|
# configuration.no_test = val
|
126
136
|
#end
|
127
|
-
#parser.on("--[no-]
|
128
|
-
# configuration.no_doc = val
|
129
|
-
#end
|
130
|
-
#parser.on("--[no-]doc", "do not install documentation") do |val|
|
137
|
+
#parser.on("--[no-]doc", "generate ri/yri documentation (default is --doc)") do |val|
|
131
138
|
# configuration.no_doc = val
|
132
139
|
#end
|
133
140
|
end
|
@@ -137,6 +144,9 @@ module Setup
|
|
137
144
|
def optparse_config(parser, options)
|
138
145
|
parser.separator ""
|
139
146
|
parser.separator "Configuration options:"
|
147
|
+
#parser.on('--reset', 'reset configuration to default settings') do
|
148
|
+
# session.reset = true
|
149
|
+
#end
|
140
150
|
configuration.options.each do |args|
|
141
151
|
args = args.dup
|
142
152
|
desc = args.pop
|
@@ -160,7 +170,8 @@ module Setup
|
|
160
170
|
end
|
161
171
|
end
|
162
172
|
else
|
163
|
-
opts = shortcut ? ["-#{shortcut}", "--#{optname} #{type.to_s.upcase}", desc] :
|
173
|
+
opts = shortcut ? ["-#{shortcut}", "--#{optname} #{type.to_s.upcase}", desc] :
|
174
|
+
["--#{optname} #{type.to_s.upcase}", desc]
|
164
175
|
parser.on(*opts) do |val|
|
165
176
|
configuration.__send__("#{name}=", val)
|
166
177
|
end
|
@@ -168,15 +179,27 @@ module Setup
|
|
168
179
|
end
|
169
180
|
end
|
170
181
|
|
182
|
+
#
|
183
|
+
def optparse_compile(parser, options)
|
184
|
+
end
|
185
|
+
|
171
186
|
# Setup options for +install+ task.
|
172
187
|
|
173
188
|
def optparse_install(parser, options)
|
174
|
-
parser.separator
|
175
|
-
parser.separator
|
176
|
-
|
177
|
-
|
189
|
+
parser.separator ''
|
190
|
+
parser.separator 'Install options:'
|
191
|
+
# install prefix overrides target prefix when installing
|
192
|
+
parser.on('--prefix PATH', 'install to alternate root location') do |val|
|
178
193
|
configuration.install_prefix = val
|
179
194
|
end
|
195
|
+
# type can override config
|
196
|
+
parser.on('--type TYPE', "install location mode (site,std,home)") do |val|
|
197
|
+
configuration.type = val
|
198
|
+
end
|
199
|
+
# test can be override config
|
200
|
+
parser.on('-t', '--[no-]test', "run pre-installation tests") do |bool|
|
201
|
+
configuration.test = bool
|
202
|
+
end
|
180
203
|
end
|
181
204
|
|
182
205
|
# Setup options for +test+ task.
|
data/lib/setup/configuration.rb
CHANGED
@@ -15,11 +15,11 @@ module Setup
|
|
15
15
|
# Ruby System Configuration
|
16
16
|
RBCONFIG = ::Config::CONFIG
|
17
17
|
|
18
|
-
|
19
|
-
CONFIG_FILE = 'SetupConfig' # '.cache/setup/config'
|
18
|
+
## Confgiuration file
|
19
|
+
#CONFIG_FILE = 'SetupConfig' # '.cache/setup/config'
|
20
20
|
|
21
21
|
# Custom configuration file.
|
22
|
-
META_CONFIG_FILE = META_EXTENSION_DIR + '/
|
22
|
+
META_CONFIG_FILE = META_EXTENSION_DIR + '/metaconfig.rb'
|
23
23
|
|
24
24
|
#
|
25
25
|
def self.options
|
@@ -59,7 +59,8 @@ module Setup
|
|
59
59
|
option :shebang , :pick, 'shebang line (#!) editing mode (all,ruby,never)'
|
60
60
|
|
61
61
|
option :no_test, :t , :bool, 'run pre-installation tests'
|
62
|
-
|
62
|
+
# TODO: remove no_ri option in future version
|
63
|
+
#option :no_ri, :d , :bool, 'generate ri documentation (deprecated and ignored)'
|
63
64
|
option :no_doc , :bool, 'install doc/ directory'
|
64
65
|
option :no_ext , :bool, 'compile/install ruby extentions'
|
65
66
|
|
@@ -110,9 +111,10 @@ module Setup
|
|
110
111
|
initialize_metaconfig
|
111
112
|
initialize_defaults
|
112
113
|
initialize_environment
|
113
|
-
initialize_configfile
|
114
|
+
initialize_configfile unless values[:reset]
|
115
|
+
|
114
116
|
values.each{ |k,v| __send__("#{k}=", v) }
|
115
|
-
|
117
|
+
yield(self) if block_given?
|
116
118
|
end
|
117
119
|
|
118
120
|
#
|
@@ -130,7 +132,7 @@ module Setup
|
|
130
132
|
self.type = 'site'
|
131
133
|
self.no_ri = true
|
132
134
|
self.no_test = true
|
133
|
-
self.no_doc =
|
135
|
+
self.no_doc = true
|
134
136
|
self.no_ext = false
|
135
137
|
#@rbdir = siterubyver #'$siterubyver'
|
136
138
|
#@sodir = siterubyverarch #'$siterubyverarch'
|
@@ -147,7 +149,7 @@ module Setup
|
|
147
149
|
|
148
150
|
# Load configuration.
|
149
151
|
def initialize_configfile
|
150
|
-
if
|
152
|
+
if exist?
|
151
153
|
erb = ERB.new(File.read(CONFIG_FILE))
|
152
154
|
txt = erb.result(binding)
|
153
155
|
dat = YAML.load(txt)
|
@@ -181,6 +183,8 @@ module Setup
|
|
181
183
|
# end
|
182
184
|
#end
|
183
185
|
|
186
|
+
attr_accessor :reset
|
187
|
+
|
184
188
|
# # B A S E D I R E C T O R I E S # #
|
185
189
|
|
186
190
|
#
|
@@ -266,13 +270,12 @@ module Setup
|
|
266
270
|
end
|
267
271
|
end
|
268
272
|
|
269
|
-
#
|
273
|
+
# Alias for `#type`.
|
270
274
|
alias_method :installdirs, :type
|
271
275
|
|
272
|
-
#
|
276
|
+
# Alias for `#type=`.
|
273
277
|
alias_method :installdirs=, :type=
|
274
278
|
|
275
|
-
|
276
279
|
#
|
277
280
|
alias_method :install_prefix, :root
|
278
281
|
|
@@ -529,16 +532,18 @@ module Setup
|
|
529
532
|
@no_doc = boolean(val)
|
530
533
|
end
|
531
534
|
|
532
|
-
|
535
|
+
|
536
|
+
# @deprecated Will be remove in future version. Currently ignored.
|
533
537
|
def no_ri
|
534
538
|
@no_ri
|
535
539
|
end
|
536
540
|
|
537
|
-
#
|
541
|
+
# @deprecated Will be remove in future version. Currently ignored.
|
538
542
|
def no_ri=(val)
|
539
543
|
@no_ri = boolean(val)
|
540
544
|
end
|
541
545
|
|
546
|
+
|
542
547
|
#def rdoc = 'no'
|
543
548
|
#def rdoctemplate = nil
|
544
549
|
#def testrunner = 'auto' # needed?
|
@@ -554,9 +559,9 @@ module Setup
|
|
554
559
|
end
|
555
560
|
|
556
561
|
# Generate ri documentation?
|
557
|
-
def ri?
|
558
|
-
|
559
|
-
end
|
562
|
+
#def ri?
|
563
|
+
# !no_ri
|
564
|
+
#end
|
560
565
|
|
561
566
|
# Install doc directory?
|
562
567
|
def doc?
|
data/lib/setup/constants.rb
CHANGED
data/lib/setup/documentor.rb
CHANGED
@@ -2,57 +2,68 @@ require 'setup/base'
|
|
2
2
|
|
3
3
|
module Setup
|
4
4
|
|
5
|
+
# As of v0.5.1 Setup.rb no longer support the document phase at all. The
|
6
|
+
# document phase would generate *ri* documentation for a project, adding in
|
7
|
+
# with the rest of ri documentation. After careful consideration, it has
|
8
|
+
# become clear that it is better for documentation to be left up to dedicated
|
9
|
+
# tools. For example, you could easily document your Ruby install site
|
10
|
+
# location yourself with
|
11
|
+
#
|
12
|
+
# $ rdoc --ri-site /usr/local/lib/site_ruby
|
13
|
+
#
|
14
|
+
# Using of course, whichever path is appropriate to your system.
|
15
|
+
#
|
16
|
+
# This descision also allows setup.rb to be less Ruby-specific, and useful
|
17
|
+
# as a more general install tool.
|
18
|
+
#
|
19
|
+
# @deprecated Setup.rb no longer generate ri documentation, ever.
|
5
20
|
#
|
6
21
|
class Documentor < Base
|
7
22
|
|
8
23
|
#
|
9
24
|
def document
|
10
25
|
return if config.no_doc
|
11
|
-
exec_ri
|
12
26
|
|
13
|
-
|
14
|
-
|
15
|
-
#else
|
16
|
-
# exec_rdoc
|
17
|
-
#end
|
27
|
+
exec_ri
|
28
|
+
exec_yri
|
18
29
|
end
|
19
30
|
|
20
31
|
# Generate ri documentation.
|
21
|
-
|
22
|
-
#
|
23
|
-
|
32
|
+
#
|
33
|
+
# @todo Should we run rdoc programmatically instead of shelling out?
|
34
|
+
#
|
24
35
|
def exec_ri
|
25
36
|
case config.type #installdirs
|
26
|
-
when 'std', 'ruby'
|
27
|
-
#output = "--ri-system" # no longer supported?
|
28
|
-
output = "--ri-site"
|
29
|
-
when 'site'
|
30
|
-
output = "--ri-site"
|
31
37
|
when 'home'
|
32
38
|
output = "--ri"
|
39
|
+
when 'site'
|
40
|
+
output = "--ri-site"
|
41
|
+
when 'std', 'ruby'
|
42
|
+
output = "--ri-site"
|
33
43
|
else
|
34
44
|
abort "bad config: should not be possible -- type=#{config.type}"
|
35
45
|
end
|
36
46
|
|
37
|
-
if File.exist?('.document')
|
38
|
-
files = File.read('.document').split("\n")
|
39
|
-
files.reject!{ |l| l =~ /^\s*[#]/ || l !~ /\S/ }
|
40
|
-
files.collect!{ |f| f.strip }
|
41
|
-
#elsif File.exist?('meta/loadpath')
|
42
|
-
else
|
43
|
-
files = []
|
44
|
-
files << 'lib' if File.directory?('lib')
|
45
|
-
files << 'ext' if File.directory?('ext')
|
46
|
-
end
|
47
|
-
|
48
47
|
opt = []
|
49
48
|
opt << "-U"
|
50
49
|
opt << "-q" #if quiet?
|
51
50
|
#opt << "-D" #if $DEBUG
|
52
51
|
opt << output
|
53
|
-
opt << files
|
54
52
|
|
55
|
-
|
53
|
+
unless project.document
|
54
|
+
files = []
|
55
|
+
files << 'lib' if project.find('lib')
|
56
|
+
files << 'ext' if project.find('ext')
|
57
|
+
else
|
58
|
+
files = []
|
59
|
+
#files = File.read('.document').split("\n")
|
60
|
+
#files.reject!{ |l| l =~ /^\s*[#]/ || l !~ /\S/ }
|
61
|
+
#files.collect!{ |f| f.strip }
|
62
|
+
end
|
63
|
+
|
64
|
+
opt.concat(files)
|
65
|
+
|
66
|
+
opt.flatten!
|
56
67
|
|
57
68
|
cmd = "rdoc " + opt.join(' ')
|
58
69
|
|
@@ -70,24 +81,20 @@ module Setup
|
|
70
81
|
$stderr.puts "command was: '#{cmd}'"
|
71
82
|
#$stderr.puts "proceeding with install..."
|
72
83
|
end
|
73
|
-
|
74
|
-
# Now in local directory
|
75
|
-
#opt = []
|
76
|
-
#opt << "-U"
|
77
|
-
#opt << "--ri --op 'doc/ri'"
|
78
|
-
#opt << files
|
79
|
-
#opt = opt.flatten
|
80
|
-
#::RDoc::RDoc.new.document(opt)
|
81
84
|
end
|
82
85
|
end
|
83
86
|
|
84
|
-
# Generate rdocs.
|
85
87
|
#
|
86
|
-
#
|
88
|
+
# Generate YARD Ruby Index documention.
|
87
89
|
#
|
88
|
-
|
89
|
-
|
90
|
-
|
90
|
+
def exec_yri
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
# Generate rdocs. Needs project <tt>name</tt>.
|
95
|
+
#
|
96
|
+
# @deprecated This is not being used. It's here in case we decide
|
97
|
+
# to add the feature back in the future.
|
91
98
|
#
|
92
99
|
def exec_rdoc
|
93
100
|
main = Dir.glob("README{,.*}", File::FNM_CASEFOLD).first
|
@@ -146,4 +153,3 @@ module Setup
|
|
146
153
|
end
|
147
154
|
|
148
155
|
end
|
149
|
-
|
data/lib/setup/installer.rb
CHANGED
@@ -96,7 +96,7 @@ module Setup
|
|
96
96
|
return unless config.doc?
|
97
97
|
return unless directory?('doc')
|
98
98
|
return unless project.name
|
99
|
-
dir = File.join(config.docdir, "ruby
|
99
|
+
dir = File.join(config.docdir, "ruby-#{project.name}")
|
100
100
|
report_transfer('doc', dir)
|
101
101
|
#io.puts "* doc -> #{dir}" unless quiet?
|
102
102
|
files = files('doc')
|
@@ -136,7 +136,7 @@ module Setup
|
|
136
136
|
File.extname(file) == ".#{dllext}"
|
137
137
|
end
|
138
138
|
if ents.empty? && !files.empty?
|
139
|
-
raise Error, "ruby extention not compiled: 'setup.rb
|
139
|
+
raise Error, "ruby extention not compiled: 'setup.rb compile' first"
|
140
140
|
end
|
141
141
|
ents
|
142
142
|
end
|
data/lib/setup/project.rb
CHANGED
@@ -1,53 +1,83 @@
|
|
1
1
|
module Setup
|
2
2
|
|
3
|
-
# The Project class encapsulates information
|
4
|
-
#
|
5
|
-
|
3
|
+
# The Project class encapsulates information about the project/package
|
4
|
+
# setup is handling.
|
5
|
+
#
|
6
|
+
# To inform Setup.rb of the project's name, version and
|
7
|
+
# load path --information it can use to provide additional
|
8
|
+
# features, create a file in you project's root directory
|
9
|
+
# called `.ruby`. This is a YAML file with at minimum the
|
10
|
+
# entries:
|
11
|
+
#
|
12
|
+
# ---
|
13
|
+
# name: foo
|
14
|
+
# version: 1.0.0
|
15
|
+
# load_path: [lib]
|
16
|
+
#
|
17
|
+
# As of v5.1.0, Setup.rb no longer recognizes the VERSION file
|
18
|
+
# or the `.setup/name`, `.setup/version` and `.setup/loadpath` files.
|
19
|
+
# The `.ruby` file better serves this purpose and is a more widely
|
20
|
+
# recognized standard.
|
21
|
+
#
|
6
22
|
class Project
|
7
23
|
|
8
24
|
# Match used to determine the root dir of a project.
|
9
|
-
ROOT_MARKER = '{setup.rb
|
25
|
+
ROOT_MARKER = '{.ruby,setup.rb,.setup,lib/}'
|
10
26
|
|
11
|
-
#
|
12
|
-
def
|
13
|
-
@
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
27
|
+
#
|
28
|
+
def initialize
|
29
|
+
@dotruby_file = find('.ruby')
|
30
|
+
|
31
|
+
@dotruby = YAML.load_file(@dotruby_file) if @dotruby_file
|
32
|
+
|
33
|
+
@name = nil
|
34
|
+
@version = nil
|
35
|
+
@loadpath = ['lib']
|
36
|
+
|
37
|
+
if @dotruby
|
38
|
+
@name = @dotruby['name']
|
39
|
+
@version = @dotruby['version']
|
40
|
+
@loadpath = @dotruby['load_path']
|
41
|
+
else
|
42
|
+
if file = find('.setup/name')
|
43
|
+
@name = File.read(file).strip
|
19
44
|
end
|
20
|
-
|
45
|
+
if file = find('.setup/version')
|
46
|
+
@version = File.read(file).strip
|
47
|
+
end
|
48
|
+
if file = find('.setup/loadpath')
|
49
|
+
@loadpath = File.read(file).strip
|
50
|
+
end
|
51
|
+
end
|
21
52
|
end
|
22
53
|
|
54
|
+
attr :dotruby
|
55
|
+
|
23
56
|
# The name of the package, used to install docs in system doc/ruby-{name}/ location.
|
24
|
-
|
25
|
-
def name
|
26
|
-
@name = (
|
27
|
-
if file = Dir["{script/setup,meta,.meta}/name"].first
|
28
|
-
File.read(file).strip
|
29
|
-
else
|
30
|
-
nil
|
31
|
-
end
|
32
|
-
)
|
33
|
-
end
|
57
|
+
attr :name
|
34
58
|
|
35
|
-
#
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
59
|
+
# Current version number of project.
|
60
|
+
attr :version
|
61
|
+
|
62
|
+
#
|
63
|
+
attr :loadpath
|
64
|
+
|
65
|
+
alias load_path loadpath
|
66
|
+
|
67
|
+
# Locate project root.
|
68
|
+
def rootdir
|
69
|
+
@rootdir ||= (
|
70
|
+
root = Dir.glob(File.join(Dir.pwd, ROOT_MARKER), File::FNM_CASEFOLD).first
|
71
|
+
if !root
|
72
|
+
raise Error, "not a project directory"
|
44
73
|
else
|
45
|
-
|
74
|
+
Dir.pwd
|
46
75
|
end
|
47
76
|
)
|
48
77
|
end
|
49
78
|
|
50
|
-
#
|
79
|
+
# Setup.rb uses `ext/**/extconf.rb` as convention for the location of
|
80
|
+
# compiled scripts.
|
51
81
|
def extconfs
|
52
82
|
@extconfs ||= Dir['ext/**/extconf.rb']
|
53
83
|
end
|
@@ -62,7 +92,27 @@ module Setup
|
|
62
92
|
!extensions.empty?
|
63
93
|
end
|
64
94
|
|
95
|
+
#
|
96
|
+
def yardopts
|
97
|
+
Dir.glob(File.join(rootdir, '.yardopts')).first
|
98
|
+
end
|
99
|
+
|
100
|
+
#
|
101
|
+
def document
|
102
|
+
Dir.glob(File.join(rootdir, '.document')).first
|
103
|
+
end
|
104
|
+
|
105
|
+
# Find a file relative to project's root directory.
|
106
|
+
def find(glob, flags=0)
|
107
|
+
case flags
|
108
|
+
when :casefold
|
109
|
+
flags = File::FNM_CASEFOLD
|
110
|
+
else
|
111
|
+
flags = flags.to_i
|
112
|
+
end
|
113
|
+
Dir.glob(File.join(rootdir, glob), flags).first
|
114
|
+
end
|
115
|
+
|
65
116
|
end
|
66
117
|
|
67
118
|
end
|
68
|
-
|