113 lines
3.0 KiB
YAML
113 lines
3.0 KiB
YAML
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
|