lib/yard/cli/yardoc.rb in yard-0.9.11 vs lib/yard/cli/yardoc.rb in yard-0.9.12
- old
+ new
@@ -409,18 +409,31 @@
# Adds a set of extra documentation files to be processed
# @param [Array<String>] files the set of documentation files
def add_extra_files(*files)
files.map! {|f| f.include?("*") ? Dir.glob(f) : f }.flatten!
files.each do |file|
- if File.file?(file)
+ if extra_file_valid?(file)
options.files << CodeObjects::ExtraFileObject.new(file)
- else
- log.warn "Could not find extra file: #{file}"
end
end
end
+ # @param file [String] the filename to validate
+ # @param check_exists [Boolean] whether the file should exist on disk
+ # @return [Boolean] whether the file is allowed to be used
+ def extra_file_valid?(file, check_exists = true)
+ if file =~ %r{^(?:\.\./|/)}
+ log.warn "Invalid file: #{file}"
+ false
+ elsif check_exists && !File.file?(file)
+ log.warn "Could not find file: #{file}"
+ false
+ else
+ true
+ end
+ end
+
# Parses the file arguments into Ruby files and extra files, which are
# separated by a '-' element.
#
# @example Parses a set of Ruby source files
# parse_files %w(file1 file2 file3)
@@ -642,29 +655,24 @@
options.title = title
end
opts.on('-r', '--readme FILE', '--main FILE', 'The readme file used as the title page',
' of documentation.') do |readme|
- if File.file?(readme)
+ if extra_file_valid?(readme)
options.readme = CodeObjects::ExtraFileObject.new(readme)
- else
- log.warn "Could not find readme file: #{readme}"
end
end
opts.on('--files FILE1,FILE2,...', 'Any extra comma separated static files to be ',
' included (eg. FAQ)') do |files|
add_extra_files(*files.split(","))
end
opts.on('--asset FROM[:TO]', 'A file or directory to copy over to output ',
' directory after generating') do |asset|
- re = %r{^(?:\.\./|/)}
from, to = *asset.split(':').map {|f| File.cleanpath(f, true) }
to ||= from
- if from =~ re || to =~ re
- log.warn "Invalid file '#{asset}'"
- else
+ if extra_file_valid?(from, false) && extra_file_valid?(to, false)
assets[from] = to
end
end
opts.on('-o', '--output-dir PATH',