From 384568d34b9e4094738481a88a9fe88a49020dc6 Mon Sep 17 00:00:00 2001 From: Matthew Ryan Dillon Date: Fri, 4 Apr 2025 07:08:57 -0400 Subject: [PATCH] prep for making public (closes #1) --- .gitignore | 1 + README.md | 14 ++++++++++ package.sh | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 README.md create mode 100755 package.sh diff --git a/.gitignore b/.gitignore index ea8c4bf..4f96631 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /target +/dist diff --git a/README.md b/README.md new file mode 100644 index 0000000..9760bf8 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# dsort + +bevy/egui desktop app for performing version-based line sorting, and blank-line cleanup of line-delimited data. + +this is designed and built specifically for one single person, to help make their life simpler - this is not general-purpose, or one-size-fits all. + +## release process + +- `mingw` toolchain (`brew install mingw-w64`) +- `rust` + +```bash +./package.sh +``` diff --git a/package.sh b/package.sh new file mode 100755 index 0000000..629a271 --- /dev/null +++ b/package.sh @@ -0,0 +1,75 @@ +#!/bin/bash + +# AI note: this script was generated with AI, and hand-edited + +set -e # Exit on error + +PROJECT_NAME=$(grep name Cargo.toml | head -n 1 | cut -d '"' -f 2 || echo "rust-project") +VERSION=$(grep version Cargo.toml | head -n 1 | cut -d '"' -f 2 || echo "0.1.0") +OUTPUT_DIR="dist" +WINDOWS_TARGET="x86_64-pc-windows-gnu" +MACOS_TARGET="aarch64-apple-darwin" + +mkdir -p "$OUTPUT_DIR" + +echo "Building $PROJECT_NAME v$VERSION for multiple platforms..." + +if ! command -v rustup &> /dev/null; then + echo "Error: rustup is not installed. Please install Rust toolchain first." + exit 1 +fi + +rustup target add "$WINDOWS_TARGET" || echo "Windows target already installed" +rustup target add "$MACOS_TARGET" || echo "macOS target already installed" + +echo "Building for Windows (x86_64)..." +cargo build --release --target="$WINDOWS_TARGET" +WINDOWS_BIN_PATH="target/$WINDOWS_TARGET/release/$PROJECT_NAME.exe" + +echo "Building for macOS (ARM64)..." +cargo build --release --target="$MACOS_TARGET" +MACOS_BIN_PATH="target/$MACOS_TARGET/release/$PROJECT_NAME" + +if [ -f "$WINDOWS_BIN_PATH" ]; then + echo "Packaging Windows binary..." + WINDOWS_PACKAGE="$OUTPUT_DIR/${PROJECT_NAME}_${VERSION}_windows_x86_64" + mkdir -p "$WINDOWS_PACKAGE" + cp "$WINDOWS_BIN_PATH" "$WINDOWS_PACKAGE/" + cp README.md LICENSE* "$WINDOWS_PACKAGE/" 2>/dev/null || true + + echo "Creating Windows zip archive..." + (cd "$OUTPUT_DIR" && zip -r "${PROJECT_NAME}_${VERSION}_windows_x86_64.zip" "$(basename "$WINDOWS_PACKAGE")") + + echo "Creating Windows tar.gz archive..." + (cd "$OUTPUT_DIR" && tar -czf "${PROJECT_NAME}_${VERSION}_windows_x86_64.tar.gz" "$(basename "$WINDOWS_PACKAGE")") + + rm -rf "$WINDOWS_PACKAGE" + echo "Windows packages created: + - $OUTPUT_DIR/${PROJECT_NAME}_${VERSION}_windows_x86_64.zip + - $OUTPUT_DIR/${PROJECT_NAME}_${VERSION}_windows_x86_64.tar.gz" +else + echo "Warning: Windows binary not found at $WINDOWS_BIN_PATH" +fi + +if [ -f "$MACOS_BIN_PATH" ]; then + echo "Packaging macOS binary..." + MACOS_PACKAGE="$OUTPUT_DIR/${PROJECT_NAME}_${VERSION}_macos_arm64" + mkdir -p "$MACOS_PACKAGE" + cp "$MACOS_BIN_PATH" "$MACOS_PACKAGE/" + cp README.md LICENSE* "$MACOS_PACKAGE/" 2>/dev/null || true + + echo "Creating macOS zip archive..." + (cd "$OUTPUT_DIR" && zip -r "${PROJECT_NAME}_${VERSION}_macos_arm64.zip" "$(basename "$MACOS_PACKAGE")") + + echo "Creating macOS tar.gz archive..." + (cd "$OUTPUT_DIR" && tar -czf "${PROJECT_NAME}_${VERSION}_macos_arm64.tar.gz" "$(basename "$MACOS_PACKAGE")") + + rm -rf "$MACOS_PACKAGE" + echo "macOS packages created: + - $OUTPUT_DIR/${PROJECT_NAME}_${VERSION}_macos_arm64.zip + - $OUTPUT_DIR/${PROJECT_NAME}_${VERSION}_macos_arm64.tar.gz" +else + echo "Warning: macOS binary not found at $MACOS_BIN_PATH" +fi + +echo "Build and packaging complete! Check the $OUTPUT_DIR directory for the packaged binaries."