# Tarballer A simple utility to create tarballs with a specific directory structure. ## Features - Creates compressed tar archives (.tar.gz) from a source directory - Places all files under a specified prefix directory in the tarball - Preserves file permissions and directory structure - Handles symbolic links correctly - Cross-platform compatibility (FreeBSD, macOS, Linux) ## Building This project includes Docker support to build binaries for different platforms: ```bash docker compose up --build build ``` This will create these binaries in the `./bin` directory: - `tarballer-freebsd`: FreeBSD AMD64 compatible binary - `tarballer-darwin`: macOS ARM64 compatible binary - `tarballer-linux`: Linux AMD64 compatible binary ## Testing You can run the included test to verify functionality: ```bash docker compose up --build test ``` This will: 1. Create a test directory structure with nested directories and symlinks 2. Create a tarball from it 3. Extract the tarball 4. Verify the contents and file structure, including symlinks ## Usage The usage is the same for all binaries: ```bash ./bin/tarballer- -source /path/to/directory -output myarchive.tar.gz -prefix myprefix ``` ### Options - `-source`: The directory you want to compress (required) - `-output`: The name of the output tarball (defaults to "output.tar.gz") - `-prefix`: The directory name that will contain all files in the tarball (defaults to "myapp") ### Example ```bash # On macOS: ./bin/tarballer-darwin -source ./myproject -output release.tar.gz -prefix app # On FreeBSD: ./bin/tarballer-freebsd -source ./myproject -output release.tar.gz -prefix app ``` When extracted, all files will be under the `app/` directory in the tarball.