# Platform Module - Platform-specific operations # =============================================== # Show detailed platform help @platform-help: echo "๐ŸŒ PLATFORM MODULE HELP" echo "=======================" echo "" echo "This module handles platform-specific builds including:" echo "โ€ข Individual platform builds (Linux, macOS, Windows)" echo "โ€ข Cross-compilation management" echo "โ€ข Platform-specific testing" echo "โ€ข Architecture-specific optimizations" echo "" echo "RECIPES:" echo " linux Build for Linux only" echo " macos Build for macOS only" echo " windows Build for Windows only" echo " all-platforms Build for all supported platforms" echo " platform-test Test platform-specific builds" echo "" echo "SUPPORTED PLATFORMS:" echo " โ€ข linux-amd64 Linux 64-bit x86" echo " โ€ข macos-amd64 macOS 64-bit Intel" echo " โ€ข macos-arm64 macOS Apple Silicon" echo " โ€ข windows-amd64 Windows 64-bit x86" echo "" echo "EXAMPLES:" echo " just linux # Linux-only build" echo " just all-platforms # All supported platforms" echo " just platform-test # Test platform builds" # Build for Linux only @linux: echo "๐Ÿง Building for Linux..." {{nu}} {{tools_dir}}/build/compile-platform.nu \ --target linux-amd64 \ --{{build_mode}} \ --output-dir {{dist_dir}}/platform/linux \ --verbose={{verbose}} {{nu}} {{tools_dir}}/distribution/generate-distribution.nu \ --version {{version}} \ --platforms linux-amd64 \ --variants {{variants}} \ --output-dir {{dist_dir}} \ --verbose={{verbose}} echo "โœ… Linux build completed" # Build for macOS only @macos: echo "๐ŸŽ Building for macOS..." {{nu}} {{tools_dir}}/build/compile-platform.nu \ --target macos-amd64 \ --{{build_mode}} \ --output-dir {{dist_dir}}/platform/macos \ --verbose={{verbose}} {{nu}} {{tools_dir}}/distribution/generate-distribution.nu \ --version {{version}} \ --platforms macos-amd64 \ --variants {{variants}} \ --output-dir {{dist_dir}} \ --verbose={{verbose}} echo "โœ… macOS build completed" # Build for Windows only @windows: echo "๐ŸชŸ Building for Windows..." {{nu}} {{tools_dir}}/build/compile-platform.nu \ --target windows-amd64 \ --{{build_mode}} \ --output-dir {{dist_dir}}/platform/windows \ --verbose={{verbose}} {{nu}} {{tools_dir}}/distribution/generate-distribution.nu \ --version {{version}} \ --platforms windows-amd64 \ --variants {{variants}} \ --output-dir {{dist_dir}} \ --verbose={{verbose}} echo "โœ… Windows build completed" # Build for all supported platforms @all-platforms: echo "๐ŸŒ Building for all supported platforms..." just linux just macos just windows echo "โœ… All platform builds completed" # Build for macOS Apple Silicon @macos-arm64: echo "๐ŸŽ Building for macOS Apple Silicon..." {{nu}} {{tools_dir}}/build/compile-platform.nu \ --target macos-arm64 \ --{{build_mode}} \ --output-dir {{dist_dir}}/platform/macos-arm64 \ --verbose={{verbose}} echo "โœ… macOS Apple Silicon build completed" # Test platform-specific builds @platform-test: #!/usr/bin/env bash echo "๐Ÿงช Testing platform-specific builds..." CURRENT_PLATFORM=$(uname -s | tr '[:upper:]' '[:lower:]') if [ "$CURRENT_PLATFORM" = "linux" ]; then just linux echo "Testing Linux build..." {{nu}} {{tools_dir}}/test/platform-test.nu --platform linux --dist-dir {{dist_dir}} elif [ "$CURRENT_PLATFORM" = "darwin" ]; then just macos echo "Testing macOS build..." {{nu}} {{tools_dir}}/test/platform-test.nu --platform macos --dist-dir {{dist_dir}} else echo "Platform testing not supported on $CURRENT_PLATFORM" fi echo "โœ… Platform testing completed" # Cross-compile for specific target @cross-compile TARGET: echo "๐Ÿ”„ Cross-compiling for {{TARGET}}..." {{nu}} {{tools_dir}}/build/compile-platform.nu \ --target {{TARGET}} \ --{{build_mode}} \ --output-dir {{dist_dir}}/platform/{{TARGET}} \ --verbose={{verbose}} echo "โœ… Cross-compilation for {{TARGET}} completed" # Show available build targets @targets: echo "๐ŸŽฏ Available Build Targets" echo "==========================" rustup target list --installed echo "" echo "Supported by this project:" echo " x86_64-unknown-linux-gnu # Linux x86_64" echo " x86_64-apple-darwin # macOS Intel" echo " aarch64-apple-darwin # macOS Apple Silicon" echo " x86_64-pc-windows-msvc # Windows x86_64" # Install additional build targets @install-targets: echo "๐Ÿ“ฆ Installing additional build targets..." rustup target add x86_64-unknown-linux-gnu rustup target add x86_64-apple-darwin rustup target add aarch64-apple-darwin rustup target add x86_64-pc-windows-msvc echo "โœ… Build targets installed" # Platform-specific optimization builds @optimize-native: echo "โšก Building with native optimizations..." {{nu}} {{tools_dir}}/build/compile-platform.nu \ --target native \ --{{build_mode}} \ --optimize-native \ --output-dir {{dist_dir}}/platform/native \ --verbose={{verbose}} echo "โœ… Native optimized build completed" # Build for container deployment @container-platform: echo "๐Ÿณ Building for container deployment..." {{nu}} {{tools_dir}}/build/compile-platform.nu \ --target x86_64-unknown-linux-musl \ --{{build_mode}} \ --static-link \ --output-dir {{dist_dir}}/platform/container \ --verbose={{verbose}} echo "โœ… Container platform build completed" # Show platform-specific information @platform-info: echo "๐ŸŒ Platform Information" echo "======================" echo "Current platform: $(uname -s -m)" echo "Rust host triple: $(rustc -vV | grep host | cut -d' ' -f2)" echo "Available targets: $(rustup target list --installed | tr '\n' ' ')" echo "" echo "Build configuration:" echo " Default target: {{rust_target}}" echo " Build mode: {{build_mode}}" echo " Platforms: {{platforms}}" echo "" echo "Platform directories:" ls -la {{dist_dir}}/platform/ 2>/dev/null || echo " No platform builds found" # Clean platform-specific artifacts @platform-clean: echo "๐Ÿงน Cleaning platform artifacts..." rm -rf {{dist_dir}}/platform mkdir -p {{dist_dir}}/platform echo "โœ… Platform artifacts cleaned" # Platform-specific package creation @platform-packages: #!/usr/bin/env bash echo "๐Ÿ“ฆ Creating platform-specific packages..." for platform in linux macos windows; do if [ -d "{{dist_dir}}/platform/$platform" ]; then echo "Creating package for $platform..." {{nu}} {{tools_dir}}/package/create-platform-package.nu \ --platform "$platform" \ --source-dir "{{dist_dir}}/platform/$platform" \ --output-dir "{{packages_dir}}/platform" \ --version {{version}} \ --verbose={{verbose}} fi done echo "โœ… Platform-specific packages created"