Skip to content

Commit

Permalink
[ruby/tempfile] Use IO.popen to list files
Browse files Browse the repository at this point in the history
- Redirect `git ls-files` without shelling out.

- When building by `gem`, `__FILE__` is the path name given in the
  command line, or the gemspec file name in the current directory.  In
  that case, comparison it and expanded path never equal.  Compare
  listed file names with the base name of `__FILE__` instead.

ruby/tempfile@ac5bab8c7a
  • Loading branch information
nobu authored and hsbt committed Feb 26, 2024
1 parent 38e3ad2 commit dddf624
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions lib/tempfile.gemspec
Expand Up @@ -22,9 +22,10 @@ Gem::Specification.new do |spec|

# 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 2>#{IO::NULL}`.split("\x0").reject do |f|
(File.expand_path(f) == __FILE__) ||
gemspec = File.basename(__FILE__)
spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls|
ls.readlines("\x0", chomp: true).reject do |f|
(f == gemspec) ||
f.start_with?(*%w[bin/ test/ spec/ features/ .git Gemfile])
end
end
Expand Down

0 comments on commit dddf624

Please sign in to comment.