storage=./keys/secmod.fat
service=tap0

setup-switch:
	opam switch create mte ocaml.5.4.1
	opam update
	opam install --yes . --deps-only

vendors: source.sh
	@mkdir -p vendors
	@./source.sh

.PHONY: clean
clean:
	rm -rf _build/
	rm -rf vendors/

keys:
	@mkdir -p keys
	@dune exec tools/offline.exe -- generate-eddsa-key --output ./keys/master
	@read -sp "Enter postgres password: " POSTGRES_PASSWORD; \
	  echo; \
	  printf $${POSTGRES_PASSWORD} > ./keys/postgres_password

secmod.fat:
	mfat make --sectors=2048 $(storage)

assets:
	@cp -r default/assets ./

config:
	@sed "s/%%MASTER_PUBLIC_KEY%%/$$(cat ./keys/master.pub)/" -i assets/mte.conf

src/manifest.json:
	@dune exec src/mte.exe > src/manifest.json

build: vendors
	@dune build @all
	@dune build --workspace dune-workspace.solo5 src/mte.exe

run: build
	@solo5-hvt --block:storage=$(storage) --net:service=$(service) -- ./_build/solo5/src/mte.exe \
		--postgres-password=$$(cat ./keys/postgres_password)
