diff --git a/library/packages/src/lib/y2packager/licenses_fetchers/archive.rb b/library/packages/src/lib/y2packager/licenses_fetchers/archive.rb index fe33db26f..0d2d79b9e 100644 --- a/library/packages/src/lib/y2packager/licenses_fetchers/archive.rb +++ b/library/packages/src/lib/y2packager/licenses_fetchers/archive.rb @@ -42,7 +42,7 @@ def locales begin unpack_archive - license_files = Dir.glob(File.join(archive_dir, "**", "LICENSE.*.TXT"), File::FNM_CASEFOLD) + license_files = find_case_insensitive(archive_dir, "LICENSE.*.TXT") # NOTE: despite the use of the case-insensitive flag, the captured group will be # returned as it is. languages = license_files.map { |path| path[/LICENSE.(\w*).TXT/i, 1] } @@ -160,7 +160,15 @@ def fallback_path(directory) # # @return [String, nil] The file path; nil if was not found def find_path_for(directory, file) - Dir.glob(File.join(directory, "**", file), File::FNM_CASEFOLD).first + find_case_insensitive(directory, file).first + end + + # TODO: doc, test + def find_case_insensitive(directory, fileglob) + files = Dir.glob(File.join(directory, "**", "*")) + files.find_all do |fn| + File.fnmatch?(File.join(directory, "**", fileglob), fn, File::FNM_CASEFOLD) + end end end end