diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 732f26d..a08030f 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -104,12 +104,11 @@ Style/NumericPredicate: - 'lib/zip/ioextras.rb' - 'lib/zip/ioextras/abstract_input_stream.rb' -# Offense count: 6 +# Offense count: 1 # Configuration parameters: AllowedMethods. # AllowedMethods: respond_to_missing? Style/OptionalBooleanParameter: Exclude: - - 'lib/zip/file.rb' - 'lib/zip/file_split.rb' # Offense count: 17 diff --git a/README.md b/README.md index 5af5454..4b66ec2 100644 --- a/README.md +++ b/README.md @@ -50,7 +50,7 @@ input_filenames = ['image.jpg', 'description.txt', 'stats.csv'] zipfile_name = "/Users/me/Desktop/archive.zip" -Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile| +Zip::File.open(zipfile_name, create: true) do |zipfile| input_filenames.each do |filename| # Two arguments: # - The name of the file as it will appear in the archive @@ -89,7 +89,7 @@ class ZipFileGenerator def write entries = Dir.entries(@input_dir) - %w[. ..] - ::Zip::File.open(@output_file, ::Zip::File::CREATE) do |zipfile| + ::Zip::File.open(@output_file, create: true) do |zipfile| write_entries entries, '', zipfile end end @@ -318,7 +318,7 @@ Where X is an integer between 0 and 9, inclusive. If this option is set to 0 (`Z This can also be set for each archive as an option to `Zip::File`: ```ruby -Zip::File.open('foo.zip', Zip::File::CREATE, {compression_level: 9}) do |zip| +Zip::File.open('foo.zip', create:true, compression_level: 9) do |zip| zip.add ... end ``` diff --git a/lib/zip/file.rb b/lib/zip/file.rb index 256cf65..5623b4e 100644 --- a/lib/zip/file.rb +++ b/lib/zip/file.rb @@ -25,7 +25,7 @@ module Zip # # require 'zip' # - # Zip::File.open("my.zip", Zip::File::CREATE) { + # Zip::File.open("my.zip", create: true) { # |zipfile| # zipfile.get_output_stream("first.txt") { |f| f.puts "Hello from ZipFile" } # zipfile.mkdir("a_dir") @@ -37,7 +37,7 @@ module Zip # # require 'zip' # - # Zip::File.open("my.zip", Zip::File::CREATE) { + # Zip::File.open("my.zip", create: true) { # |zipfile| # puts zipfile.read("first.txt") # zipfile.remove("first.txt") @@ -49,8 +49,7 @@ module Zip class File < CentralDirectory extend FileSplit - CREATE = true - IO_METHODS = [:tell, :seek, :read, :eof, :close].freeze + IO_METHODS = [:tell, :seek, :read, :eof, :close].freeze attr_reader :name @@ -66,9 +65,9 @@ module Zip # Returns the zip files comment, if it has one attr_accessor :comment - # Opens a zip archive. Pass true as the second parameter to create + # Opens a zip archive. Pass create: true to create # a new archive if it doesn't exist already. - def initialize(path_or_io, create = false, buffer = false, options = {}) + def initialize(path_or_io, create: false, buffer: false, **options) super() options = DEFAULT_RESTORE_OPTIONS .merge(compression_level: ::Zip.default_compression) @@ -115,8 +114,8 @@ module Zip # Similar to ::new. If a block is passed the Zip::File object is passed # to the block and is automatically closed afterwards, just as with # ruby's builtin File::open method. - def open(file_name, create = false, options = {}) - zf = ::Zip::File.new(file_name, create, false, options) + def open(file_name, create: false, **options) + zf = ::Zip::File.new(file_name, create: create, **options) return zf unless block_given? begin @@ -129,7 +128,7 @@ module Zip # Same as #open. But outputs data to a buffer instead of a file def add_buffer io = ::StringIO.new - zf = ::Zip::File.new(io, true, true) + zf = ::Zip::File.new(io, create: true, buffer: true) yield zf zf.write_buffer(io) end @@ -138,7 +137,7 @@ module Zip # stream, and outputs data to a buffer. # (This can be used to extract data from a # downloaded zip archive without first saving it to disk.) - def open_buffer(io, options = {}) + def open_buffer(io, **options) unless IO_METHODS.map { |method| io.respond_to?(method) }.all? || io.kind_of?(String) raise 'Zip::File.open_buffer expects a String or IO-like argument' \ "(responds to #{IO_METHODS.join(', ')}). Found: #{io.class}" @@ -149,7 +148,7 @@ module Zip # https://github.com/rubyzip/rubyzip/issues/119 io.binmode if io.respond_to?(:binmode) - zf = ::Zip::File.new(io, true, true, options) + zf = ::Zip::File.new(io, create: true, buffer: true, **options) return zf unless block_given? yield zf diff --git a/lib/zip/filesystem.rb b/lib/zip/filesystem.rb index 26895df..e223b3c 100644 --- a/lib/zip/filesystem.rb +++ b/lib/zip/filesystem.rb @@ -21,7 +21,7 @@ module Zip # # require 'zip/filesystem' # - # Zip::File.open("my.zip", Zip::File::CREATE) { + # Zip::File.open("my.zip", create: true) { # |zipfile| # zipfile.file.open("first.txt", "w") { |f| f.puts "Hello world" } # zipfile.dir.mkdir("mydir") diff --git a/samples/example_filesystem.rb b/samples/example_filesystem.rb index d37eaee..6909848 100755 --- a/samples/example_filesystem.rb +++ b/samples/example_filesystem.rb @@ -9,7 +9,7 @@ EXAMPLE_ZIP = 'filesystem.zip' File.delete(EXAMPLE_ZIP) if File.exist?(EXAMPLE_ZIP) -Zip::File.open(EXAMPLE_ZIP, Zip::File::CREATE) do |zf| +Zip::File.open(EXAMPLE_ZIP, create: true) do |zf| zf.file.open('file1.txt', 'w') { |os| os.write 'first file1.txt' } zf.dir.mkdir('dir1') zf.dir.chdir('dir1') diff --git a/samples/example_recursive.rb b/samples/example_recursive.rb index 175e69f..04b6f33 100644 --- a/samples/example_recursive.rb +++ b/samples/example_recursive.rb @@ -23,7 +23,7 @@ class ZipFileGenerator def write entries = Dir.entries(@input_dir) - %w[. ..] - ::Zip::File.open(@output_file, ::Zip::File::CREATE) do |zipfile| + ::Zip::File.open(@output_file, create: true) do |zipfile| write_entries entries, '', zipfile end end diff --git a/test/case_sensitivity_test.rb b/test/case_sensitivity_test.rb index af4443d..81ad207 100644 --- a/test/case_sensitivity_test.rb +++ b/test/case_sensitivity_test.rb @@ -19,7 +19,7 @@ class ZipCaseSensitivityTest < MiniTest::Test ::Zip.case_insensitive_match = false SRC_FILES.each { |fn, _en| assert(::File.exist?(fn)) } - zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE) + zf = ::Zip::File.new(EMPTY_FILENAME, create: true) SRC_FILES.each { |fn, en| zf.add(en, fn) } zf.close @@ -38,7 +38,7 @@ class ZipCaseSensitivityTest < MiniTest::Test ::Zip.case_insensitive_match = true SRC_FILES.each { |fn, _en| assert(::File.exist?(fn)) } - zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE) + zf = ::Zip::File.new(EMPTY_FILENAME, create: true) assert_raises Zip::EntryExistsError do SRC_FILES.each { |fn, en| zf.add(en, fn) } @@ -50,7 +50,7 @@ class ZipCaseSensitivityTest < MiniTest::Test ::Zip.case_insensitive_match = false SRC_FILES.each { |fn, _en| assert(::File.exist?(fn)) } - zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE) + zf = ::Zip::File.new(EMPTY_FILENAME, create: true) SRC_FILES.each { |fn, en| zf.add(en, fn) } zf.close diff --git a/test/entry_test.rb b/test/entry_test.rb index 17273c5..13d4296 100644 --- a/test/entry_test.rb +++ b/test/entry_test.rb @@ -167,7 +167,7 @@ class ZipEntryTest < MiniTest::Test z.write_zip64_support = false end - zipfile = Zip::File.open(tmp_zip, Zip::File::CREATE) + zipfile = Zip::File.open(tmp_zip, create: true) mimetype_entry = Zip::Entry.new( zipfile, # @zipfile diff --git a/test/file_extract_test.rb b/test/file_extract_test.rb index 9d0b7da..e5243ca 100644 --- a/test/file_extract_test.rb +++ b/test/file_extract_test.rb @@ -99,7 +99,7 @@ class ZipFileExtractTest < MiniTest::Test true_size = 500_000 fake_size = 1 - ::Zip::File.open(real_zip, ::Zip::File::CREATE) do |zf| + ::Zip::File.open(real_zip, create: true) do |zf| zf.get_output_stream(file_name) do |os| os.write 'a' * true_size end diff --git a/test/file_options_test.rb b/test/file_options_test.rb index da9a402..c1a568a 100644 --- a/test/file_options_test.rb +++ b/test/file_options_test.rb @@ -30,13 +30,13 @@ class FileOptionsTest < MiniTest::Test ::FileUtils.cp(TXTPATH, TXTPATH_755) ::File.chmod(0o755, TXTPATH_755) - ::Zip::File.open(ZIPPATH, true) do |zip| + ::Zip::File.open(ZIPPATH, create: true) do |zip| zip.add(ENTRY_1, TXTPATH) zip.add(ENTRY_2, TXTPATH_600) zip.add(ENTRY_3, TXTPATH_755) end - ::Zip::File.open(ZIPPATH, false, restore_permissions: true) do |zip| + ::Zip::File.open(ZIPPATH, restore_permissions: true) do |zip| zip.extract(ENTRY_1, EXTPATH_1) zip.extract(ENTRY_2, EXTPATH_2) zip.extract(ENTRY_3, EXTPATH_3) @@ -54,13 +54,13 @@ class FileOptionsTest < MiniTest::Test ::FileUtils.cp(TXTPATH, TXTPATH_755) ::File.chmod(0o755, TXTPATH_755) - ::Zip::File.open(ZIPPATH, true) do |zip| + ::Zip::File.open(ZIPPATH, create: true) do |zip| zip.add(ENTRY_1, TXTPATH) zip.add(ENTRY_2, TXTPATH_600) zip.add(ENTRY_3, TXTPATH_755) end - ::Zip::File.open(ZIPPATH, false, restore_permissions: false) do |zip| + ::Zip::File.open(ZIPPATH, restore_permissions: false) do |zip| zip.extract(ENTRY_1, EXTPATH_1) zip.extract(ENTRY_2, EXTPATH_2) zip.extract(ENTRY_3, EXTPATH_3) @@ -79,7 +79,7 @@ class FileOptionsTest < MiniTest::Test ::FileUtils.cp(TXTPATH, TXTPATH_755) ::File.chmod(0o755, TXTPATH_755) - ::Zip::File.open(ZIPPATH, true) do |zip| + ::Zip::File.open(ZIPPATH, create: true) do |zip| zip.add(ENTRY_1, TXTPATH) zip.add(ENTRY_2, TXTPATH_600) zip.add(ENTRY_3, TXTPATH_755) @@ -97,12 +97,12 @@ class FileOptionsTest < MiniTest::Test end def test_restore_times_true - ::Zip::File.open(ZIPPATH, true) do |zip| + ::Zip::File.open(ZIPPATH, create: true) do |zip| zip.add(ENTRY_1, TXTPATH) zip.add_stored(ENTRY_2, TXTPATH) end - ::Zip::File.open(ZIPPATH, false, restore_times: true) do |zip| + ::Zip::File.open(ZIPPATH, restore_times: true) do |zip| zip.extract(ENTRY_1, EXTPATH_1) zip.extract(ENTRY_2, EXTPATH_2) end @@ -112,12 +112,12 @@ class FileOptionsTest < MiniTest::Test end def test_restore_times_false - ::Zip::File.open(ZIPPATH, true) do |zip| + ::Zip::File.open(ZIPPATH, create: true) do |zip| zip.add(ENTRY_1, TXTPATH) zip.add_stored(ENTRY_2, TXTPATH) end - ::Zip::File.open(ZIPPATH, false, restore_times: false) do |zip| + ::Zip::File.open(ZIPPATH, restore_times: false) do |zip| zip.extract(ENTRY_1, EXTPATH_1) zip.extract(ENTRY_2, EXTPATH_2) end @@ -127,7 +127,7 @@ class FileOptionsTest < MiniTest::Test end def test_restore_times_true_as_default - ::Zip::File.open(ZIPPATH, true) do |zip| + ::Zip::File.open(ZIPPATH, create: true) do |zip| zip.add(ENTRY_1, TXTPATH) zip.add_stored(ENTRY_2, TXTPATH) end diff --git a/test/file_permissions_test.rb b/test/file_permissions_test.rb index 1b31a79..e9dabf3 100644 --- a/test/file_permissions_test.rb +++ b/test/file_permissions_test.rb @@ -48,7 +48,7 @@ class FilePermissionsTest < MiniTest::Test end def create_files - ::Zip::File.open(ZIPNAME, ::Zip::File::CREATE) do |zip| + ::Zip::File.open(ZIPNAME, create: true) do |zip| zip.comment = 'test' end diff --git a/test/file_test.rb b/test/file_test.rb index 25b31b2..9ac2f69 100644 --- a/test/file_test.rb +++ b/test/file_test.rb @@ -32,21 +32,7 @@ class ZipFileTest < MiniTest::Test def test_create_from_scratch comment = 'a short comment' - zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE) - zf.get_output_stream('myFile') { |os| os.write 'myFile contains just this' } - zf.mkdir('dir1') - zf.comment = comment - zf.close - - zf_read = ::Zip::File.new(EMPTY_FILENAME) - assert_equal(comment, zf_read.comment) - assert_equal(2, zf_read.entries.length) - end - - def test_create_from_scratch_with_old_create_parameter - comment = 'a short comment' - - zf = ::Zip::File.new(EMPTY_FILENAME, 1) + zf = ::Zip::File.new(EMPTY_FILENAME, create: true) zf.get_output_stream('myFile') { |os| os.write 'myFile contains just this' } zf.mkdir('dir1') zf.comment = comment @@ -184,7 +170,7 @@ class ZipFileTest < MiniTest::Test end def test_cleans_up_tempfiles_after_close - zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE) + zf = ::Zip::File.new(EMPTY_FILENAME, create: true) zf.get_output_stream('myFile') do |os| @tempfile_path = os.path os.write 'myFile contains just this' @@ -208,9 +194,7 @@ class ZipFileTest < MiniTest::Test sizes = [] files.each do |name, comp| - zf = ::Zip::File.new( - name, ::Zip::File::CREATE, false, { compression_level: comp } - ) + zf = ::Zip::File.new(name, create: true, compression_level: comp) zf.add(entry_name, src_file) zf.close @@ -243,7 +227,7 @@ class ZipFileTest < MiniTest::Test files.each do |name, comp| ::Zip.default_compression = comp - zf = ::Zip::File.new(name, ::Zip::File::CREATE) + zf = ::Zip::File.new(name, create: true) zf.add(entry_name, src_file) zf.close @@ -268,7 +252,7 @@ class ZipFileTest < MiniTest::Test src_file = 'test/data/file2.txt' entry_name = 'newEntryName.rb' assert(::File.exist?(src_file)) - zf = ::Zip::File.new(EMPTY_FILENAME, ::Zip::File::CREATE) + zf = ::Zip::File.new(EMPTY_FILENAME, create: true) zf.add_stored(entry_name, src_file) zf.close @@ -294,7 +278,7 @@ class ZipFileTest < MiniTest::Test ::File.chmod(0o664, src_zip) assert_equal(0o100664, ::File.stat(src_zip).mode) - zf = ::Zip::File.new(src_zip, ::Zip::File::CREATE) + zf = ::Zip::File.new(src_zip, create: true) zf.add('newEntryName.rb', 'test/data/file2.txt') zf.close @@ -385,7 +369,7 @@ class ZipFileTest < MiniTest::Test ::File.unlink(zf_name) if ::File.exist?(zf_name) arr = [] arr_renamed = [] - ::Zip::File.open(zf_name, ::Zip::File::CREATE) do |zf| + ::Zip::File.open(zf_name, create: true) do |zf| zf.mkdir('test') arr << 'test/' arr_renamed << 'Ztest/' @@ -398,7 +382,7 @@ class ZipFileTest < MiniTest::Test zf = ::Zip::File.open(zf_name) assert_equal(zf.entries.map(&:name), arr) zf.close - Zip::File.open(zf_name, 'wb') do |z| + Zip::File.open(zf_name) do |z| z.each do |f| z.rename(f, "Z#{f.name}") end @@ -522,7 +506,7 @@ class ZipFileTest < MiniTest::Test def test_double_commit(filename = 'test/data/generated/double_commit_test.zip') ::FileUtils.touch('test/data/generated/test_double_commit1.txt') ::FileUtils.touch('test/data/generated/test_double_commit2.txt') - zf = ::Zip::File.open(filename, ::Zip::File::CREATE) + zf = ::Zip::File.open(filename, create: true) zf.add('test1.txt', 'test/data/generated/test_double_commit1.txt') zf.commit zf.add('test2.txt', 'test/data/generated/test_double_commit2.txt') @@ -695,7 +679,7 @@ class ZipFileTest < MiniTest::Test def test_streaming fname = ::File.join(__dir__, '..', 'README.md') zname = 'test/data/generated/README.zip' - Zip::File.open(zname, Zip::File::CREATE) do |zipfile| + Zip::File.open(zname, create: true) do |zipfile| zipfile.get_output_stream(File.basename(fname)) do |f| f.puts File.read(fname) end diff --git a/test/unicode_file_names_and_comments_test.rb b/test/unicode_file_names_and_comments_test.rb index ceac94f..bc84332 100644 --- a/test/unicode_file_names_and_comments_test.rb +++ b/test/unicode_file_names_and_comments_test.rb @@ -53,7 +53,7 @@ class ZipUnicodeFileNamesAndComments < MiniTest::Test def test_unicode_comment str = '渠道升级' - ::Zip::File.open(FILENAME, Zip::File::CREATE) do |z| + ::Zip::File.open(FILENAME, create: true) do |z| z.comment = str end diff --git a/test/zip64_full_test.rb b/test/zip64_full_test.rb index 5d174e3..0837f73 100644 --- a/test/zip64_full_test.rb +++ b/test/zip64_full_test.rb @@ -21,7 +21,7 @@ class Zip64FullTest < MiniTest::Test last_text = 'this tests files starting after 4GB in the archive' comment_text = 'this is a file comment in a zip64 archive' - ::Zip::File.open(HUGE_ZIP, ::Zip::File::CREATE) do |zf| + ::Zip::File.open(HUGE_ZIP, create: true) do |zf| zf.comment = comment_text zf.get_output_stream('first_file.txt') do |io|