bones 2.5.1 → 3.0.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/History.txt +2 -0
- data/README.rdoc +54 -306
- data/Rakefile +28 -37
- data/bin/bones +10 -3
- data/{spec/data/data → default}/.bnsignore +3 -1
- data/{data → default}/History.txt.bns +0 -0
- data/{data → default}/README.txt.bns +0 -0
- data/default/Rakefile.bns +21 -0
- data/{data → default}/bin/NAME.bns +0 -0
- data/{data → default}/lib/NAME.rb.bns +0 -0
- data/{data → default}/spec/NAME_spec.rb.bns +0 -0
- data/{data → default}/spec/spec_helper.rb.bns +0 -0
- data/{data → default}/test/test_NAME.rb +0 -0
- data/lib/bones.rb +73 -31
- data/lib/bones/annotation_extractor.rb +16 -26
- data/lib/bones/app.rb +87 -58
- data/lib/bones/app/command.rb +143 -64
- data/lib/bones/app/create.rb +93 -0
- data/lib/bones/app/file_manager.rb +7 -8
- data/lib/bones/app/freeze.rb +59 -0
- data/lib/bones/app/info.rb +39 -0
- data/lib/bones/app/unfreeze.rb +44 -0
- data/lib/bones/colors.rb +54 -0
- data/lib/bones/gem_package_task.rb +71 -0
- data/lib/bones/helpers.rb +93 -0
- data/lib/bones/plugins/ann.rb +166 -0
- data/lib/bones/plugins/bones_plugin.rb +193 -0
- data/lib/bones/plugins/gem.rb +274 -0
- data/lib/bones/plugins/notes.rb +45 -0
- data/lib/bones/plugins/rdoc.rb +93 -0
- data/lib/bones/plugins/test.rb +57 -0
- data/lib/bones/smtp_tls.rb +1 -0
- data/spec/bones/app/file_manager_spec.rb +6 -6
- data/spec/bones/app_spec.rb +14 -18
- data/spec/bones_spec.rb +9 -4
- data/{data → spec/data/default}/.bnsignore +0 -0
- data/spec/data/{data → default}/History +0 -0
- data/spec/data/{data → default}/NAME/NAME.rb.bns +0 -0
- data/spec/data/{data → default}/README.txt.bns +0 -0
- data/{data → spec/data/default}/Rakefile.bns +0 -0
- data/spec/data/{data → default}/lib/NAME.rb.bns +0 -0
- metadata +94 -68
- data/lib/bones/app/create_command.rb +0 -86
- data/lib/bones/app/freeze_command.rb +0 -73
- data/lib/bones/app/info_command.rb +0 -58
- data/lib/bones/app/unfreeze_command.rb +0 -53
- data/lib/bones/app/update_command.rb +0 -47
- data/lib/bones/debug.rb +0 -72
- data/lib/bones/tasks/ann.rake +0 -80
- data/lib/bones/tasks/bones.rake +0 -20
- data/lib/bones/tasks/gem.rake +0 -201
- data/lib/bones/tasks/git.rake +0 -40
- data/lib/bones/tasks/notes.rake +0 -27
- data/lib/bones/tasks/post_load.rake +0 -34
- data/lib/bones/tasks/rdoc.rake +0 -51
- data/lib/bones/tasks/rubyforge.rake +0 -55
- data/lib/bones/tasks/setup.rb +0 -292
- data/lib/bones/tasks/spec.rake +0 -54
- data/lib/bones/tasks/svn.rake +0 -47
- data/lib/bones/tasks/test.rake +0 -40
- data/lib/bones/tasks/zentest.rake +0 -36
- data/spec/data/data/Rakefile.bns +0 -30
- data/tasks/ann.rake +0 -80
- data/tasks/bones.rake +0 -20
- data/tasks/gem.rake +0 -201
- data/tasks/git.rake +0 -40
- data/tasks/notes.rake +0 -27
- data/tasks/post_load.rake +0 -34
- data/tasks/rdoc.rake +0 -51
- data/tasks/rubyforge.rake +0 -55
- data/tasks/setup.rb +0 -292
- data/tasks/spec.rake +0 -54
- data/tasks/svn.rake +0 -47
- data/tasks/test.rake +0 -40
- data/tasks/zentest.rake +0 -36
@@ -0,0 +1,193 @@
|
|
1
|
+
|
2
|
+
module Bones::Plugins::BonesPlugin
|
3
|
+
include ::Bones::Helpers
|
4
|
+
extend self
|
5
|
+
|
6
|
+
module Syntax
|
7
|
+
def enable_sudo
|
8
|
+
use_sudo true
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize_bones_plugin
|
13
|
+
::Bones.config {
|
14
|
+
# ==== Project Defaults
|
15
|
+
name nil, :desc => <<-__
|
16
|
+
The project name that will be used for packaging and distributing
|
17
|
+
your Ruby code as a gem.
|
18
|
+
__
|
19
|
+
|
20
|
+
summary nil, :desc => <<-__
|
21
|
+
A short summary of your project. This summary is required in the
|
22
|
+
gemspec, and it is used by the rubygem framework when searching
|
23
|
+
for gems. If a summary is not given, then the first sentence from
|
24
|
+
the project's README description is used as the summary.
|
25
|
+
__
|
26
|
+
|
27
|
+
description nil, :desc => <<-__
|
28
|
+
A longer description of your project. The description is used in
|
29
|
+
the gemspec, but it is not required to build a gem. If a
|
30
|
+
description is not given then the first paragraph from the
|
31
|
+
project's README description is used as the description.
|
32
|
+
__
|
33
|
+
|
34
|
+
changes nil, :desc => <<-__
|
35
|
+
The list of notable changes in your project since the last release.
|
36
|
+
The changes are automatically filled in by reading the list of
|
37
|
+
changes from the project's History file. Only the changes for the
|
38
|
+
most current release are included.
|
39
|
+
__
|
40
|
+
|
41
|
+
authors nil, :desc => <<-__
|
42
|
+
This can be a single author (as a string) or an array of authors
|
43
|
+
if more than one person is working on the project.
|
44
|
+
__
|
45
|
+
|
46
|
+
email nil, :desc => <<-__
|
47
|
+
An email address so others can contact you with questions, bug
|
48
|
+
reports, compliments, large quantities of cash, etc.
|
49
|
+
__
|
50
|
+
|
51
|
+
url "\000", :desc => <<-__
|
52
|
+
The canonical URL for your project. This should be a location
|
53
|
+
where others can go to find out more information about the project
|
54
|
+
such as links to source code, bug trackers, wikis, generated
|
55
|
+
documentation, etc. A good recommendation would be to point
|
56
|
+
to your gem on gemcutter.org (soon to be rubygems.org).
|
57
|
+
__
|
58
|
+
|
59
|
+
version ENV['VERSION'] || '0.0.0', :desc => <<-__
|
60
|
+
Version number to use when creating the gem. This can be set either
|
61
|
+
in the Rakefile or on the command line by setting the VERSION flag to
|
62
|
+
the desired value.
|
63
|
+
|
|
64
|
+
| rake gem VERSION=0.4.2
|
65
|
+
|
|
66
|
+
The VERSION flag must be explicitly set on the command line when
|
67
|
+
releasing a gem. This is just a safety measure to prevent premature
|
68
|
+
gem release.
|
69
|
+
__
|
70
|
+
|
71
|
+
release_name ENV['RELEASE'], :desc => <<-__
|
72
|
+
And optional release name to be associated with your gem. This is used
|
73
|
+
only when creating a release announcement.
|
74
|
+
__
|
75
|
+
|
76
|
+
exclude %w(tmp$ bak$ ~$ CVS \.svn/ \.git/ ^pkg/), :desc => <<-__
|
77
|
+
A list of regular expression patterns that will be used to exclude
|
78
|
+
certain files from the gem packaging process. Each pattern is given
|
79
|
+
as a string, and they are all combined using the regular expression
|
80
|
+
or "|" operator.
|
81
|
+
__
|
82
|
+
|
83
|
+
# ==== System Defaults
|
84
|
+
ruby_opts %w(-w), :desc => <<-__
|
85
|
+
Default options to pass to the Ruby interpreter when executing tests
|
86
|
+
and specs. The default is to enable all warnings. Since this is an
|
87
|
+
array, the current options can be cleared and new options can be added
|
88
|
+
using the standard array operations
|
89
|
+
|
|
90
|
+
| ruby_opts.clear
|
91
|
+
| ruby_opts << '-Ilib' << '-rubygems'
|
92
|
+
|
|
93
|
+
__
|
94
|
+
|
95
|
+
libs Array.new, :desc => <<-__
|
96
|
+
This is an array of directories to automatically include in the
|
97
|
+
LOAD_PATH of your project. These directories are use for tests and
|
98
|
+
specs, and the gem system sets the "require_paths" for the gem from
|
99
|
+
these directories. If no libs are given, then the "lib" and "ext"
|
100
|
+
directories are automatically added if they are present in your
|
101
|
+
project.
|
102
|
+
__
|
103
|
+
|
104
|
+
history_file 'History.txt', :desc => <<-__
|
105
|
+
The name of your project's History file. The default is 'History.txt'
|
106
|
+
but you are free to change it to whatever you choose.
|
107
|
+
__
|
108
|
+
|
109
|
+
readme_file 'README.txt', :desc => <<-__
|
110
|
+
The name of your project's README file. The default is 'README.txt'
|
111
|
+
but you are free to change it to whatever you choose. Since GitHub
|
112
|
+
understand various markup languages, you can change the README
|
113
|
+
file to support your markup language of choice.
|
114
|
+
__
|
115
|
+
|
116
|
+
ignore_file '.bnsignore', :desc => <<-__
|
117
|
+
Mr Bones does not use a manifest to determine which fiels should be
|
118
|
+
included in your project. All files are included unless they appear
|
119
|
+
in the ignore file or in the "exclude" configruation option. The
|
120
|
+
ignore file defaults to '.bnsignore'; however, if you are using git
|
121
|
+
as your version control system you can just as easily set the ignore
|
122
|
+
file to your '.gitignore' file.
|
123
|
+
__
|
124
|
+
|
125
|
+
colorize true, :desc => <<-__
|
126
|
+
When set to true, various output from Mr Bones will be colorized
|
127
|
+
using terminal ANSI codes. Set to false if your terminal does not
|
128
|
+
support colors.
|
129
|
+
__
|
130
|
+
|
131
|
+
use_sudo false, :desc => <<-__
|
132
|
+
When set to true gem commands will be run using sudo. A convenience
|
133
|
+
method is provided to enable sudo for gem commands
|
134
|
+
|
|
135
|
+
| enable_sudo
|
136
|
+
|
|
137
|
+
This is equivalent to 'use_sudo true', but it reads a little nicer.
|
138
|
+
__
|
139
|
+
}
|
140
|
+
end
|
141
|
+
|
142
|
+
def post_load
|
143
|
+
config = ::Bones.config
|
144
|
+
|
145
|
+
config.exclude << "^#{Regexp.escape(config.ignore_file)}$"
|
146
|
+
config.changes ||= paragraphs_of(config.history_file, 0..1).join("\n\n")
|
147
|
+
config.description ||= paragraphs_of(config.readme_file, 'description').join("\n\n")
|
148
|
+
config.summary ||= config.description.split('.').first
|
149
|
+
|
150
|
+
if config.libs.empty?
|
151
|
+
%w(lib ext).each { |dir| config.libs << dir if test ?d, dir }
|
152
|
+
end
|
153
|
+
|
154
|
+
::Bones::Helpers::SUDO.replace('') unless config.use_sudo
|
155
|
+
end
|
156
|
+
|
157
|
+
def define_tasks
|
158
|
+
config = ::Bones.config
|
159
|
+
|
160
|
+
namespace :bones do
|
161
|
+
desc 'Show the current Mr Bones configuration'
|
162
|
+
task :debug do |t|
|
163
|
+
atr = if t.application.top_level_tasks.length == 2
|
164
|
+
t.application.top_level_tasks.pop
|
165
|
+
end
|
166
|
+
|
167
|
+
::Bones.help.show(atr, :descriptions => false, :values => true)
|
168
|
+
end
|
169
|
+
|
170
|
+
desc 'Show descriptions for the various Mr Bones configuration options'
|
171
|
+
task :help do |t|
|
172
|
+
atr = if t.application.top_level_tasks.length == 2
|
173
|
+
t.application.top_level_tasks.pop
|
174
|
+
end
|
175
|
+
|
176
|
+
::Bones.help.show(atr, :descriptions => true, :values => true)
|
177
|
+
end
|
178
|
+
|
179
|
+
desc 'Show the available Mr Bones configuration options'
|
180
|
+
task :options do |t|
|
181
|
+
atr = if t.application.top_level_tasks.length == 2
|
182
|
+
t.application.top_level_tasks.pop
|
183
|
+
end
|
184
|
+
|
185
|
+
::Bones.help.show(atr, :descriptions => false, :values => false)
|
186
|
+
end
|
187
|
+
|
188
|
+
end # namespace :bones
|
189
|
+
end
|
190
|
+
|
191
|
+
end # module Bones::Plugins::BonesPlugin
|
192
|
+
|
193
|
+
# EOF
|
@@ -0,0 +1,274 @@
|
|
1
|
+
|
2
|
+
module Bones::Plugins::Gem
|
3
|
+
include ::Bones::Helpers
|
4
|
+
extend self
|
5
|
+
|
6
|
+
module Syntax
|
7
|
+
# Adds the given gem _name_ to the current project's dependency list. An
|
8
|
+
# optional gem _version_ can be given. If omitted, the newest gem version
|
9
|
+
# will be used.
|
10
|
+
#
|
11
|
+
def depend_on( name, *args )
|
12
|
+
opts = Hash === args.last ? args.pop : {}
|
13
|
+
version = args.first || opts[:version]
|
14
|
+
development = opts.key?(:development) ? opts[:development] : opts.key?(:dev) ? opts[:dev] : false
|
15
|
+
|
16
|
+
spec = Gem.source_index.find_name(name).last
|
17
|
+
version = spec.version.to_s if version.nil? and !spec.nil?
|
18
|
+
|
19
|
+
dep = case version
|
20
|
+
when nil; [name]
|
21
|
+
when %r/^\d/; [name, ">= #{version}"]
|
22
|
+
else [name, version] end
|
23
|
+
|
24
|
+
development ?
|
25
|
+
::Bones.config.gem.development_dependencies << dep :
|
26
|
+
::Bones.config.gem.dependencies << dep
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize_gem
|
31
|
+
::Bones.config {
|
32
|
+
desc 'Configuration settings for gem packaging.'
|
33
|
+
gem {
|
34
|
+
dependencies Array.new, :desc => <<-__
|
35
|
+
Array of gem dependencies.
|
36
|
+
|
37
|
+
A convenience method is provided to add gem dependencies, and so you
|
38
|
+
should not muck about with this configuration setting manually.
|
39
|
+
|
40
|
+
| depend_on 'rake'
|
41
|
+
| depend_on 'rspec', '1.2.8' # expands to '>= 1.2.8'
|
42
|
+
| depend_on 'main', '~> 2.0'
|
43
|
+
__
|
44
|
+
|
45
|
+
development_dependencies Array.new, :desc => <<-__
|
46
|
+
Array of development gem dependencies.
|
47
|
+
|
48
|
+
A convenience method is provided to add gem dependencies, and so you
|
49
|
+
should not muck about with this configuration setting manually.
|
50
|
+
|
51
|
+
| depend_on 'bones', :deveopment => true
|
52
|
+
| depend_on 'mocah', :version => '0.9.8', :development => true
|
53
|
+
__
|
54
|
+
|
55
|
+
executables nil, :desc => <<-__
|
56
|
+
Array of executables provided by your project. All files in the 'bin'
|
57
|
+
folder will be included by default. However, if you are using a
|
58
|
+
non-standard location for your executables then you will need to
|
59
|
+
include them explicitly here as an Array.
|
60
|
+
__
|
61
|
+
|
62
|
+
extensions FileList['ext/**/extconf.rb'], :desc => <<-__
|
63
|
+
Array of gem extensions. This is the list of 'extconf.rb' files
|
64
|
+
provided by your project. Rubygems uses this list of files to
|
65
|
+
compile extensions when installing your gem.
|
66
|
+
__
|
67
|
+
|
68
|
+
files nil, :desc => <<-__
|
69
|
+
The list of files to include when packaging up your gem. This
|
70
|
+
defaults to all files in the current directory excluding those
|
71
|
+
matched by the 'exclude' option and the 'ignore_file'. You can
|
72
|
+
supply your Array of files if you desire.
|
73
|
+
__
|
74
|
+
|
75
|
+
need_tar true, :desc => <<-__
|
76
|
+
When set to true a tar-gzip file will be produced along with your
|
77
|
+
gem. The default is true.
|
78
|
+
__
|
79
|
+
|
80
|
+
need_zip false, :desc => <<-__
|
81
|
+
When set to true a zip file will be produced along with your gem.
|
82
|
+
The default is false.
|
83
|
+
__
|
84
|
+
|
85
|
+
extras Hash.new, :desc => <<-__
|
86
|
+
A hash of extra Gem::Specification settings that are otherwise not
|
87
|
+
provided for by Mr Bones. You will need to refer to the rubygems
|
88
|
+
documentation for a complete list of specification settings.
|
89
|
+
__
|
90
|
+
}
|
91
|
+
}
|
92
|
+
|
93
|
+
have?(:gem) { true }
|
94
|
+
end
|
95
|
+
|
96
|
+
def post_load
|
97
|
+
config = ::Bones.config
|
98
|
+
|
99
|
+
config.gem.files ||= manifest
|
100
|
+
config.gem.executables ||= config.gem.files.find_all {|fn| fn =~ %r/^bin/}
|
101
|
+
config.gem.development_dependencies << ['bones', ">= #{Bones::VERSION}"]
|
102
|
+
|
103
|
+
have?(:gemcutter) {
|
104
|
+
Gem.searcher.instance_variable_get(:@gemspecs).
|
105
|
+
map {|gs| gs.name}.include? 'gemcutter'
|
106
|
+
}
|
107
|
+
end
|
108
|
+
|
109
|
+
def define_tasks
|
110
|
+
config = ::Bones.config
|
111
|
+
|
112
|
+
namespace :gem do
|
113
|
+
config.gem._spec = Gem::Specification.new do |s|
|
114
|
+
s.name = config.name
|
115
|
+
s.version = config.version
|
116
|
+
s.summary = config.summary
|
117
|
+
s.authors = Array(config.authors)
|
118
|
+
s.email = config.email
|
119
|
+
s.homepage = Array(config.url).first
|
120
|
+
s.rubyforge_project = config.rubyforge.name || config.name rescue config.name
|
121
|
+
|
122
|
+
s.description = config.description
|
123
|
+
|
124
|
+
config.gem.dependencies.each do |dep|
|
125
|
+
s.add_dependency(*dep)
|
126
|
+
end
|
127
|
+
|
128
|
+
config.gem.development_dependencies.each do |dep|
|
129
|
+
s.add_development_dependency(*dep)
|
130
|
+
end
|
131
|
+
|
132
|
+
s.files = config.gem.files
|
133
|
+
s.executables = config.gem.executables.map {|fn| File.basename(fn)}
|
134
|
+
s.extensions = config.gem.files.grep %r/extconf\.rb$/
|
135
|
+
|
136
|
+
s.bindir = 'bin'
|
137
|
+
dirs = Dir["{#{config.libs.join(',')}}"]
|
138
|
+
s.require_paths = dirs unless dirs.empty?
|
139
|
+
|
140
|
+
if config.rdoc
|
141
|
+
incl = Regexp.new(config.rdoc.include.join('|'))
|
142
|
+
excl = config.rdoc.exclude.dup.concat %w[\.rb$ ^(\.\/|\/)?ext]
|
143
|
+
excl = Regexp.new(excl.join('|'))
|
144
|
+
rdoc_files = config.gem.files.find_all do |fn|
|
145
|
+
case fn
|
146
|
+
when excl; false
|
147
|
+
when incl; true
|
148
|
+
else false end
|
149
|
+
end
|
150
|
+
s.rdoc_options = config.rdoc.opts + ['--main', config.rdoc.main]
|
151
|
+
s.extra_rdoc_files = rdoc_files
|
152
|
+
s.has_rdoc = true
|
153
|
+
end
|
154
|
+
|
155
|
+
if config.test
|
156
|
+
if test ?f, config.test.file
|
157
|
+
s.test_file = config.test.file
|
158
|
+
else
|
159
|
+
s.test_files = config.test.files.to_a
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
# Do any extra stuff the user wants
|
164
|
+
config.gem.extras.each do |msg, val|
|
165
|
+
case val
|
166
|
+
when Proc
|
167
|
+
val.call(s.send(msg))
|
168
|
+
else
|
169
|
+
s.send "#{msg}=", val
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end # Gem::Specification.new
|
173
|
+
|
174
|
+
::Bones::GemPackageTask.new(config.gem._spec) do |pkg|
|
175
|
+
pkg.need_tar = config.gem.need_tar
|
176
|
+
pkg.need_zip = config.gem.need_zip
|
177
|
+
end
|
178
|
+
|
179
|
+
if have? :gemcutter
|
180
|
+
desc 'Package and upload to Gemcutter'
|
181
|
+
task :release => [:clobber, 'gem'] do |t|
|
182
|
+
v = ENV['VERSION'] or abort 'Must supply VERSION=x.y.z'
|
183
|
+
abort "Versions don't match #{v} vs #{config.version}" if v != config.version
|
184
|
+
|
185
|
+
Dir.glob("pkg/#{config.gem._spec.full_name}*.gem").each { |fn|
|
186
|
+
sh "#{GEM} push #{fn}"
|
187
|
+
}
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
desc 'Show information about the gem'
|
192
|
+
task :debug => 'gem:prereqs' do
|
193
|
+
puts config.gem._spec.to_ruby
|
194
|
+
end
|
195
|
+
|
196
|
+
desc 'Write the gemspec '
|
197
|
+
task :spec => 'gem:prereqs' do
|
198
|
+
File.open("#{config.name}.gemspec", 'w') do |f|
|
199
|
+
f.write config.gem._spec.to_ruby
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
desc 'Install the gem'
|
204
|
+
task :install => [:clobber, 'gem:package'] do
|
205
|
+
sh "#{SUDO} #{GEM} install --local pkg/#{config.gem._spec.full_name}"
|
206
|
+
|
207
|
+
# use this version of the command for rubygems > 1.0.0
|
208
|
+
#sh "#{SUDO} #{GEM} install --no-update-sources pkg/#{config.gem._spec.full_name}"
|
209
|
+
end
|
210
|
+
|
211
|
+
desc 'Uninstall the gem'
|
212
|
+
task :uninstall do
|
213
|
+
installed_list = Gem.source_index.find_name(config.name)
|
214
|
+
if installed_list and installed_list.collect { |s| s.version.to_s}.include?(config.version) then
|
215
|
+
sh "#{SUDO} #{GEM} uninstall --version '#{config.version}' --ignore-dependencies --executables #{config.name}"
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
219
|
+
desc 'Reinstall the gem'
|
220
|
+
task :reinstall => [:uninstall, :install]
|
221
|
+
|
222
|
+
desc 'Cleanup the gem'
|
223
|
+
task :cleanup do
|
224
|
+
sh "#{SUDO} #{GEM} cleanup #{config.gem._spec.name}"
|
225
|
+
end
|
226
|
+
end # namespace :gem
|
227
|
+
|
228
|
+
|
229
|
+
desc 'Alias to gem:package'
|
230
|
+
task :gem => 'gem:package'
|
231
|
+
|
232
|
+
task :clobber => 'gem:clobber_package'
|
233
|
+
remove_desc_for_task 'gem:clobber_package'
|
234
|
+
end
|
235
|
+
|
236
|
+
# Scans the current working directory and creates a list of files that are
|
237
|
+
# candidates to be in the manifest.
|
238
|
+
#
|
239
|
+
def manifest
|
240
|
+
config = ::Bones.config
|
241
|
+
files = []
|
242
|
+
exclude = config.exclude.dup
|
243
|
+
comment = %r/^\s*#/
|
244
|
+
|
245
|
+
# process the ignore file and add the items there to the exclude list
|
246
|
+
if test(?f, config.ignore_file)
|
247
|
+
ary = []
|
248
|
+
File.readlines(config.ignore_file).each do |line|
|
249
|
+
next if line =~ comment
|
250
|
+
line.chomp!
|
251
|
+
line.strip!
|
252
|
+
next if line.nil? or line.empty?
|
253
|
+
|
254
|
+
glob = line =~ %r/\*\./ ? File.join('**', line) : line
|
255
|
+
Dir.glob(glob).each {|fn| ary << "^#{Regexp.escape(fn)}"}
|
256
|
+
end
|
257
|
+
exclude.concat ary
|
258
|
+
end
|
259
|
+
|
260
|
+
# generate a regular expression from the exclude list
|
261
|
+
exclude = Regexp.new(exclude.join('|'))
|
262
|
+
|
263
|
+
Find.find '.' do |path|
|
264
|
+
path.sub! %r/^(\.\/|\/)/o, ''
|
265
|
+
next unless test ?f, path
|
266
|
+
next if path =~ exclude
|
267
|
+
files << path
|
268
|
+
end
|
269
|
+
files.sort!
|
270
|
+
end
|
271
|
+
|
272
|
+
end # Bones::Plugins::Gem
|
273
|
+
|
274
|
+
# EOF
|