tarballer/README.md

64 lines
1.7 KiB
Markdown

# 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-<platform> -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.