diff --git a/workflow-prepare.sh b/workflow-prepare.sh new file mode 100755 index 0000000..a195e35 --- /dev/null +++ b/workflow-prepare.sh @@ -0,0 +1,78 @@ +#!/bin/bash +# Workflow prepare script for CI/CD +# Installs CGO dependencies for SQLite support + +set -e + +echo "=== GoHoarder Workflow Prepare ===" +echo "Host OS: $(uname -s)" +echo "Target GOOS: ${TARGET_GOOS:-auto}" +echo "Target GOARCH: ${TARGET_GOARCH:-auto}" + +# Detect host OS +HOST_OS=$(uname -s | tr '[:upper:]' '[:lower:]') + +# Install SQLite development headers based on platform +case "$HOST_OS" in + linux*) + echo "Installing SQLite development headers for Linux..." + if command -v apt-get &> /dev/null; then + # Ubuntu/Debian + sudo apt-get update -qq + sudo apt-get install -y -qq libsqlite3-dev + elif command -v yum &> /dev/null; then + # RHEL/CentOS + sudo yum install -y sqlite-devel + elif command -v apk &> /dev/null; then + # Alpine + sudo apk add --no-cache sqlite-dev + fi + echo "✓ SQLite headers installed" + ;; + + darwin*) + echo "Installing SQLite for macOS..." + # macOS usually has SQLite via Xcode Command Line Tools + # but ensure it's available via Homebrew if needed + if ! pkg-config --exists sqlite3; then + brew install sqlite3 + fi + echo "✓ SQLite available" + ;; + + mingw*|msys*|cygwin*) + echo "Installing SQLite for Windows..." + # Download SQLite amalgamation for Windows + SQLITE_VERSION="3470200" + SQLITE_YEAR="2024" + SQLITE_DIR="/c/sqlite" + SQLITE_URL="https://www.sqlite.org/${SQLITE_YEAR}/sqlite-amalgamation-${SQLITE_VERSION}.zip" + + mkdir -p "$SQLITE_DIR" + curl -sSL "$SQLITE_URL" -o /tmp/sqlite.zip + unzip -q /tmp/sqlite.zip -d /tmp/ + cp /tmp/sqlite-amalgamation-${SQLITE_VERSION}/* "$SQLITE_DIR/" + rm -rf /tmp/sqlite.zip /tmp/sqlite-amalgamation-${SQLITE_VERSION} + + echo "CGO_CFLAGS=-I${SQLITE_DIR}" >> "$GITHUB_ENV" + echo "CGO_LDFLAGS=-L${SQLITE_DIR}" >> "$GITHUB_ENV" + echo "✓ SQLite setup complete" + ;; + + *) + echo "Unknown OS: $HOST_OS - skipping SQLite setup" + ;; +esac + +# Verify SQLite is available +echo "" +echo "=== Verifying SQLite availability ===" +if pkg-config --exists sqlite3; then + echo "✓ SQLite pkg-config found" + pkg-config --modversion sqlite3 +else + echo "⚠ SQLite pkg-config not found (may still work via system headers)" +fi + +echo "" +echo "=== Workflow prepare complete ==="