monorepo/native/desktop/maplefile/Taskfile.yml

201 lines
6.3 KiB
YAML

version: "3"
vars:
APP_NAME: maplefile
WAILS_VERSION: v2.11.0
tasks:
# Development workflow
dev:
desc: Start app in development mode with hot reload (uses local backend)
env:
MAPLEFILE_MODE: dev
cmds:
- wails dev -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=dev -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=dev"
dev:production:
desc: Start app in development mode with production backend
env:
MAPLEFILE_MODE: production
cmds:
- wails dev -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
dev:frontend:
desc: Start frontend development server only
dir: frontend
cmds:
- npm run dev
dev:build:
desc: Build development version (fast, no optimization)
cmds:
- wails build -dev
# Building
build:
desc: Build production binary for current platform (production backend)
cmds:
- wails build -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
build:dev:
desc: Build binary for development (local backend)
cmds:
- wails build -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=dev -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=dev"
build:all:
desc: Build for all platforms
cmds:
- echo "Building for macOS..."
- wails build -platform darwin/universal -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
- echo "Building for Linux..."
- wails build -platform linux/amd64 -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
- echo "Building for Windows..."
- wails build -platform windows/amd64 -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
- echo "✅ All builds complete"
build:mac:
desc: Build for macOS (Universal binary)
cmds:
- wails build -platform darwin/universal -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
build:linux:
desc: Build for Linux (amd64)
cmds:
- wails build -platform linux/amd64 -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
build:windows:
desc: Build for Windows (amd64)
cmds:
- wails build -platform windows/amd64 -ldflags "-X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/app.BuildMode=production -X codeberg.org/mapleopentech/monorepo/native/desktop/maplefile/internal/config.BuildMode=production"
# Frontend tasks
frontend:install:
desc: Install frontend dependencies
dir: frontend
cmds:
- npm install
frontend:build:
desc: Build frontend for production
dir: frontend
cmds:
- npm run build
frontend:lint:
desc: Lint frontend code
dir: frontend
cmds:
- npm run lint
frontend:clean:
desc: Clean frontend build artifacts and dependencies
dir: frontend
cmds:
- rm -rf node_modules dist
# Go tasks
go:tidy:
desc: Tidy Go modules
cmds:
- go mod tidy
go:vendor:
desc: Vendor Go dependencies
cmds:
- go mod vendor
go:test:
desc: Run Go tests
cmds:
- go test ./... -v
go:lint:
desc: Run Go linters
cmds:
- go vet ./...
go:nilaway:
desc: Run nilaway static analysis for nil pointer dereferences
cmds:
- go run go.uber.org/nilaway/cmd/nilaway ./...
go:format:
desc: Format Go code
cmds:
- go fmt ./...
# Wails tasks
wails:doctor:
desc: Check Wails installation and dependencies
cmds:
- wails doctor
wails:version:
desc: Show Wails version
cmds:
- wails version
# Utility tasks
clean:
desc: Clean build artifacts
cmds:
- rm -rf build/bin
- rm -rf frontend/dist
- echo "✅ Build artifacts cleaned"
clean:all:
desc: Clean all build artifacts and dependencies
deps: [clean]
cmds:
- rm -rf frontend/node_modules
- rm -rf vendor
- echo "✅ All artifacts and dependencies cleaned"
setup:
desc: Initial project setup (install dependencies)
cmds:
- echo "📦 Installing frontend dependencies..."
- task: frontend:install
- echo "📦 Tidying Go modules..."
- task: go:tidy
- echo "✅ Setup complete! Run 'task dev' to start development"
check:
desc: Run all checks (format, lint, nilaway, test)
cmds:
- echo "🔍 Formatting Go code..."
- task: go:format
- echo "🔍 Linting Go code..."
- task: go:lint
- echo "🔍 Running nilaway analysis..."
- task: go:nilaway
- echo "🔍 Running tests..."
- task: go:test
- echo "🔍 Linting frontend..."
- task: frontend:lint
- echo "✅ All checks passed"
# Package tasks
package:
desc: Package the application for distribution
deps: [build]
cmds:
- echo "📦 Packaging application..."
- echo "Binary located in build/bin/"
- echo "✅ Package complete"
# Development helpers
info:
desc: Show project information
cmds:
- echo "Application {{.APP_NAME}}"
- echo "Wails Version {{.WAILS_VERSION}}"
- wails version
- echo ""
- echo "Build directory build/bin"
# Default task
default:
desc: Show available tasks
cmds:
- task --list