one command to handle any archive
  • Rust 89.8%
  • Nix 7.5%
  • Makefile 2.7%
Find a file
github-actions[bot] b43200a55b
Merge pull request #79 from labi-le/dependabot/cargo/clap-4.6.6
chore: bump clap from 4.6.4 to 4.6.6
2026-08-10 07:44:56 +00:00
.github fix automerge gate, drop --auto 2026-08-07 19:50:19 +03:00
src more tests 2025-08-22 03:38:54 +03:00
wix add README.md + help 2025-08-18 05:37:20 +03:00
.gitignore init 2025-08-18 03:33:39 +03:00
Cargo.lock chore: bump clap from 4.6.4 to 4.6.6 2026-08-10 07:44:47 +00:00
Cargo.toml chore: bump log from 0.4.29 to 0.4.32 2026-06-08 07:43:41 +00:00
dist-workspace.toml bump dist to 0.32.0 2026-08-07 16:22:36 +03:00
flake.lock chore: update flake.nix and flake.lock to v0.1.2 2026-04-24 17:01:01 +00:00
flake.nix chore: update flake.nix and flake.lock to v0.1.2 2025-08-18 03:05:41 +00:00
LICENSE init 2025-08-18 03:33:39 +03:00
Makefile init 2025-08-18 03:33:39 +03:00
README.md add README.md + help 2025-08-18 05:37:20 +03:00
shell.nix add cargo release to shell.nix 2025-08-18 06:04:57 +03:00

deal

Ever had to unpack an archive and found yourself googling the flags for tar.gz for the tenth time, only to forget them a moment later? Me too
deal provides one command to handle any archive, so you can finally stop googling "how to unpack X-format"

Dependencies

see flake.nix

Installation

  • Prebuilt binaries

  • Nix flake

    as profile
    nix profile install github:labi-le/deal
    
    import the module
    {
      # inputs
      deal.url = "github:labi-le/deal";
      # outputs
      overlay-deal = final: prev: {
        deal = deal.packages.${system}.default;
      };
    
      modules = [
        ({ config, pkgs, ... }: { nixpkgs.overlays = [ overlay-deal ]; })
      ];
    
      # add package
      environment.systemPackages = with pkgs; [
        deal
      ];
    }
    

Build from source

see shell.nix for details

  • rustc 1.89.0 (29483883e 2025-08-04)
  • git
  • makefile
  • libarchive
  • openssl.dev
  • pkg-config
git clone https://github.com/labi-le/deal.git
cd deal
make build

Usage

deal https://www.bamsoftware.com/hacks/zipbomb/zbsm.zip
deal https://www.bamsoftware.com/hacks/zipbomb/zbsm.zip -d # create a folder by file name
deal https://www.bamsoftware.com/hacks/zipbomb/zbsm.zip some_dir # create a folder using the conveyed name

# the same applies to local files
deal artifacts-build-local-x86_64-unknown-linux-gnu.zip 
deal artifacts-build-local-x86_64-unknown-linux-gnu.zip -d 
deal artifacts-build-local-x86_64-unknown-linux-gnu.zip some_dir 

Todo

[ ] Add tests