# 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 ""` GIT_SHA := `git rev-parse --short HEAD` DOCKER_IMAGE := "ghcr.io/mentos1386/zdravko:sha-"+GIT_SHA STATIC_DIR := "./web/static" _default: @just --list # Run full development environment run: watchexec -r -e tmpl,css just _tailwindcss-build | 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 build -o dist/zdravko cmd/zdravko/main.go ./dist/zdravko --worker # Start server run-server: go build -o dist/zdravko cmd/zdravko/main.go ./dist/zdravko --server # Start temporal run-temporal: go build -o dist/zdravko cmd/zdravko/main.go ./dist/zdravko --temporal # Test test: go test -v ./... # Generates new jwt key pair generate-jwt-key: @openssl genrsa -out jwt.private.pem 2048 > /dev/null 2>&1 @openssl rsa -pubout -in jwt.private.pem -out jwt.public.pem > /dev/null 2>&1 @echo "Private key:" @cat jwt.private.pem | sed -z 's/\n/\\n/g' @echo @echo "Public key:" @cat jwt.public.pem | sed -z 's/\n/\\n/g' @echo # Deploy the application to fly.io deploy-fly: fly deploy --ha=false -c deploy/fly.toml -i {{DOCKER_IMAGE}} # Read local jwt key and set it as fly secret deploy-fly-set-jwt-key-secrets: #!/bin/bash # https://github.com/superfly/flyctl/issues/589 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" # Generate and download all external dependencies. generate: go generate ./... _tailwindcss-build: tailwindcss build -c build/tailwind.config.js -i {{STATIC_DIR}}/css/main.css -o {{STATIC_DIR}}/css/tailwind.css _htmx-download: mkdir -p {{STATIC_DIR}}/js curl -sLo {{STATIC_DIR}}/js/htmx.min.js https://unpkg.com/htmx.org/dist/htmx.min.js _monaco-download: rm -rf {{STATIC_DIR}}/monaco npm install monaco-editor@0.46.0 mv node_modules/monaco-editor/min {{STATIC_DIR}}/monaco rm -rf node_modules # 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-download: mkdir -p {{STATIC_DIR}}/icons curl -sLo {{STATIC_DIR}}/icons/feather-sprite.svg https://unpkg.com/feather-icons/dist/feather-sprite.svg