version: '3' vars: VERSION: sh: grep "^version =" pyproject.toml | cut -d '"' -f 2 VCS_REF: sh: git rev-parse --short HEAD 2>/dev/null || echo "unknown" BUILD_DATE: sh: date -u +"%Y-%m-%dT%H:%M:%SZ" DOCKER_BUILD: sh: docker buildx version >/dev/null 2>&1 && echo "docker buildx build" || echo "docker build" DOCKER_BUILD_LOAD: sh: docker buildx version >/dev/null 2>&1 && echo "docker buildx build --load" || echo "docker build" IMAGE_NAME: git.quad4.io/rns-things/rns-page-node tasks: default: desc: Show available tasks cmds: - task --list build: desc: Clean and build sdist and wheel deps: [clean] cmds: - python3 -m build sdist: desc: Build source distribution cmds: - python3 -m build --sdist wheel: desc: Build wheel cmds: - python3 -m build --wheel clean: desc: Remove build artifacts cmds: - rm -rf build dist *.egg-info install: desc: Install built wheel deps: [build] cmds: - pip install dist/*.whl install-dev: desc: Install package in development mode cmds: - pip install -e . lint: desc: Run ruff linter cmds: - ruff check . format: desc: Run ruff formatter with auto-fix cmds: - ruff check --fix . check: desc: Run all code quality checks deps: [lint] test: desc: Run local integration tests cmds: - bash tests/run_tests.sh docker-wheels: desc: Build Python wheels in Docker cmds: - '{{.DOCKER_BUILD}} --target builder -f docker/Dockerfile.build -t rns-page-node-builder .' - docker create --name builder-container rns-page-node-builder true - docker cp builder-container:/src/dist ./dist - docker rm builder-container docker-build: desc: Build runtime Docker image cmds: - > {{.DOCKER_BUILD_LOAD}} --build-arg VERSION={{.VERSION}} --build-arg VCS_REF={{.VCS_REF}} --build-arg BUILD_DATE={{.BUILD_DATE}} -f docker/Dockerfile -t {{.IMAGE_NAME}}:latest -t {{.IMAGE_NAME}}:{{.VERSION}} . docker-run: desc: Run runtime Docker image cmds: - > docker run --rm -it -v ./pages:/app/pages -v ./files:/app/files -v ./node-config:/app/node-config {{.IMAGE_NAME}}:latest --node-name "Page Node" --pages-dir /app/pages --files-dir /app/files --identity-dir /app/node-config --announce-interval 360 docker-build-rootless: desc: Build rootless runtime Docker image cmds: - > {{.DOCKER_BUILD_LOAD}} --build-arg VERSION={{.VERSION}} --build-arg VCS_REF={{.VCS_REF}} --build-arg BUILD_DATE={{.BUILD_DATE}} -f docker/Dockerfile.rootless -t {{.IMAGE_NAME}}:latest-rootless -t {{.IMAGE_NAME}}:{{.VERSION}}-rootless . docker-run-rootless: desc: Run rootless runtime Docker image cmds: - > docker run --rm -it -v ./pages:/app/pages -v ./files:/app/files -v ./node-config:/app/node-config {{.IMAGE_NAME}}:latest-rootless --node-name "Page Node" --pages-dir /app/pages --files-dir /app/files --identity-dir /app/node-config --announce-interval 360 docker-test: desc: Build and run integration tests in Docker cmds: - '{{.DOCKER_BUILD_LOAD}} -f docker/Dockerfile.tests -t rns-page-node-tests .' - docker run --rm rns-page-node-tests docker-clean: desc: Remove Docker images and containers cmds: - docker rmi {{.IMAGE_NAME}}:latest {{.IMAGE_NAME}}:{{.VERSION}} 2>/dev/null || true - docker rmi {{.IMAGE_NAME}}:latest-rootless {{.IMAGE_NAME}}:{{.VERSION}}-rootless 2>/dev/null || true - docker rmi rns-page-node-builder rns-page-node-tests 2>/dev/null || true run: desc: Run rns-page-node locally cmds: - python3 -m rns_page_node.main run-dev: desc: Run rns-page-node with development settings cmds: - python3 -m rns_page_node.main --log-level DEBUG venv: desc: Create Python virtual environment cmds: - python3 -m venv .venv - 'echo "Virtual environment created. Activate with: source .venv/bin/activate"' deps-install: desc: Install dependencies using pip cmds: - pip install -r requirements.txt || pip install -e . deps-update: desc: Update dependencies cmds: - pip install --upgrade -r requirements.txt || pip install --upgrade -e . version: desc: Show current version cmds: - 'echo "Version: {{.VERSION}}"' - 'echo "VCS Ref: {{.VCS_REF}}"' - 'echo "Build Date: {{.BUILD_DATE}}"' setup-dirs: desc: Create required directories for running the node cmds: - mkdir -p pages files node-config nix-shell: desc: Enter Nix development shell cmds: - nix develop nix-build: desc: Build with Nix cmds: - nix build all: desc: Run build, lint, and test deps: [build, check, test]