- Add modern CLI interface built with Zig for performance - Include TUI (Terminal User Interface) with bubbletea-like features - Implement ML experiment commands (run, status, manage) - Add configuration management and validation - Include shell completion scripts for bash and zsh - Add comprehensive CLI testing framework - Support for multiple ML frameworks and project types CLI provides fast, efficient interface for ML experiment management with modern terminal UI and comprehensive feature set. |
||
|---|---|---|
| .. | ||
| README.md | ||
| rsync_placeholder.bin | ||
Rsync Binary Setup for Release Builds
Overview
This directory contains rsync binaries for the ML CLI:
rsync_placeholder.bin- Wrapper script for dev builds (calls system rsync)rsync_release.bin- Full static rsync binary for release builds (not in repo)
Build Modes
Development/Debug Builds
- Uses
rsync_placeholder.bin(98 bytes) - Calls system rsync via wrapper script
- Results in ~152KB CLI binary
- Requires rsync installed on the system
Release Builds (ReleaseSmall, ReleaseFast)
- Uses
rsync_release.bin(300-500KB static binary) - Fully self-contained, no dependencies
- Results in ~450-650KB CLI binary
- Works on any system without rsync installed
Preparing Release Binaries
Option 1: Download Pre-built Static Rsync
For macOS ARM64:
cd cli/src/assets
curl -L https://github.com/WayneD/rsync/releases/download/v3.2.7/rsync-macos-arm64 -o rsync_release.bin
chmod +x rsync_release.bin
For Linux x86_64:
cd cli/src/assets
curl -L https://github.com/WayneD/rsync/releases/download/v3.2.7/rsync-linux-x86_64 -o rsync_release.bin
chmod +x rsync_release.bin
Option 2: Build Static Rsync Yourself
# Clone rsync
git clone https://github.com/WayneD/rsync.git
cd rsync
# Configure for static build
./configure CFLAGS="-static" LDFLAGS="-static" --disable-xxhash --disable-zstd
# Build
make
# Copy to assets
cp rsync ../fetch_ml/cli/src/assets/rsync_release.bin
Option 3: Use System Rsync (Temporary)
For testing release builds without a static binary:
cd cli/src/assets
cp rsync_placeholder.bin rsync_release.bin
This will still use the wrapper, but allows builds to complete.
Verification
After placing rsync_release.bin:
# Verify it's executable
file cli/src/assets/rsync_release.bin
# Test it
./cli/src/assets/rsync_release.bin --version
# Build release
cd cli
zig build prod
# Check binary size
ls -lh zig-out/prod/ml
Notes
rsync_release.binis not tracked in git (add to .gitignore if needed)- Different platforms need different static binaries
- For cross-compilation, provide platform-specific binaries
- The wrapper approach for dev builds is intentional for fast iteration