# Always use devbox environment to run commands. set shell := ["devbox", "run"] # Load dotenv set dotenv-load # Load public and private keys export JWT_PRIVATE_KEY := `cat jwt.private.pem || echo ""` export JWT_PUBLIC_KEY := `cat jwt.public.pem || echo ""` DOCKER_REGISTRY := "ghcr.io/mentos1386/zdravko" GIT_SHA := `git rev-parse --short HEAD` DOCKER_IMAGE := "{{ DOCKER_REGISTRY }}:sha-{{ GIT_SHA }}" STATIC_DIR := "./web/static" export CGO_ENABLED := "0" import 'build/Justfile' import 'deploy/Justfile' _default: @just --list # Run full development environment run: watchexec -r -e tmpl,css just tailwindcss | sed -e 's/^/tailwind: /;' & sleep 1 just run-temporal | sed -e 's/^/temporal: /;' & sleep 1 watchexec -r -e go,tmpl,css just run-server # Start worker run-worker: go run cmd/zdravko/main.go --worker # Start server run-server: go run cmd/zdravko/main.go --server # Start temporal run-temporal: go run cmd/zdravko/main.go --temporal # Test test: go test -v ./... # Generates new jwt key pair generate-jwt-key: openssl genrsa -out jwt.private.pem 2048 openssl rsa -pubout -in jwt.private.pem -out jwt.public.pem # Run Docker application. run-docker: build docker run -p 8080:8080 \ -it --rm \ -e SESSION_SECRET \ -e OAUTH2_CLIENT_ID \ -e OAUTH2_CLIENT_SECRET \ -e OAUTH2_ENDPOINT_TOKEN_URL \ -e OAUTH2_ENDPOINT_AUTH_URL \ -e OAUTH2_ENDPOINT_USER_INFO_URL \ -e OAUTH2_ENDPOINT_LOGOUT_URL \ -e JWT_PRIVATE_KEY \ -e JWT_PUBLIC_KEY \ -e WORKER_GROUP_TOKEN \ {{DOCKER_IMAGE}} --server --temporal --worker # Start Sqlite web client sqlite-web: sqlite_web zdravko.db # New migration file migration-new name: #!/bin/bash FILENAME="database/sqlite/migrations/`date --iso-8601`_{{name}}.sql" cat < $FILENAME -- +migrate Up -- SQL in section 'Up' is executed when this migration is applied -- +migrate Down -- SQL in section 'Down' is executed when this migration is rolled back EOF echo "Created migration file: $FILENAME" update-dependencies: # Updating temporal dependencies is a bit tricky # as finding the right combination of api, server and ui-server # that work together is not easy. # Any version of ui-server > 2.23.0 < 2.27.2 is broken for us. # Using latest of everything results (at the time of writing) in to # working server but broken ui-server (404 when it tries to list namespaces). go get -u -t \ go.k6.io/k6@v0.51.0 \ github.com/temporalio/ui-server/v2@v2.23.0 \ go.temporal.io/server@v1.23.0 \ go.temporal.io/api@v1.29.2 \ go.temporal.io/sdk@v1.26.0 \ ./... go mod tidy # Run go generate and process tailwindcss generate: tailwindcss go generate ./... tailwindcss: mkdir -p {{STATIC_DIR}}/css tailwindcss build -c build/tailwind.config.js -i {{STATIC_DIR}}/css/main.css -o {{STATIC_DIR}}/css/tailwind.css static-dependencies: npm install static-clean: find {{STATIC_DIR}} -type f -not -path '{{STATIC_DIR}}/static.go' -not -path '{{STATIC_DIR}}/css/*' -exec rm -f {} \; static: static-dependencies static-clean tailwindcss # HTMX mkdir -p {{STATIC_DIR}}/js cp node_modules/htmx.org/dist/htmx.min.js {{STATIC_DIR}}/js/htmx.min.js # Monaco cp -r node_modules/monaco-editor/min/* {{STATIC_DIR}}/monaco # We only care about javascript language find {{STATIC_DIR}}/monaco/vs/basic-languages/ \ -type d \ -not -name 'javascript' \ -not -name 'typescript' \ -not -name 'yaml' \ -not -name 'basic-languages' \ -prune -exec rm -rf {} \; # Feather Icons mkdir -p {{STATIC_DIR}}/icons cp node_modules/feather-icons/dist/feather-sprite.svg {{STATIC_DIR}}/icons/feather-sprite.svg