module Thor::Actions

def find_in_source_paths(file) # rubocop:disable MethodLength

rubocop:disable MethodLength

Receives a file or directory and search for it in the source paths.
def find_in_source_paths(file) # rubocop:disable MethodLength
  possible_files = [file, file + TEMPLATE_EXTNAME]
  relative_root = relative_to_original_destination_root(destination_root, false)
  source_paths.each do |source|
    possible_files.each do |f|
      source_file = File.expand_path(f, File.join(source, relative_root))
      return source_file if File.exist?(source_file)
    end
  end
  message = "Could not find #{file.inspect} in any of your source paths. "
  unless self.class.source_root
    message << "Please invoke #{self.class.name}.source_root(PATH) with the PATH containing your templates. "
  end
  if source_paths.empty?
    message << 'Currently you have no source paths.'
  else
    message << "Your current source paths are: \n#{source_paths.join("\n")}"
  end
  fail Error, message
end