drivendataorg / repro-zipfile

A tiny, zero-dependency replacement for Python's zipfile.ZipFile for creating reproducible/deterministic ZIP archives.
Other
12 stars 4 forks source link

Add a simple CLI #2

Closed jayqi closed 5 months ago

jayqi commented 11 months ago

It would be nice to have a simple CLI that supports a limited subset of the regular zip program's interface. This means that Python-based projects can specify a dependency on this CLI, as opposed to tools like timo-reymann/deterministic-zip which need to be specified and installed some other way.

It does seem like a Python command-line program exists, so there's less need in the ecosystem for this package to include one: https://github.com/bboe/deterministic_zip/tree/main


Reference

❯ zip --help
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
  The default action is to add or replace zipfile entries from list, which
  can include the special name - to compress standard input.
  If zipfile and list are omitted, zip compresses stdin to stdout.
  -f   freshen: only changed files  -u   update: only changed or new files
  -d   delete entries in zipfile    -m   move into zipfile (delete OS files)
  -r   recurse into directories     -j   junk (don't record) directory names
  -0   store only                   -l   convert LF to CR LF (-ll CR LF to LF)
  -1   compress faster              -9   compress better
  -q   quiet operation              -v   verbose operation/print version info
  -c   add one-line comments        -z   add zipfile comment
  -@   read names from stdin        -o   make zipfile as old as latest entry
  -x   exclude the following names  -i   include only the following names
  -F   fix zipfile (-FF try harder) -D   do not add directory entries
  -A   adjust self-extracting exe   -J   junk zipfile prefix (unzipsfx)
  -T   test zipfile integrity       -X   eXclude eXtra file attributes
  -y   store symbolic links as the link instead of the referenced file
  -e   encrypt                      -n   don't compress these suffixes
  -h2  show more help

Additional reference: man zip


Functionality to implement

Consider supporting these options, in decreasing order of importance

  1. zipfile list basic arguments
  2. -j junk directory names option
  3. -0 through -9 compression levels
  4. -r recursive option
  5. -x and -i exclude and include options

CLI Framework Options

jayqi commented 5 months ago

Closed by #4