version: '3' vars: BINARY_NAME: linking-tool BUILD_DIR: bin tasks: default: desc: Show available tasks cmds: - task --list dev: desc: Run development servers (Go & SvelteKit) cmds: - pnpm install - pnpm run dev build:frontend: desc: Build frontend only cmds: - | if [ -z "$VITE_APP_VERSION" ]; then if git rev-parse --git-dir > /dev/null 2>&1; then if git describe --tags --exact-match HEAD > /dev/null 2>&1; then VITE_APP_VERSION=$(git describe --tags --exact-match HEAD) else VITE_APP_VERSION=$(git rev-parse --short HEAD) fi else VITE_APP_VERSION=$(node -p "require('./package.json').version") fi fi VITE_APP_VERSION="$VITE_APP_VERSION" pnpm run build build:backend: desc: Build backend binary only cmds: - mkdir -p {{.BUILD_DIR}} - CGO_ENABLED=0 go build -ldflags="-s -w" -o {{.BUILD_DIR}}/{{.BINARY_NAME}} main.go build: desc: Build the single binary web server cmds: - pnpm install - | if [ -z "$VITE_APP_VERSION" ]; then if git rev-parse --git-dir > /dev/null 2>&1; then if git describe --tags --exact-match HEAD > /dev/null 2>&1; then VITE_APP_VERSION=$(git describe --tags --exact-match HEAD) else VITE_APP_VERSION=$(git rev-parse --short HEAD) fi else VITE_APP_VERSION=$(node -p "require('./package.json').version") fi fi VITE_APP_VERSION="$VITE_APP_VERSION" pnpm run build - mkdir -p {{.BUILD_DIR}} - CGO_ENABLED=0 go build -ldflags="-s -w" -o {{.BUILD_DIR}}/{{.BINARY_NAME}} main.go package: desc: Package the application deps: [build] release: desc: Build binaries for all platforms deps: [build] cmds: - task: build-linux-amd64 - task: build-linux-arm64 - task: build-linux-armv6 - task: build-linux-armv7 - task: build-windows-amd64 - task: build-darwin-amd64 - task: build-darwin-arm64 - task: build-freebsd-amd64 build-linux-amd64: desc: Build Linux AMD64 binary cmds: - GOOS=linux GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-amd64 main.go build-linux-arm64: desc: Build Linux ARM64 binary cmds: - GOOS=linux GOARCH=arm64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-arm64 main.go build-linux-armv6: desc: Build Linux ARMv6 binary cmds: - GOOS=linux GOARCH=arm GOARM=6 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-armv6 main.go build-linux-armv7: desc: Build Linux ARMv7 binary cmds: - GOOS=linux GOARCH=arm GOARM=7 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-linux-armv7 main.go build-windows-amd64: desc: Build Windows AMD64 binary cmds: - GOOS=windows GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-windows-amd64.exe main.go build-darwin-amd64: desc: Build Darwin AMD64 binary cmds: - GOOS=darwin GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-darwin-amd64 main.go build-darwin-arm64: desc: Build Darwin ARM64 binary cmds: - GOOS=darwin GOARCH=arm64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-darwin-arm64 main.go build-freebsd-amd64: desc: Build FreeBSD AMD64 binary cmds: - GOOS=freebsd GOARCH=amd64 go build -o {{.BUILD_DIR}}/{{.BINARY_NAME}}-freebsd-amd64 main.go docker-build: desc: Build Docker image (VITE_APP_VERSION env var will be passed as build arg if set) cmds: - | if [ -n "$VITE_APP_VERSION" ]; then docker build --build-arg VITE_APP_VERSION="$VITE_APP_VERSION" -f docker/Dockerfile -t {{.BINARY_NAME}} . else docker build -f docker/Dockerfile -t {{.BINARY_NAME}} . fi docker-run: desc: Run Docker container cmds: - docker run -p 8080:8080 {{.BINARY_NAME}} docker-builder: desc: Build and extract binaries using Docker cmds: - docker build -f docker/Dockerfile.build -t {{.BINARY_NAME}}-build . - docker create --name {{.BINARY_NAME}}-temp {{.BINARY_NAME}}-build - mkdir -p {{.BUILD_DIR}} - docker cp {{.BINARY_NAME}}-temp:/bin/. {{.BUILD_DIR}}/ - docker cp {{.BINARY_NAME}}-temp:/desktop-bin/. {{.BUILD_DIR}}/ - docker rm {{.BINARY_NAME}}-temp podman-build: desc: Build Podman image cmds: - podman build -f docker/Dockerfile -t surveilled . podman-run: desc: Run Podman container cmds: - podman run --rm -p 3000:3000 surveilled podman: desc: Build and run Podman container deps: [podman-build, podman-run] desktop-build: desc: Build desktop application deps: [build] cmds: - mkdir -p desktop/frontend_dist - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails build -s desktop-linux: desc: Build desktop application for Linux deps: [build] cmds: - mkdir -p desktop/frontend_dist - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails build -s -platform linux/amd64 desktop-windows: desc: Build desktop application for Windows deps: [build] cmds: - mkdir -p desktop/frontend_dist - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails build -s -platform windows/amd64 desktop-darwin: desc: Build desktop application for Darwin deps: [build] cmds: - mkdir -p desktop/frontend_dist - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails build -s -platform darwin/universal desktop-dev: desc: Run desktop application in development mode deps: [build] cmds: - mkdir -p desktop/frontend_dist - rm -rf desktop/frontend_dist/* - cp -r build/* desktop/frontend_dist/ - cd desktop && wails dev clean: desc: Clean build artifacts cmds: - rm -rf .svelte-kit build node_modules node_modules/.vite dist package linking-tool tmp {{.BUILD_DIR}} setup: desc: Setup development environment cmds: - corepack enable install: desc: Install dependencies cmds: - pnpm install install:ci: desc: Install dependencies for CI (frozen lockfile) cmds: - pnpm install --frozen-lockfile preview: desc: Preview production build cmds: - pnpm run preview check: desc: Run type checking cmds: - pnpm run check lint: desc: Run linter cmds: - pnpm run lint format: desc: Format code cmds: - pnpm run format version:minor: desc: Bump minor version in package.json cmds: - pnpm version minor --no-git-tag-version version:major: desc: Bump major version in package.json cmds: - pnpm version major --no-git-tag-version