bonfire-app/justfile

781 lines
29 KiB
Makefile
Raw Normal View History

2022-05-23 02:20:39 +00:00
# recipes for the `just` command runner: https://just.systems
# how to install: https://github.com/casey/just#packages
2023-04-03 01:18:16 +00:00
# we load all vars from .env file into the env of just commands
set dotenv-load
# and export just vars as env vars
set export
2022-05-23 02:20:39 +00:00
## Main configs - override these using env vars
# what flavour do we want?
FLAVOUR := env_var_or_default('FLAVOUR', "classic")
FLAVOUR_PATH := env_var_or_default('FLAVOUR_PATH', "flavours/" + FLAVOUR)
# do we want to use Docker? set as env var:
# - WITH_DOCKER=total : use docker for everything (default)
# - WITH_DOCKER=partial : use docker for services like the DB
2023-04-16 22:13:10 +00:00
# - WITH_DOCKER=easy : use docker for services like the DB & compiled utilities (deprecated, now same as partial)
2022-05-23 02:20:39 +00:00
# - WITH_DOCKER=no : please no
WITH_DOCKER := env_var_or_default('WITH_DOCKER', "total")
MIX_ENV := env_var_or_default('MIX_ENV', "dev")
2023-03-15 19:46:55 +00:00
APP_NAME := "bonfire"
APP_DOCKER_REPO := "bonfirenetworks/"+APP_NAME
APP_DOCKER_REPO_ALT := "ghcr.io/bonfire-networks/bonfire-app"
APP_DOCKER_IMAGE := env_var_or_default('APP_DOCKER_IMAGE', APP_DOCKER_REPO+":latest-" +FLAVOUR)
2022-10-17 01:02:24 +00:00
DB_DOCKER_IMAGE := if arch() == "aarch64" { "ghcr.io/baosystems/postgis:12-3.3" } else { env_var_or_default('DB_DOCKER_IMAGE', "postgis/postgis:12-3.3-alpine") }
2022-05-23 02:20:39 +00:00
## Other configs - edit these here if necessary
2023-02-05 02:33:36 +00:00
EXT_PATH := "extensions/"
2022-11-29 22:59:22 +00:00
EXTRA_FORKS_PATH := "forks/"
2022-06-24 21:42:35 +00:00
APP_VSN_EXTRA := "beta"
2022-05-23 02:20:39 +00:00
APP_REL_DOCKERFILE :="Dockerfile.release"
APP_REL_DOCKERCOMPOSE :="docker-compose.release.yml"
APP_REL_CONTAINER := APP_NAME + "_release"
WEB_CONTAINER := APP_NAME +"_web"
APP_VSN := `grep -m 1 'version:' mix.exs | cut -d '"' -f2`
2023-02-05 02:59:10 +00:00
APP_BUILD := env_var_or_default('APP_BUILD', `git rev-parse --short HEAD || echo unknown`)
2022-05-23 02:20:39 +00:00
CONFIG_PATH := FLAVOUR_PATH + "/config"
UID := `id -u`
GID := `id -g`
2023-04-03 01:20:19 +00:00
PROXY_CADDYFILE_PATH := if env_var('PUBLIC_PORT') == "443" { "./config/deploy/Caddyfile2-https" } else { "./config/deploy/Caddyfile2" }
2023-04-03 01:18:16 +00:00
2022-12-10 20:55:29 +00:00
ENV_ENV := if MIX_ENV == "test" { "dev" } else { MIX_ENV }
2022-06-16 22:34:16 +00:00
## Configure just
# choose shell for running recipes
set shell := ["bash", "-uc"]
2022-05-23 02:20:39 +00:00
# set shell := ["bash", "-uxc"]
2022-06-16 22:34:16 +00:00
# support args like $1, $2, etc, and $@ for all args
2022-05-23 02:20:39 +00:00
set positional-arguments
#### GENERAL SETUP RELATED COMMANDS ####
help:
@echo "Just commands for Bonfire:"
@just --list
2022-11-30 06:37:19 +00:00
@pre-setup flavour='classic':
2022-12-10 20:55:29 +00:00
echo "Using flavour '$flavour' at flavours/$flavour with env '$MIX_ENV' with vars from ./flavours/$flavour/config/$ENV_ENV/.env "
mkdir -p ./data
mkdir -p ./config
2023-03-23 22:43:26 +00:00
-rm ./config/deps.flavour.* 2> /dev/null
-rm ./config/flavour_* 2> /dev/null
mkdir -p ./flavours/$flavour/config/prod/
mkdir -p ./flavours/$flavour/config/dev/
cd config && ln -sfn ../flavours/classic/config/* ./ && ln -sfn ../flavours/$flavour/config/* ./
2023-05-20 08:18:43 +00:00
test -f ./flavours/$flavour/config/$ENV_ENV/.env || (cd flavours/$flavour/config && cat ./templates/public.env ./templates/not_secret.env > ./$ENV_ENV/.env && echo "MIX_ENV=$MIX_ENV" >> ./$ENV_ENV/.env && echo "FLAVOUR=$flavour" >> ./$ENV_ENV/.env)
2022-11-30 06:37:19 +00:00
touch ./config/deps.path
2022-11-30 06:24:55 +00:00
-rm .env
2022-12-10 20:55:29 +00:00
ln -sf ./config/$ENV_ENV/.env ./.env
2022-11-30 06:37:19 +00:00
mkdir -p extensions/
mkdir -p forks/
mkdir -p data/uploads/
mkdir -p priv/static/data
mkdir -p data/search/dev
chmod 700 .erlang.cookie
2022-05-23 02:20:39 +00:00
# Initialise env files, and create some required folders, files and softlinks
2022-06-20 02:30:53 +00:00
config:
@just flavour $FLAVOUR
# Initialise a specific flavour, with its env files, and create some required folders, files and softlinks
2023-03-23 23:49:51 +00:00
@flavour select_flavour:
echo "Switching to flavour '$select_flavour'..."
2022-11-30 06:24:55 +00:00
just pre-setup $select_flavour
2023-03-29 06:38:11 +00:00
{{ if MIX_ENV == "prod" { "just setup-prod" } else { "just setup-dev" } }}
2023-03-23 23:49:51 +00:00
echo "You can now edit your config for flavour '$select_flavour' in /.env and ./config/ more generally."
2022-05-23 02:20:39 +00:00
2022-11-30 06:37:19 +00:00
@pre-init: assets-ln
rm -rf ./priv/repo
2023-02-05 03:03:44 +00:00
mkdir -p data
2022-11-30 06:37:19 +00:00
cp -rn $FLAVOUR_PATH/repo ./priv/repo
rm -rf ./data/current_flavour
ln -sf ../$FLAVOUR_PATH ./data/current_flavour
2022-12-10 20:55:29 +00:00
ln -sf ./config/$ENV_ENV/.env ./.env
2022-11-30 06:37:19 +00:00
mkdir -p priv/static/public
echo "Using $MIX_ENV env, with flavour: $FLAVOUR at path: $FLAVOUR_PATH"
2022-05-23 02:20:39 +00:00
init: pre-init services
2022-11-30 06:37:19 +00:00
@echo "Light that fire! $APP_NAME with $FLAVOUR flavour in $MIX_ENV - docker:$WITH_DOCKER - $APP_VSN - $APP_BUILD - $FLAVOUR_PATH - {{os_family()}}/{{os()}} on {{arch()}}"
2022-05-23 02:20:39 +00:00
#### COMMON COMMANDS ####
2023-03-29 06:38:11 +00:00
setup-dev:
just build
2023-03-23 22:48:45 +00:00
just deps-clean-data
just deps-clean-api
just deps-clean-unused
just deps-get
2023-03-29 06:38:11 +00:00
setup-prod:
2022-05-23 02:20:39 +00:00
just build
2023-03-29 06:39:57 +00:00
just deps-get --only prod
2022-05-23 02:20:39 +00:00
# Prepare environment and dependencies
prepare:
just pre-setup $FLAVOUR
just build
2023-03-29 06:38:11 +00:00
prepare-prod:
2022-05-23 02:20:39 +00:00
# Run the app in development
2023-03-01 21:42:57 +00:00
@dev *args='':
MIX_ENV=dev just dev-run {{args}}
2022-05-23 02:20:39 +00:00
2023-02-04 04:50:23 +00:00
@dev-extra:
iex --sname extra --remsh dev
2023-03-01 21:42:57 +00:00
dev-run *args='': init
2023-03-24 02:23:18 +00:00
{{ if WITH_DOCKER == "total" { "just dev-docker $args" } else { "iex --sname dev -S mix phx.server $args" } }}
2023-02-16 01:38:03 +00:00
# TODO: pass args to docker as well
2022-05-23 02:20:39 +00:00
2022-11-30 00:20:49 +00:00
@dev-remote: init
2023-03-24 02:23:18 +00:00
{{ if WITH_DOCKER == "total" { "just dev-docker -e WITH_FORKS=0" } else { "WITH_FORKS=0 iex -S mix phx.server" } }}
2023-04-03 01:05:23 +00:00
dev-proxied: docker-stop-web
2023-03-24 03:11:06 +00:00
docker compose --profile proxy up -d
2023-03-24 03:24:10 +00:00
docker logs bonfire_web -f
dev-proxied-iex:
2023-03-24 03:20:18 +00:00
docker compose --profile proxy exec web iex --sname extra --remsh dev
2023-03-24 02:23:18 +00:00
dev-docker *args='': docker-stop-web
2023-03-24 02:29:23 +00:00
docker compose $args run --name $WEB_CONTAINER --service-ports web
2022-11-30 00:20:49 +00:00
2022-05-23 02:20:39 +00:00
# Generate docs from code & readmes
docs:
2022-11-29 06:48:46 +00:00
just mix docs
2022-05-23 02:20:39 +00:00
2022-09-06 20:59:28 +00:00
# Analyse the codebase and generate some reports. Requires Graphviz and SQLite
arch:
just mix arch.explore.static
just mix arch.explore.xrefs
just mix arch.explore.apps
2022-09-08 02:50:23 +00:00
-MIX_ENV=test just mix arch.explore.coverage
2022-09-06 20:59:28 +00:00
just mix arch.dsm
2022-09-08 02:50:23 +00:00
just mix arch.report.html
mkdir -p reports/dev/static/html/data/
just mix arch.apps.xref --format mermaid --out reports/dev/static/html/data/apps.mermaid
just mix arch.apps.xref --format svg --out reports/dev/static/html/data/apps.svg
# just mix arch.xref --format svg --out reports/dev/static/modules.png Bonfire.Web.Router Bonfire.UI.Social.Routes Bonfire.UI.Me.Routes
2022-09-06 20:59:28 +00:00
2023-02-16 01:38:03 +00:00
# Compile the app + extensions
compile *args='':
just mix bonfire.deps.compile $args
just mix compile $args
# Force the app + extensions to recompile
recompile *args='':
just compile --force $args
2022-05-23 02:20:39 +00:00
dev-test:
2022-10-23 21:01:21 +00:00
@MIX_ENV=test START_SERVER=yes just dev-run
2022-05-23 02:20:39 +00:00
# Run the app in dev mode, as a background service
dev-bg: init
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER == "total" { "just docker-stop-web && docker compose run --detach --name $WEB_CONTAINER --service-ports web elixir -S mix phx.server" } else { 'elixir --erl "-detached" -S mix phx.server" && echo "Running in background..." && (ps au | grep beam)' } }}
2022-05-23 02:20:39 +00:00
# Run latest database migrations (eg. after adding/upgrading an app/extension)
db-migrate:
2022-06-23 01:16:54 +00:00
just mix "ecto.migrate"
2022-05-23 02:20:39 +00:00
# Run latest database seeds (eg. inserting required data after adding/upgrading an app/extension)
2022-06-23 01:16:54 +00:00
db-seeds: db-migrate
just mix "ecto.seeds"
2022-05-23 02:20:39 +00:00
# Reset the DB (caution: this means DATA LOSS)
db-reset: init dev-search-reset db-pre-migrations
2022-06-23 01:16:54 +00:00
just mix "ecto.reset"
2022-05-23 02:20:39 +00:00
2022-06-23 01:16:54 +00:00
dev-search-reset: dev-search-reset-docker
2022-05-23 02:20:39 +00:00
rm -rf data/search/dev
2022-06-23 01:16:54 +00:00
dev-search-reset-docker:
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER != "no" { "docker compose rm -s -v search" } else {""} }}
2022-06-23 01:16:54 +00:00
2022-05-23 02:20:39 +00:00
# Rollback previous DB migration (caution: this means DATA LOSS)
db-rollback:
2022-06-23 01:16:54 +00:00
just mix "ecto.rollback"
2022-05-23 02:20:39 +00:00
# Rollback ALL DB migrations (caution: this means DATA LOSS)
db-rollback-all:
just mix "ecto.rollback --all"
#### UPDATE COMMANDS ####
# Update the dev app and all dependencies/extensions/forks, and run migrations
update: init update-repo
just prepare
just update-forks
just update-deps
just mix deps.get
2022-11-30 06:24:55 +00:00
just deps-post-get
2022-06-23 01:16:54 +00:00
just mix "ecto.migrate"
2023-01-04 21:19:59 +00:00
just js-deps-get
just mix compile
2022-05-23 02:20:39 +00:00
# Update the app and Bonfire extensions in ./deps
update-app: update-repo update-deps
2022-09-15 19:43:27 +00:00
pre-update-deps:
2022-05-23 02:20:39 +00:00
@rm -rf deps/*/assets/pnpm-lock.yaml
@rm -rf deps/*/assets/yarn.lock
2022-12-01 21:47:46 +00:00
@rm -rf deps/bonfire/priv/repo
2022-09-15 19:43:27 +00:00
# Update Bonfire extensions in ./deps
update-deps: pre-update-deps
2022-05-23 02:20:39 +00:00
just mix-remote updates
2022-07-13 00:25:09 +00:00
update-repo: pre-contrib-hooks
2022-05-23 02:20:39 +00:00
@chmod +x git-publish.sh && ./git-publish.sh . pull || git pull
2022-07-13 00:25:09 +00:00
update-repo-pull:
2022-05-23 02:20:39 +00:00
@chmod +x git-publish.sh && ./git-publish.sh . pull only
# Update to the latest Bonfire extensions in ./deps
update-deps-bonfire:
2022-11-04 10:18:59 +00:00
just mix-remote bonfire.deps.update
2022-05-23 02:20:39 +00:00
# Update every single dependency (use with caution)
update-deps-all: deps-unlock-unused pre-update-deps
2022-06-22 06:59:10 +00:00
just mix-remote "deps.update --all"
2022-11-30 06:24:55 +00:00
just deps-post-get
2022-09-15 06:40:33 +00:00
just js-ext-deps upgrade
2022-11-30 00:20:49 +00:00
just assets-ln
2022-09-15 06:40:33 +00:00
just js-ext-deps outdated
just mix "hex.outdated --all"
2022-05-23 02:20:39 +00:00
# Update a specify dep (eg. `just update.dep pointers`)
2022-12-08 10:23:08 +00:00
update-dep dep: pre-update-deps
2023-02-05 02:33:36 +00:00
@chmod +x git-publish.sh && ./git-publish.sh $EXT_PATH/$dep pull && ./git-publish.sh $EXTRA_FORKS_PATH/$dep pull
2022-05-23 02:20:39 +00:00
just mix-remote "deps.update $dep"
2022-11-30 06:24:55 +00:00
just deps-post-get
2022-11-29 20:16:45 +00:00
./js-deps-get.sh $dep
2022-05-23 02:20:39 +00:00
# Pull the latest commits from all forks
2022-05-23 02:20:39 +00:00
update-forks:
@jungle git fetch || echo "Jungle not available, will fetch one by one instead."
2023-02-05 02:33:36 +00:00
@chmod +x git-publish.sh && find $EXT_PATH -mindepth 1 -maxdepth 1 -type d -exec ./git-publish.sh {} rebase \; && find $EXTRA_FORKS_PATH -mindepth 1 -maxdepth 1 -type d -exec ./git-publish.sh {} rebase \;
# TODO: run in parallel? find $EXT_PATH -mindepth 1 -maxdepth 1 -type d | xargs -P 50 -I '{}' ./git-publish.sh '{}'
2022-05-23 02:20:39 +00:00
# Pull the latest commits from all forks
2022-05-23 02:20:39 +00:00
update-fork dep:
2023-02-05 02:33:36 +00:00
@chmod +x git-publish.sh && find $EXT_PATH/$dep -mindepth 0 -maxdepth 0 -type d -exec ./git-publish.sh {} pull \; && find $EXTRA_FORKS_PATH/$dep -mindepth 0 -maxdepth 0 -type d -exec ./git-publish.sh {} pull \;
2022-05-23 02:20:39 +00:00
# Fetch locked version of non-forked deps
2023-03-29 06:38:11 +00:00
deps-get *args='':
just mix deps.get $@
just mix-remote deps.get $@
2022-11-30 06:24:55 +00:00
just deps-post-get
2022-09-15 06:40:33 +00:00
just js-deps-get
2022-05-23 02:20:39 +00:00
2022-11-30 06:24:55 +00:00
deps-post-get:
2022-12-06 11:24:40 +00:00
ln -sf ../../../priv/static extensions/bonfire/priv/static || ln -sf ../../../priv/static deps/bonfire/priv/static || echo "Could not find a priv/static dir to use"
-cd deps/bonfire/priv && ln -sf ../../../priv/repo
2022-11-30 08:58:25 +00:00
-cd extensions/bonfire/priv && ln -sf ../../../priv/repo
2023-02-05 04:11:06 +00:00
mkdir -p priv/static/data
mkdir -p data
mkdir -p data/uploads
2023-02-05 03:56:59 +00:00
-cd priv/static/data && ln -s ../../../data/uploads
2022-11-30 06:24:55 +00:00
2022-11-04 10:18:59 +00:00
deps-clean dep:
just mix deps.clean $dep
2022-06-03 23:58:37 +00:00
2022-11-30 06:24:55 +00:00
@deps-clean-data:
2022-05-23 02:20:39 +00:00
just mix bonfire.deps.clean.data
2022-11-30 06:24:55 +00:00
@deps-clean-api:
2022-05-23 02:20:39 +00:00
just mix bonfire.deps.clean.api
2023-05-01 04:40:54 +00:00
@deps-clean-web:
just deps-clean bonfire_ui_common
2022-05-23 02:20:39 +00:00
#### DEPENDENCY & EXTENSION RELATED COMMANDS ####
2022-11-30 00:20:49 +00:00
js-deps-get: js-ext-deps assets-ln
2022-05-23 02:20:39 +00:00
2022-09-15 06:40:33 +00:00
js-ext-deps yarn_args='':
chmod +x ./config/deps.js.sh
just cmd ./config/deps.js.sh $yarn_args
2022-05-23 02:20:39 +00:00
2023-03-24 03:31:08 +00:00
@assets-ln:
{{ if path_exists("extensions/bonfire_ui_common")=="true" { "ln -sf extensions/bonfire_ui_common/assets && echo Assets served from the local UI.Common extension will be used" } else {"ln -sf deps/bonfire_ui_common/assets "} }}
2022-11-30 00:20:49 +00:00
deps-outdated: deps-unlock-unused
2022-05-23 02:20:39 +00:00
@just mix-remote "hex.outdated --all"
2022-08-19 20:23:18 +00:00
deps-clean-unused:
@just mix "deps.clean --build --unused"
deps-unlock-unused:
2022-08-19 20:23:18 +00:00
@just mix "deps.clean --unlock --unused"
2022-05-23 02:20:39 +00:00
dep-clean dep:
@just mix "deps.clean $dep --build"
# Clone a git dep and use the local version, eg: `just dep-clone-local bonfire_me https://github.com/bonfire-networks/bonfire_me`
dep-clone-local dep repo:
2023-02-05 02:33:36 +00:00
git clone $repo $EXT_PATH$dep 2> /dev/null || (cd $EXT_PATH$dep ; git pull)
2022-05-23 02:20:39 +00:00
just dep.go.local dep=$dep
# Clone all bonfire deps / extensions
deps-clone-local-all:
2022-06-16 22:34:16 +00:00
curl -s https://api.github.com/orgs/bonfire-networks/repos?per_page=500 | ruby -rrubygems -e 'require "json"; JSON.load(STDIN.read).each { |repo| %x[just dep.clone.local dep="#{repo["name"]}" repo="#{repo["ssh_url"]}" ]}'
2022-05-23 02:20:39 +00:00
# Switch to using a local path, eg: just dep.go.local pointers
dep-go-local dep:
2023-02-05 02:33:36 +00:00
just dep-go-local-path $dep $EXT_PATH$dep
2022-05-23 02:20:39 +00:00
# Switch to using a local path, specifying the path, eg: just dep.go.local dep=pointers path=./libs/pointers
dep-go-local-path dep path:
just dep-local add $dep $path
just dep-local enable $dep $path
# Switch to using a git repo, eg: just dep.go.git pointers https://github.com/bonfire-networks/pointers (specifying the repo is optional if previously specified)
dep-go-git dep repo:
2022-06-16 22:34:16 +00:00
-just dep-git add $dep $repo
2022-05-23 02:20:39 +00:00
just dep-git enable $dep NA
just dep-local disable $dep NA
# Switch to using a library from hex.pm, eg: just dep.go.hex dep="pointers" version="_> 0.2" (specifying the version is optional if previously specified)
dep-go-hex dep version:
2022-06-16 22:34:16 +00:00
-just dep-hex add dep=$dep version=$version
2022-05-23 02:20:39 +00:00
just dep-hex enable $dep NA
just dep-git disable $dep NA
just dep-local disable $dep NA
# add/enable/disable/delete a hex dep with messctl command, eg: `just dep-hex enable pointers 0.2`
dep-hex command dep version:
just messctl "$command $dep $version"
just mix "deps.clean $dep"
# add/enable/disable/delete a git dep with messctl command, eg: `just dep-hex enable pointers https://github.com/bonfire-networks/pointers#main
dep-git command dep repo:
just messctl "$command $dep $repo config/deps.git"
just mix "deps.clean $dep"
# add/enable/disable/delete a local dep with messctl command, eg: `just dep-hex enable pointers ./libs/pointers`
dep-local command dep path:
just messctl "$command $dep $path config/deps.path"
just mix "deps.clean $dep"
# Utility to manage the deps in deps.hex, deps.git, and deps.path (eg. `just messctl help`)
messctl *args='': init
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER == "no" { "messctl $@" } else { "docker compose run web messctl $@" } }}
2022-05-23 02:20:39 +00:00
#### CONTRIBUTION RELATED COMMANDS ####
pre-push-hooks: pre-contrib-hooks
2022-09-15 06:40:33 +00:00
just mix format
2022-11-22 09:56:21 +00:00
# just mix changelog
pre-contrib-hooks:
2022-12-10 01:55:18 +00:00
-ex +%s,/extensions/,/deps/,e -scwq config/deps_hooks.js
# -sed -i '' 's,/extensions/,/deps/,' config/deps_hooks.js
2022-07-09 04:20:00 +00:00
2022-05-23 02:20:39 +00:00
# Push all changes to the app and extensions in ./forks
2022-12-09 20:29:08 +00:00
contrib: pre-push-hooks contrib-forks-publish git-publish
2022-05-23 02:20:39 +00:00
# Push all changes to the app and extensions in forks, increment the app version number, and push a new version/release
contrib-release: pre-push-hooks contrib-forks-publish update-app contrib-app-release
2022-05-23 02:20:39 +00:00
2022-06-05 21:59:24 +00:00
# Rebase app's repo and push all changes to the app
contrib-app-only: pre-push-hooks update-repo git-publish
2022-05-23 02:20:39 +00:00
2022-06-05 21:59:24 +00:00
# Increment the app version number and commit/push
contrib-app-release: pre-push-hooks contrib-app-release-increment git-publish
2022-05-23 02:20:39 +00:00
2022-06-06 01:23:10 +00:00
# Increment the app version number
2022-12-03 01:48:49 +00:00
@contrib-app-release-increment:
cd lib/mix/ && ln -sf ../../extensions/bonfire/lib/mix/tasks || ln -sf ../../deps/bonfire/lib/mix/tasks
2022-12-09 02:13:26 +00:00
cd lib/mix/tasks/release/ && mix escript.build && ./release ../../../../../../ $APP_VSN_EXTRA
2022-05-23 02:20:39 +00:00
2022-07-29 00:47:21 +00:00
contrib-forks-publish: update-forks
2022-05-23 02:20:39 +00:00
2022-09-30 06:15:36 +00:00
contrib-rel-push: contrib-release rel-build-release rel-push
2022-09-19 07:53:42 +00:00
# Count lines of code (requires cloc: `brew install cloc`)
cloc:
cloc lib config extensions/*/lib extensions/*/test test
2022-09-19 07:53:42 +00:00
2022-05-23 02:20:39 +00:00
# Run the git add command on each fork
git-forks-add: deps-git-fix
2023-02-05 02:33:36 +00:00
find $EXT_PATH -mindepth 1 -maxdepth 1 -type d -exec echo add {} \; -exec git -C '{}' add --all . \;
2022-05-23 02:20:39 +00:00
# Run a git status on each fork
git-forks-status:
2023-02-05 02:33:36 +00:00
@jungle git status || find $EXT_PATH -mindepth 1 -maxdepth 1 -type d -exec echo {} \; -exec git -C '{}' status \;
2022-05-23 02:20:39 +00:00
# Run a git command on each fork (eg. `just git-forks pull` pulls the latest version of all local deps from its git remote
git-forks command:
2023-02-05 02:33:36 +00:00
@find $EXT_PATH -mindepth 1 -maxdepth 1 -type d -exec echo $command {} \; -exec git -C '{}' $command \;
2022-05-23 02:20:39 +00:00
# List all diffs in forks
git-diff:
2023-02-05 02:33:36 +00:00
@find $EXT_PATH -mindepth 1 -maxdepth 1 -type d -exec echo {} \; -exec git -C '{}' --no-pager diff --color --exit-code \;
2022-05-23 02:20:39 +00:00
# Run a git command on each dep, to ignore chmod changes
deps-git-fix:
find ./deps -mindepth 1 -maxdepth 1 -type d -exec git -C '{}' config core.fileMode false \;
find ./forks -mindepth 1 -maxdepth 1 -type d -exec git -C '{}' config core.fileMode false \;
# Draft-merge another branch, eg `just git-merge with-valueflows-api` to merge branch `with-valueflows-api` into the current one
2022-06-16 22:34:16 +00:00
@git-merge branch:
2022-05-23 02:20:39 +00:00
git merge --no-ff --no-commit $branch
# Find any git conflicts in forks
2022-06-16 22:34:16 +00:00
@git-conflicts:
2023-02-05 02:33:36 +00:00
find $EXT_PATH -mindepth 1 -maxdepth 1 -type d -exec echo add {} \; -exec git -C '{}' diff --name-only --diff-filter=U \;
2022-05-23 02:20:39 +00:00
2022-06-16 22:34:16 +00:00
@git-publish:
2022-05-23 02:20:39 +00:00
chmod +x git-publish.sh
./git-publish.sh
#### TESTING RELATED COMMANDS ####
# Run tests. You can also run only specific tests, eg: `just test extensions/bonfire_social/test`
2022-05-23 02:20:39 +00:00
test *args='':
2022-10-25 03:02:49 +00:00
@echo "Testing $@..."
2022-06-16 22:34:16 +00:00
MIX_ENV=test just mix test $@
2022-05-23 02:20:39 +00:00
# Run only stale tests
test-stale *args='':
2022-10-25 03:02:49 +00:00
@echo "Testing $@..."
2022-06-16 22:34:16 +00:00
MIX_ENV=test just mix test --stale $@
2022-05-23 02:20:39 +00:00
# Run tests (ignoring changes in local forks)
test-remote *args='':
2022-10-25 03:02:49 +00:00
@echo "Testing $@..."
2022-06-16 22:34:16 +00:00
MIX_ENV=test just mix-remote test $@
2022-05-23 02:20:39 +00:00
# Run stale tests, and wait for changes to any module code, and re-run affected tests
test-watch *args='':
2022-10-25 03:02:49 +00:00
@echo "Testing $@..."
2022-06-16 22:34:16 +00:00
MIX_ENV=test just mix test.watch --stale $@
2022-05-23 02:20:39 +00:00
# Run stale tests, and wait for changes to any module code, and re-run affected tests, and interactively choose which tests to run
test-interactive *args='':
@MIX_ENV=test just mix test.interactive --stale $@
2022-12-12 23:14:35 +00:00
ap_lib := "forks/activity_pub"
ap_integration := "extensions/bonfire_federate_activitypub/test/activity_pub_integration"
ap_boundaries := "extensions/bonfire_federate_activitypub/test/ap_boundaries"
ap_ext := "extensions/*/test/*federat* extensions/*/test/*/*federat* extensions/*/test/*/*/*federat*"
2022-10-29 10:30:21 +00:00
# ap_two := "forks/bonfire_federate_activitypub/test/dance"
2023-02-28 03:43:45 +00:00
test-federation: test-federation-dance-positions
2022-10-25 03:02:49 +00:00
just test-stale {{ ap_lib }}
just test-stale {{ ap_integration }}
just test-stale {{ ap_ext }}
2022-12-12 23:14:35 +00:00
just test-federation-dance-positions
2022-10-25 03:02:49 +00:00
TEST_INSTANCE=yes just test-stale --only test_instance
2022-12-12 23:14:35 +00:00
just test-federation-dance-positions
2023-02-28 03:43:45 +00:00
test-federation-lib *args=ap_lib: test-federation-dance-positions
2022-10-25 03:02:49 +00:00
just test-watch $@
2023-02-28 03:43:45 +00:00
test-federation-integration *args=ap_integration: test-federation-dance-positions
2022-10-25 03:02:49 +00:00
just test-watch $@
2023-02-28 03:43:45 +00:00
test-federation-ext *args=ap_ext: test-federation-dance-positions
2022-10-25 03:02:49 +00:00
just test-watch $@
2022-12-12 23:14:35 +00:00
test-federation-dance *args='': test-federation-dance-positions
2022-10-25 03:02:49 +00:00
TEST_INSTANCE=yes just test-watch --only test_instance $@
2022-12-12 23:14:35 +00:00
just test-federation-dance-positions
2023-04-21 23:37:27 +00:00
test-federation-dance-unsigned *args='': test-federation-dance-positions
ACCEPT_UNSIGNED_ACTIVITIES=1 TEST_INSTANCE=yes just test-watch --only test_instance $@
just test-federation-dance-positions
2022-12-12 23:14:35 +00:00
test-federation-dance-positions:
TEST_INSTANCE=yes MIX_ENV=test just mix deps.clean bonfire --build
2022-05-23 02:20:39 +00:00
# dev-test-watch: init ## Run tests
2023-03-23 22:36:30 +00:00
# docker compose run --service-ports -e MIX_ENV=test web iex -S mix phx.server
2022-05-23 02:20:39 +00:00
# Create or reset the test DB
test-db-reset: init db-pre-migrations
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER == "total" { "docker compose run -e MIX_ENV=test web mix ecto.reset" } else { "MIX_ENV=test mix ecto.reset" } }}
2022-05-23 02:20:39 +00:00
#### RELEASE RELATED COMMANDS (Docker-specific for now) ####
2022-05-23 03:04:46 +00:00
rel-init:
2022-07-22 00:24:21 +00:00
MIX_ENV=prod just pre-init
2022-05-23 02:20:39 +00:00
# copy current flavour's config, without using symlinks
2022-05-23 03:04:46 +00:00
rel-config-prepare:
2022-07-22 00:24:21 +00:00
rm -rf data/current_flavour
mkdir -p data
rm -rf flavours/*/config/*/dev
2023-03-12 00:28:07 +00:00
cp -rfL flavours/classic data/current_flavour
cp -rfL $FLAVOUR_PATH/* data/current_flavour
2022-05-23 02:20:39 +00:00
# copy current flavour's config, without using symlinks
2022-05-23 03:04:46 +00:00
rel-prepare: rel-config-prepare
mkdir -p extensions/
2022-07-22 00:24:21 +00:00
mkdir -p forks/
mkdir -p data/uploads/
mkdir -p data/null/
touch data/current_flavour/config/deps.path
2022-05-23 02:20:39 +00:00
2022-06-23 01:16:54 +00:00
# Build the Docker image (with no caching)
2023-02-05 02:33:36 +00:00
rel-rebuild:
just rel-build {{EXT_PATH}} --no-cache
2022-06-23 07:11:32 +00:00
# Build the Docker image (NOT including changes to local forks)
2023-03-06 19:50:39 +00:00
rel-build-release ARGS="":
@echo "Please note that the build will not include any changes in forks that haven't been committed and pushed, you may want to run just contrib-release first."
2023-03-06 19:50:39 +00:00
@just rel-build remote {{ ARGS }}
2022-05-23 02:20:39 +00:00
2023-02-05 02:33:36 +00:00
# Build the release
2023-02-05 03:27:33 +00:00
rel-build USE_EXT="local" ARGS="":
2023-02-05 02:33:36 +00:00
@just {{ if WITH_DOCKER != "no" {"rel-build-docker"} else {"rel-build-OTP"} }} {{ USE_EXT }} {{ ARGS }}
# Build the OTP release
2023-02-05 04:49:08 +00:00
rel-build-OTP USE_EXT="local" ARGS="": rel-init rel-prepare
2023-02-06 05:44:42 +00:00
yarn -v || npm install --global yarn
npm install --global esbuild postcss
2023-02-05 04:49:08 +00:00
-rm -rf priv/static
2023-04-16 04:13:44 +00:00
cd ./assets && yarn build && cd ..
2023-02-05 04:49:08 +00:00
ls -la priv/static/ && ls -la priv/static/data && ls -la priv/static/data/uploads
2023-02-05 02:33:36 +00:00
just rel-mix {{ USE_EXT }} phx.digest
just rel-mix {{ USE_EXT }} release
# just rel-mix {{ USE_EXT }} compile
rel-mix USE_EXT="local" ARGS="":
@echo {{ ARGS }}
@MIX_ENV=prod CI=1 just {{ if USE_EXT=="remote" {"mix-remote"} else {"mix"} }} {{ ARGS }}
# Build the Docker image
2023-02-05 03:27:33 +00:00
rel-build-docker USE_EXT="local" ARGS="": rel-init rel-prepare assets-prepare
2023-02-05 02:33:36 +00:00
@just rel-build-path {{ if USE_EXT=="remote" {"data/null"} else {EXT_PATH} }} {{ ARGS }}
2023-02-05 03:27:33 +00:00
rel-build-path FORKS_TO_COPY_PATH ARGS="":
2022-06-23 07:11:32 +00:00
@echo "Building $APP_NAME with flavour $FLAVOUR for arch {{arch()}}."
2023-02-05 02:33:36 +00:00
@MIX_ENV=prod docker build {{ ARGS }} --progress=plain \
2023-03-06 19:50:39 +00:00
--build-arg FLAVOUR=$FLAVOUR \
2022-05-23 02:20:39 +00:00
--build-arg FLAVOUR_PATH=data/current_flavour \
--build-arg APP_NAME=$APP_NAME \
--build-arg APP_VSN=$APP_VSN \
--build-arg APP_BUILD=$APP_BUILD \
2022-12-09 01:49:21 +00:00
--build-arg FORKS_TO_COPY_PATH={{ FORKS_TO_COPY_PATH }} \
2022-06-23 01:16:54 +00:00
-t $APP_DOCKER_REPO:release-$FLAVOUR-$APP_VSN-$APP_BUILD \
2022-05-23 02:20:39 +00:00
-f $APP_REL_DOCKERFILE .
2023-03-15 19:46:55 +00:00
@echo Build complete, tagged as: $APP_DOCKER_REPO:release-$FLAVOUR-$APP_VSN-$APP_BUILD
@echo "Remember to run just rel-tag or just rel-push"
2022-05-23 02:20:39 +00:00
2023-04-30 08:42:52 +00:00
@rel-tag-commit build label='latest': rel-init
docker tag $APP_DOCKER_REPO:release-$FLAVOUR-$APP_VSN-{{build}} $APP_DOCKER_REPO:{{label}}-$FLAVOUR-{{arch()}}
2023-03-16 02:11:10 +00:00
docker tag $APP_DOCKER_REPO:release-$FLAVOUR-$APP_VSN-{{build}} $APP_DOCKER_REPO_ALT:release-$FLAVOUR-$APP_VSN-{{build}}
docker tag $APP_DOCKER_REPO:release-$FLAVOUR-$APP_VSN-{{build}} $APP_DOCKER_REPO_ALT:{{label}}-$FLAVOUR-{{arch()}}
2022-07-06 01:39:47 +00:00
2022-05-23 02:20:39 +00:00
# Add latest tag to last build
2022-06-23 01:16:54 +00:00
rel-tag label='latest':
just rel-tag-commit $APP_BUILD {{label}}
2022-05-23 02:20:39 +00:00
# Add latest tag to last build and push to Docker Hub
2022-06-23 01:16:54 +00:00
rel-push label='latest':
2022-07-06 01:39:47 +00:00
@just rel-tag {{label}}
2023-03-15 19:46:55 +00:00
@just rel-push-only $APP_BUILD {{label}}
2022-05-23 02:20:39 +00:00
2023-03-15 19:46:55 +00:00
rel-push-only build label='latest':
2023-04-30 08:42:52 +00:00
@echo "Pushing to $APP_DOCKER_REPO"
2023-03-15 19:46:55 +00:00
@docker login && docker push $APP_DOCKER_REPO:release-$FLAVOUR-$APP_VSN-{{build}} && docker push $APP_DOCKER_REPO:{{label}}-$FLAVOUR-{{arch()}}
2023-04-30 08:42:52 +00:00
@just rel-push-only-alt {{build}} {{label}}
2023-03-16 02:11:10 +00:00
rel-push-only-alt build label='latest':
2023-04-30 08:42:52 +00:00
@echo $GITHUB_TOKEN | docker login ghcr.io -u $GITHUB_USER --password-stdin
@echo "Pushing to $APP_DOCKER_REPO_ALT"
@docker push $APP_DOCKER_REPO_ALT:release-$FLAVOUR-$APP_VSN-{{build}} && docker push $APP_DOCKER_REPO_ALT:{{label}}-$FLAVOUR-{{arch()}}
2022-07-04 23:22:56 +00:00
2022-05-23 02:20:39 +00:00
# Run the app in Docker & starts a new `iex` console
2022-06-23 01:16:54 +00:00
rel-run: rel-init docker-stop-web rel-services
2023-02-25 01:56:55 +00:00
echo Run with Docker based on image $APP_DOCKER_IMAGE
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE run --name $WEB_CONTAINER --service-ports --rm web bin/bonfire start_iex
2022-05-23 02:20:39 +00:00
# Run the app in Docker, and keep running in the background
2022-05-23 03:04:46 +00:00
rel-run-bg: rel-init docker-stop-web
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE up -d
2022-05-23 02:20:39 +00:00
# Stop the running release
2022-05-23 03:04:46 +00:00
rel-stop:
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE stop
2022-05-23 02:20:39 +00:00
2022-05-23 03:04:46 +00:00
rel-update: update-repo-pull
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE pull
2022-05-23 02:20:39 +00:00
@echo Remember to run migrations on your DB...
rel-logs:
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE logs
2022-05-23 02:20:39 +00:00
# Stop the running release
2022-05-23 03:04:46 +00:00
rel-down: rel-stop
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE down
2022-05-23 02:20:39 +00:00
# Runs a the app container and opens a simple shell inside of the container, useful to explore the image
2022-06-23 01:16:54 +00:00
rel-shell: rel-init docker-stop-web rel-services
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE run --name $WEB_CONTAINER --service-ports --rm web /bin/bash
2022-05-23 02:20:39 +00:00
# Runs a simple shell inside of the running app container, useful to explore the image
2022-06-23 01:16:54 +00:00
rel-shell-bg: rel-init rel-services
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE exec web /bin/bash
2022-05-23 02:20:39 +00:00
# Runs a simple shell inside of the DB container, useful to explore the image
2022-06-23 01:16:54 +00:00
rel-db-shell-bg: rel-init rel-services
2023-03-23 22:36:30 +00:00
@docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE exec db /bin/bash
2022-05-23 02:20:39 +00:00
2022-06-23 01:16:54 +00:00
rel-db-dump: rel-init rel-services
2023-03-23 22:36:30 +00:00
docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE exec db /bin/bash -c "PGPASSWORD=$POSTGRES_PASSWORD pg_dump --username $POSTGRES_USER $POSTGRES_DB" > data/db_dump.sql
2022-05-23 02:20:39 +00:00
2022-06-23 01:16:54 +00:00
rel-db-restore: rel-init rel-services
2022-05-23 02:20:39 +00:00
cat $file | docker exec -i bonfire_release_db_1 /bin/bash -c "PGPASSWORD=$POSTGRES_PASSWORD psql -U $POSTGRES_USER $POSTGRES_DB"
rel-services:
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER != "no" { "docker compose -p $APP_REL_CONTAINER -f $APP_REL_DOCKERCOMPOSE up -d db search" } else {""} }}
2022-05-23 02:20:39 +00:00
#### DOCKER-SPECIFIC COMMANDS ####
2022-10-17 01:02:24 +00:00
dc *args='':
2023-03-23 22:36:30 +00:00
docker compose $@
2022-10-17 01:02:24 +00:00
2022-05-23 02:20:39 +00:00
# Start background docker services (eg. db and search backends).
2022-06-16 22:34:16 +00:00
@services:
{{ if MIX_ENV == "prod" { "just rel-services" } else { "just dev-services" } }}
2022-05-23 02:20:39 +00:00
2022-06-16 22:34:16 +00:00
@dev-services:
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER != "no" { "docker compose up -d db search || echo \"WARNING: You may want to make sure the docker daemon is started or run 'colima start' first.\"" } else { "echo Skipping docker services"} }}
2022-05-23 02:20:39 +00:00
# Build the docker image
build: init
2023-04-16 22:13:10 +00:00
mkdir -p deps
{{ if WITH_DOCKER != "no" { "docker compose pull" } else { "just mix setup" } }}
{{ if WITH_DOCKER == "total" { "docker compose build" } else { "echo ." } }}
2022-05-23 02:20:39 +00:00
# Build the docker image
rebuild: init
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER != "no" { "mkdir -p deps && docker compose build --no-cache" } else { "echo Skip building container..." } }}
2022-05-23 02:20:39 +00:00
# Run a specific command in the container (if used), eg: `just cmd messclt` or `just cmd time` or `just cmd "echo hello"`
@cmd *args='': init
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER == "total" { "docker compose run --service-ports web $@" } else {"$@"} }}
2022-05-23 02:20:39 +00:00
# Open the shell of the web container, in dev mode
shell:
2022-06-16 22:34:16 +00:00
just cmd bash
2022-05-23 02:20:39 +00:00
2022-11-29 22:59:22 +00:00
@docker-stop-web:
2022-06-16 22:34:16 +00:00
-docker stop $WEB_CONTAINER
-docker rm $WEB_CONTAINER
2022-05-23 02:20:39 +00:00
#### MISC COMMANDS ####
# Open an interactive console
@imix *args='':
just cmd iex -S mix $@
2022-05-23 02:20:39 +00:00
# Run a specific mix command, eg: `just mix deps.get` or `just mix "deps.update pointers"`
2022-06-20 03:51:48 +00:00
@mix *args='':
2023-02-05 02:33:36 +00:00
echo % mix $@
2023-03-29 07:03:08 +00:00
{{ if MIX_ENV == "prod" { "just mix-maybe-prod $@" } else { "just cmd mix $@" } }}
@mix-maybe-prod *args='':
{{ if WITH_DOCKER != "no" { "echo Ignoring mix commands when using docker in prod" } else { "just mix-maybe-prod-pre-release $@" } }}
@mix-maybe-prod-pre-release *args='':
{{ if path_exists("./_build/prod/rel/bonfire/bin/bonfire")=="true" { "echo Ignoring mix commands since we already have a prod release (delete _build/prod/rel/bonfire/bin/bonfire if you want to build a new release)" } else { "just cmd mix $@" } }}
2022-05-23 02:20:39 +00:00
# Run a specific mix command, while ignoring any deps cloned into forks, eg: `just mix-remote deps.get` or `just mix-remote deps.update pointers`
2022-05-23 02:20:39 +00:00
mix-remote *args='': init
2023-02-05 02:33:36 +00:00
echo % WITH_FORKS=0 mix $@
2023-03-23 22:36:30 +00:00
{{ if WITH_DOCKER == "total" { "docker compose run -e WITH_FORKS=0 web mix $@" } else {"WITH_FORKS=0 mix $@"} }}
2022-05-23 02:20:39 +00:00
xref-dot:
just mix xref graph --format dot --include-siblings
(awk '{if (!a[$0]++ && $1 != "}") print}' extensions/*/xref_graph.dot; echo }) > docs/xref_graph.dot
dot -Tsvg docs/xref_graph.dot -o docs/xref_graph.svg
2022-05-23 02:20:39 +00:00
# Run a specific exh command, see https://github.com/rowlandcodes/exhelp
exh *args='':
2022-06-16 22:34:16 +00:00
just cmd "exh -S mix $@"
2022-05-23 02:20:39 +00:00
licenses:
@mkdir -p docs/DEPENDENCIES/
just mix-remote licenses && mv DEPENDENCIES.md docs/DEPENDENCIES/$FLAVOUR.md
2023-01-16 08:14:25 +00:00
audit:
AS_UMBRELLA=1 just mix sobelow
2022-05-23 02:20:39 +00:00
# Extract strings to-be-localised from the app and installed extensions
2022-11-29 06:50:15 +00:00
# FIXME: should extract to root app, not activity_pub like it's doing (for whatever reason)
2022-05-23 02:20:39 +00:00
localise-extract:
2022-06-16 22:34:16 +00:00
just mix "bonfire.localise.extract"
2022-11-29 06:50:15 +00:00
mv extensions/activity_pub/priv/localisation* priv/localisation/
2022-06-01 01:04:22 +00:00
cd priv/localisation/ && for f in *.pot; do mv -- "$f" "${f%.pot}.po"; done
2022-05-23 02:20:39 +00:00
2022-06-23 07:11:32 +00:00
@localise-tx-init:
pip install transifex-client
tx config mapping-bulk -p bonfire --source-language en --type PO -f '.po' --source-file-dir priv/localisation/ -i fr -i es -i it -i de --expression 'priv/localisation/<lang>/LC_MESSAGES/{filename}{extension}' --execute
# curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
@localise-tx-pull:
tx pull --all --minimum-perc=5 --force
just mix deps.compile bonfire_common --force
2022-06-23 07:11:32 +00:00
@localise-tx-push:
tx push --source
@localise-extract-push: localise-extract localise-tx-push
2022-06-03 23:58:37 +00:00
2022-07-19 23:40:50 +00:00
assets-prepare:
2023-02-05 03:27:33 +00:00
-mkdir -p priv/static
-mkdir -p priv/static/data
2022-07-19 23:40:50 +00:00
-mkdir -p priv/static/data/uploads
-mkdir -p rel/overlays/
2022-06-16 22:34:16 +00:00
-cp lib/*/*/overlay/* rel/overlays/
2022-05-23 02:20:39 +00:00
# Workarounds for some issues running migrations
db-pre-migrations:
2022-06-16 22:34:16 +00:00
-touch deps/*/lib/migrations.ex
-touch extensions/*/lib/migrations.ex
2022-06-16 22:34:16 +00:00
-touch forks/*/lib/migrations.ex
-touch priv/repo/*
2022-05-23 02:20:39 +00:00
# Generate secrets
2023-01-30 04:43:04 +00:00
@secrets:
2023-03-24 00:06:24 +00:00
{{ if MIX_ENV == "prod" { "just rands" } else if WITH_DOCKER=="total" { "just rands" } else { "just mix-secrets" } }}
2023-03-23 23:49:51 +00:00
@rands:
just rand
just rand
just rand
2023-03-23 23:58:03 +00:00
@mix-secrets: ln-mix-tasks
2023-01-30 06:45:44 +00:00
cd lib/mix/tasks/secrets/ && mix escript.build && ./secrets 128 3
2023-03-23 23:58:03 +00:00
@ln-mix-tasks:
just mix deps.get
2023-03-24 00:01:27 +00:00
cd lib/mix/ && {{ if path_exists("../../extensions/bonfire/lib/mix/tasks")=="true" { "ln -sf ../../extensions/bonfire/lib/mix/tasks" } else {"ln -sf ../../deps/bonfire/lib/mix/tasks"} }}
2023-03-23 23:58:03 +00:00
2023-03-23 23:49:51 +00:00
@rand:
echo {{ uuid() }}-{{ uuid() }}-{{ uuid() }}-{{ uuid() }}
# note: doesn't work in github CI ^
2022-05-23 02:20:39 +00:00
2022-07-30 21:05:55 +00:00
# Start or stop nix postgres server
@nix-db pg_cmd:
2022-07-30 21:05:55 +00:00
pg_ctl -D ${PGDATA} -l ${PGDATA}/all.log -o "--unix_socket_directories='${PGDATA}'" $pg_cmd
# Initialize postgres database. Only need to run the first time!
nix-db-init: (nix-db "start")
2022-07-30 21:05:55 +00:00
createdb ${PGDATABASE}
createuser -dlsw ${PGUSERNAME}
2022-09-06 20:59:28 +00:00
2023-02-05 22:41:10 +00:00
sys-deps-debian:
./deps-debian.sh