1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
# frozen_string_literal: true
# rubocop:disable Style/WordArray
# replacement for Hoe's task of the same name
desc "Perform a sanity check on the gemspec file list"
task :check_manifest do
raw_gemspec = Bundler.load_gemspec("nokogiri.gemspec")
ignore_directories = %w{
.bundle
.DS_Store
.git
.github
.vagrant
.yardoc
coverage
doc
gems
misc
nokogumbo-import
oci-images
patches
pkg
ports
rakelib
scripts
sorbet
suppressions
test
tmp
vendor
[0-9]*
}
ignore_files = %w[
.cross_rubies
.editorconfig
.gitignore
.gitmodules
.yardopts
.rubocop.yml
.rubocop_todo.yml
CHANGELOG.md
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Gemfile?*
ROADMAP.md
Rakefile
SECURITY.md
STANDARD_RESPONSES.md
Vagrantfile
[a-z]*.{log,out}
[0-9]*
appveyor.yml
gumbo-parser/test/*
lib/nokogiri/**/nokogiri.{jar,so}
lib/nokogiri/nokogiri.{jar,so}
nokogiri.gemspec
]
intended_directories = Dir.children(".")
.select { |filename| File.directory?(filename) }
.reject { |filename| ignore_directories.any? { |ig| File.fnmatch?(ig, filename) } }
intended_files = Dir.children(".")
.select { |filename| File.file?(filename) }
.reject { |filename| ignore_files.any? { |ig| File.fnmatch?(ig, filename, File::FNM_EXTGLOB) } }
intended_files += Dir.glob(intended_directories.map { |d| File.join(d, "/**/*") })
.select { |filename| File.file?(filename) }
.reject { |filename| ignore_files.any? { |ig| File.fnmatch?(ig, filename, File::FNM_EXTGLOB) } }
.sort
spec_files = raw_gemspec.files.sort
missing_files = intended_files - spec_files
extra_files = spec_files - intended_files
unless missing_files.empty?
puts "missing:"
missing_files.sort.each { |f| puts "- #{f}" }
end
unless extra_files.empty?
puts "unexpected:"
extra_files.sort.each { |f| puts "+ #{f}" }
end
end
|