mirror of
https://github.com/hathach/tinyusb.git
synced 2025-01-17 05:32:55 +08:00
55 lines
1.4 KiB
Ruby
55 lines
1.4 KiB
Ruby
|
require 'fileutils'
|
||
|
require 'constants' # for Verbosity enumeration
|
||
|
|
||
|
class FileFinderHelper
|
||
|
|
||
|
constructor :streaminator
|
||
|
|
||
|
|
||
|
def find_file_in_collection(file_name, file_list, complain, extra_message="")
|
||
|
file_to_find = nil
|
||
|
|
||
|
file_list.each do |item|
|
||
|
base_file = File.basename(item)
|
||
|
|
||
|
# case insensitive comparison
|
||
|
if (base_file.casecmp(file_name) == 0)
|
||
|
# case sensitive check
|
||
|
if (base_file == file_name)
|
||
|
file_to_find = item
|
||
|
break
|
||
|
else
|
||
|
blow_up(file_name, "However, a filename having different capitalization was found: '#{item}'.")
|
||
|
end
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
case (complain)
|
||
|
when :error then blow_up(file_name, extra_message) if (file_to_find.nil?)
|
||
|
when :warn then gripe(file_name, extra_message) if (file_to_find.nil?)
|
||
|
#when :ignore then
|
||
|
end
|
||
|
|
||
|
return file_to_find
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def blow_up(file_name, extra_message="")
|
||
|
error = "ERROR: Found no file '#{file_name}' in search paths."
|
||
|
error += ' ' if (extra_message.length > 0)
|
||
|
@streaminator.stderr_puts(error + extra_message, Verbosity::ERRORS)
|
||
|
raise
|
||
|
end
|
||
|
|
||
|
def gripe(file_name, extra_message="")
|
||
|
warning = "WARNING: Found no file '#{file_name}' in search paths."
|
||
|
warning += ' ' if (extra_message.length > 0)
|
||
|
@streaminator.stderr_puts(warning + extra_message, Verbosity::COMPLAIN)
|
||
|
end
|
||
|
|
||
|
end
|
||
|
|
||
|
|