name: 'Pake Web App Builder' description: 'Transform any webpage into a lightweight desktop app using Rust and Tauri' author: 'tw93' branding: icon: 'package' color: 'blue' inputs: url: description: 'Target URL to package' required: true name: description: 'Application name' required: true output-dir: description: 'Output directory for packages' required: false default: 'dist' icon: description: 'Custom app icon URL or path' required: false width: description: 'Window width' required: false default: '1200' height: description: 'Window height' required: false default: '780' debug: description: 'Enable debug mode' required: false default: 'false' outputs: package-path: description: 'Path to the generated package' runs: using: 'composite' steps: - name: Setup Environment shell: bash run: | # Install Node.js dependencies npm install # Build Pake CLI if not exists if [ ! -f "dist/cli.js" ]; then npm run cli:build fi # Ensure node is accessible in subsequent steps echo "$(npm bin)" >> $GITHUB_PATH # Install Rust/Cargo if needed if ! command -v cargo &> /dev/null; then curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y source ~/.cargo/env echo "$HOME/.cargo/bin" >> $GITHUB_PATH fi - name: Build Pake App shell: bash run: | # Build arguments ARGS=("${{ inputs.url }}") ARGS+=("--name" "${{ inputs.name }}") if [ -n "${{ inputs.icon }}" ]; then ARGS+=("--icon" "${{ inputs.icon }}") fi ARGS+=("--width" "${{ inputs.width }}") ARGS+=("--height" "${{ inputs.height }}") if [ "${{ inputs.debug }}" == "true" ]; then ARGS+=("--debug") fi # Create output directory mkdir -p "${{ inputs.output-dir }}" export PAKE_CREATE_APP=1 # Run Pake CLI echo "🔧 Running: node dist/cli.js ${ARGS[*]}" node dist/cli.js "${ARGS[@]}" # Find generated package and set output PACKAGE=$(find src-tauri/target -type f \( -name "*.deb" -o -name "*.exe" -o -name "*.msi" -o -name "*.dmg" \) 2>/dev/null | head -1) # If no file packages found, look for .app directory (macOS) if [ -z "$PACKAGE" ]; then PACKAGE=$(find src-tauri/target -type d -name "*.app" 2>/dev/null | head -1) fi if [ -n "$PACKAGE" ]; then # Move to output directory BASENAME=$(basename "$PACKAGE") mv "$PACKAGE" "${{ inputs.output-dir }}/$BASENAME" 2>/dev/null || cp -r "$PACKAGE" "${{ inputs.output-dir }}/$BASENAME" echo "package-path=${{ inputs.output-dir }}/$BASENAME" >> $GITHUB_OUTPUT echo "✅ Package created: ${{ inputs.output-dir }}/$BASENAME" else echo "❌ No package found" exit 1 fi