omnizip 0.3.46 → 0.3.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb792b03b604528825ce30f9d2ef6c7b6ac077535f5a4bf027498a44138ab692
4
- data.tar.gz: 777e4ed705e6aa51b53ca8bccf2b394ae24f6f9b4404325db398a24e13b5a811
3
+ metadata.gz: 22e232b5a4b1ddbbece5ce1b6052ea90a9e76a120e8d246cf03ae0b568d4ba73
4
+ data.tar.gz: af66a96e666d25e75196b68b317e2f34a37f2fa3e0da2d79d8f2d67d2a6d86a2
5
5
  SHA512:
6
- metadata.gz: d512bfb76c29f2ca7a59bc6e46f558c2bc659b38dc1878b50ea879f91f93beff7c52a27a033b002f0a3e27ae2968484a8cb27b68aaa462a86aad9906f360a854
7
- data.tar.gz: 25fdb5dacbe8dd8efb6835d916c8b455bcf07197845126dc8b832bbbf80418b80e904c5338a21e0300df6db83fd872fb6faa132f40e9b947ba19496a38eb44d2
6
+ metadata.gz: ed6a8cd7c2613912ed4c50e914cd1a4184253e6b66325741649d2790c9b0650546f6066354a28956b98e2f0a7c17853a56a0723308877a93043b55979270a2c1
7
+ data.tar.gz: f6ad381f14bfd3a621584747bd71f544adacafc6d8241261f6bf7c553a92763ca0fef2165d4a65895f0ff54231b071e6f98903d87caf7125bfe229c372afc489
data/CHANGELOG.md CHANGED
@@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.46] - 2026-08-31
11
+
12
+ ### Added
13
+ - The Archive facade and convenience layer create `.rar` archives:
14
+ the RAR ArchiveHandler raised "RAR archives cannot be created
15
+ (patented format)" while `Formats::Rar.create` has written
16
+ unrar-verified STORE archives since 0.3.39 and the CLI create
17
+ command worked — three front doors, three different truths. The
18
+ handler now delegates through the same proxy pattern as the 7z
19
+ and zip handlers.
20
+ - Explicit directory entries for both RAR writers
21
+ (`add_directory_entry`): the Builder's `add_directory` output —
22
+ and empty trees — no longer vanish from RAR archives. RAR4
23
+ reuses its unrar-verified 0xE0-mask path; RAR5 writes
24
+ FileFlags-directory-bit headers with Unix directory attributes
25
+ (the constant previously mislabeled 0x0001 as "has attributes" —
26
+ it is the spec's Directory flag), and the solid path writes
27
+ directory headers separately so stream indexes stay aligned.
28
+ - `omnizip archive repair ARCHIVE OUTPUT` registered (the command
29
+ existed but was wired to nothing; like `verify`, its
30
+ `Formats::Rar.repair` call passed options the module method never
31
+ accepted — fixed and forwarded).
32
+
33
+ ### Fixed
34
+ - `Formats::Rar.repair` accepts the options hash the repair command
35
+ has always passed (arity crash on first contact).
36
+
10
37
  ## [0.3.45] - 2026-08-31
11
38
 
12
39
  ### Changed
data/CONTEXT.md CHANGED
@@ -16,8 +16,9 @@ here.
16
16
  - **Extension route** — mapping from a file extension to a format
17
17
  symbol. Writable routes (`ARCHIVE_FORMAT_EXTENSIONS`) may create
18
18
  archives; read routes (`READ_ARCHIVE_FORMAT_EXTENSIONS`) only
19
- extract/list/read. `.rar`, `.cpio`, `.iso` are read-only routes;
20
- creating them raises truthfully.
19
+ extract/list/read. `.rar` is a writable route (its handler
20
+ creates unrar-verified STORE archives); `.cpio`, `.iso` remain
21
+ read-only routes.
21
22
 
22
23
  ## Reading and decode
23
24
 
@@ -228,13 +228,15 @@ module Omnizip
228
228
  ".zip" => :zip,
229
229
  ".tar" => :tar,
230
230
  ".7z" => :seven_zip,
231
+ ".rar" => :rar,
231
232
  }.freeze
232
233
 
233
234
  # Extensions naming formats with read-only convenience routing.
234
235
  # Writing them a ZIP under a foreign name was silent corruption;
235
236
  # creation raises truthfully instead (the format-level writers
236
- # exist for RAR/CPIO/ISO but are not part of the archive API).
237
- READ_ONLY_FORMAT_EXTENSIONS = [".rar", ".iso", ".cpio"].freeze
237
+ # exist for CPIO/ISO but are not part of the archive API; RAR
238
+ # moved to the writable routes when its handler gained create).
239
+ READ_ONLY_FORMAT_EXTENSIONS = [".iso", ".cpio"].freeze
238
240
 
239
241
  # Extensions whose format has a READ-ONLY handler: extraction and
240
242
  # listing route to it, while creation keeps raising.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Omnizip
4
- VERSION = "0.3.46"
4
+ VERSION = "0.3.47"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: omnizip
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.46
4
+ version: 0.3.47
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.