Search code examples
yamlphp-ziparchive

Need the reference for the switch flags used in zip


Please let me know where I can find where switches (flags) such as -r in the context below can be found.

I treat these things like a foreign language -- get the nit picky things defined so you can fully read through something like code as if it's an interesting novel.

#for Linux, one installs zip and unzip using the cli commands
#sudo (super user do) apt (advanced packing tool) as in
#sudo apt install zip unzip
#then this command will run in YAML
- name: Zip publish files
  run: (cd myapp && zip -r ../deployfile.zip .) <-- right here

As an example, was able to find the dotnet publish flags at https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-publish, which provided for me what -c and -o meant.

Is there a similar resource for the above line where -r is used?

dotnet publish [<PROJECT>|<SOLUTION>] [-a|--arch <ARCHITECTURE>]
    [-c|--configuration <CONFIGURATION>] [--disable-build-servers]
    [-f|--framework <FRAMEWORK>] [--force] [--interactive]
    [--manifest <PATH_TO_MANIFEST_FILE>] [--no-build] [--no-dependencies]
    [--no-restore] [--nologo] [-o|--output <OUTPUT_DIRECTORY>]
    [--os <OS>] [-r|--runtime <RUNTIME_IDENTIFIER>]
    [--sc|--self-contained [true|false]] [--no-self-contained]
    [-s|--source <SOURCE>] [--use-current-runtime, --ucr [true|false]]
    [-v|--verbosity <LEVEL>] [--version-suffix <VERSION_SUFFIX>]

Thanks! I'm new to the subject and hate to pass by anything not understood.


Solution

  • Different Linux distros might have different versions of the "zip" app, which might have (slightly!) different command line options.

    Nevertheless: MOST apps support -h or --help.

    For example (WSL, Ubuntu 22.04):

    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
    

    You can also type man zip to read the "man page". *nix "manual pages" - if you're not already familiar with them - give more detailed information, and provide cross-references. They can be an invaluable resource!