Skip to content

Commit

Permalink
Merge pull request #576 from kg8m/packaging
Browse files Browse the repository at this point in the history
Remove `lib/tasks/check_all.rb` and its corresponding RBS file from the package
  • Loading branch information
kg8m authored Dec 28, 2024
2 parents 2a0eec7 + f10fab0 commit 884bd01
Show file tree
Hide file tree
Showing 3 changed files with 150 additions and 9 deletions.
136 changes: 136 additions & 0 deletions spec/tools/collect_package_files_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
# frozen_string_literal: true

RSpec.describe CollectPackageFiles do
let(:expected_included_files) do
%w[
LICENSE
README.md
app/controllers/tanshuku/urls_controller.rb
app/models/tanshuku/url.rb
config/locales/en.yml
config/locales/ja.yml
config/routes.rb
db/migrate/20230220123456_create_tanshuku_urls.rb
lib/generators/tanshuku/install_generator.rb
lib/generators/templates/initializer.rb
lib/tanshuku.rb
lib/tanshuku/configuration.rb
lib/tanshuku/engine.rb
lib/tanshuku/version.rb
sig/app/controllers/tanshuku/urls_controller.rbs
sig/app/models/tanshuku/url.rbs
sig/db/migrate/create_tanshuku_urls.rbs
sig/lib/generators/tanshuku/install_generator.rbs
sig/lib/tanshuku.rbs
sig/lib/tanshuku/configuration.rbs
sig/lib/tanshuku/engine.rbs
sig/lib/tanshuku/version.rbs
]
end
let(:expected_excluded_files) do
%w[
.gitattributes
.github/dependabot.yml
.github/release.yml
.github/workflows/bot-auto-merge.yml
.github/workflows/checks.yml
.github/workflows/create-release.yml
.github/workflows/dependabot-autolabeling.yml
.github/workflows/pages.yml
.github/workflows/update-rbs-collection.yml
.gitignore
.rspec
.rubocop.yml
Gemfile
Gemfile.ci
Gemfile.lock
Rakefile
Steepfile
bin/rails
lib/tasks/check_all.rb
rbs_collection.lock.yaml
rbs_collection.yaml
sig/lib/tasks/check_all.rbs
sig/patch/actionpack.rbs
sig/patch/activerecord.rbs
sig/patch/english.rbs
sig/patch/paint.rbs
sig/patch/pty.rbs
sig/patch/rack.rbs
sig/patch/rails.rbs
sig/patch/thor.rbs
spec/config/locales/en_spec.rb
spec/config/locales/ja_spec.rb
spec/dummy/Rakefile
spec/dummy/app/assets/config/manifest.js
spec/dummy/app/assets/images/.keep
spec/dummy/app/assets/stylesheets/application.css
spec/dummy/app/channels/application_cable/channel.rb
spec/dummy/app/channels/application_cable/connection.rb
spec/dummy/app/controllers/application_controller.rb
spec/dummy/app/controllers/concerns/.keep
spec/dummy/app/helpers/application_helper.rb
spec/dummy/app/jobs/application_job.rb
spec/dummy/app/mailers/application_mailer.rb
spec/dummy/app/models/application_record.rb
spec/dummy/app/models/concerns/.keep
spec/dummy/app/views/layouts/application.html.erb
spec/dummy/app/views/layouts/mailer.html.erb
spec/dummy/app/views/layouts/mailer.text.erb
spec/dummy/app/views/pwa/manifest.json.erb
spec/dummy/app/views/pwa/service-worker.js
spec/dummy/bin/dev
spec/dummy/bin/rails
spec/dummy/bin/rake
spec/dummy/bin/setup
spec/dummy/config.ru
spec/dummy/config/application.rb
spec/dummy/config/boot.rb
spec/dummy/config/cable.yml
spec/dummy/config/database.yml
spec/dummy/config/environment.rb
spec/dummy/config/environments/development.rb
spec/dummy/config/environments/production.rb
spec/dummy/config/environments/test.rb
spec/dummy/config/initializers/assets.rb
spec/dummy/config/initializers/content_security_policy.rb
spec/dummy/config/initializers/filter_parameter_logging.rb
spec/dummy/config/initializers/inflections.rb
spec/dummy/config/initializers/tanshuku.rb
spec/dummy/config/locales/en.yml
spec/dummy/config/puma.rb
spec/dummy/config/routes.rb
spec/dummy/config/storage.yml
spec/dummy/lib/assets/.keep
spec/dummy/log/.keep
spec/dummy/public/400.html
spec/dummy/public/404.html
spec/dummy/public/406-unsupported-browser.html
spec/dummy/public/422.html
spec/dummy/public/500.html
spec/dummy/public/apple-touch-icon-precomposed.png
spec/dummy/public/apple-touch-icon.png
spec/dummy/public/favicon.ico
spec/dummy/public/icon.svg
spec/generator/tanshuku/install_generator_spec.rb
spec/lib/tanshuku/configuration_spec.rb
spec/lib/tanshuku_spec.rb
spec/models/tanshuku/url_spec.rb
spec/requests/tanshuku/urls_controller_spec.rb
spec/spec_helper.rb
spec/support/spec_utilities.rb
spec/tools/collect_package_files_spec.rb
tanshuku.gemspec
tmp/.keep
tools/collect_package_files.rb
tools/reverse_dependencies.rb
]
end
let(:all_candidate_files) { `git ls-files -z`.split("\x0") }

example "collects sufficient and necessary files" do
expect(CollectPackageFiles.call).to match_array(expected_included_files)
expect(CollectPackageFiles.call & expected_excluded_files).to be_empty
expect(expected_included_files + expected_excluded_files).to match_array(all_candidate_files)
end
end
11 changes: 2 additions & 9 deletions tanshuku.gemspec
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# frozen_string_literal: true

require_relative "lib/tanshuku/version"
require_relative "tools/collect_package_files"

Gem::Specification.new do |spec|
spec.name = "tanshuku"
Expand All @@ -24,15 +25,7 @@ Gem::Specification.new do |spec|
spec.metadata["documentation_uri"] = "https://kg8m.github.io/tanshuku/"
spec.metadata["rubygems_mfa_required"] = "true"

# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
spec.files =
Dir.chdir(__dir__) do
`git ls-files -z`.split("\x0").reject do |f|
(File.expand_path(f) == __FILE__) ||
f.match?(%r{\A(?:\.|Gemfile|Rakefile\z|Steepfile\z|rbs_collection|(?:bin|sig/patch|spec|tmp|tools)/)})
end
end
spec.files = CollectPackageFiles.call
spec.require_paths = ["lib"]

spec.add_dependency "addressable", ">= 2.4"
Expand Down
12 changes: 12 additions & 0 deletions tools/collect_package_files.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# frozen_string_literal: true

module CollectPackageFiles
EXCLUDE_PATHS = %w[Rakefile Steepfile tanshuku.gemspec].freeze
EXCLUDE_PATTERN = %r{\A(?:\.|Gemfile|rbs_collection|(?:bin|lib/tasks|sig/(?:lib/tasks|patch)|spec|tmp|tools)/)}

def self.call
`git ls-files -z`.split("\x0").reject do |f|
EXCLUDE_PATHS.include?(f) || f.match?(EXCLUDE_PATTERN)
end
end
end

0 comments on commit 884bd01

Please sign in to comment.