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