bevyhub_api 0.0.1-rc.2

The bevyhub scene cache api.
set windows-shell := ["C:/tools/cygwin/bin/sh.exe","-c"]
set dotenv-load

default:
	just --list --unsorted

init-repo:
	just populate --force-tarball
	just export-bindings


# Oregon
region:="us-west-2"

e2e *args:
	cargo test --test mongo_sets_latest {{args}}

test *args:
	just watch 'cargo test --lib -- {{args}}'

test-curl *args:
	cargo run --example curl {{args}}
test-curl-prod *args:
	API_ENV=prod cargo run --example curl {{args}} 

example name *args:
	cargo run --example {{name}} {{args}}

run:
	just watch 'cargo run --example server'

run-prod:
	API_ENV=prod just watch 'cargo run --example server'

cli *args:
	cargo run -p bevyhub-cli -- {{args}}

lambda:
	cargo lambda watch --invoke-port 3000

build:
	cargo lambda build

patch:
	cargo set-version --bump patch

clear-local-storage:
	rm -rf ./target/db
	rm -rf ./target/storage/unpkg

export-bindings:
	cargo run --example export_bindings
	rm -rf ../../../bevyhub-site/packages/shared/src/api-bindings/generated
	mkdir -p ../../../bevyhub-site/packages/shared/src/api-bindings/generated || true
	cp ./bindings/* ../../../bevyhub-site/packages/shared/src/api-bindings/generated


# 1. test
# 2. build the lambda
# 3. deploy the lambda
#   --verbose = enable tracing
# 4. reset prod db & s3
deploy *args:
	cargo lambda build --release
	cargo lambda deploy \
	--binary-name bevyhub_api \
	--iam-role $AWS_IAM_ROLE \
	--enable-function-url \
	--region {{region}} \
	--verbose \
	{{args}}
	just mongo-purge-prod

# cargo test --test bevyhub-api -- {{args}}

watch *command:
	forky watch \
	-w '**/*.rs' \
	-i '{.git,target,html}/**' \
	-i '**/mod.rs' \
	-- {{command}}

# you should rarely need to run this, usually mongo-purge-prod is all thats needed
purge-prod:
	just s3-purge-prod
	just mongo-purge-prod

mongosh-find *args:
	mongosh $MONGODB_CLIENT --eval "use crate_cache" --eval "db.scenes.find({{args}})"

mongosh *args:
	mongosh $MONGODB_CLIENT

mongo-purge-prod:
	mongosh $MONGODB_CLIENT --eval "use crate_cache" --eval  "db.dropDatabase()"

s3-purge:
	aws s3 rm s3://bevyhub-api-cache --recursive

s3-set-cors:
	aws s3api put-bucket-cors --bucket bevyhub-api-cache --cors-configuration file://./config/cors.json

lambda-env:
	aws lambda update-function-configuration \
	--function-name bevyhub_api \
	--region {{region}} \
	--environment "Variables={ \
			MONGODB_CLIENT=$MONGODB_CLIENT, \
			GITHUB_API_TOKEN=$GITHUB_API_TOKEN \
		}"

pws *args:
	just --shell powershell.exe --shell-arg -c {{args}}

curl *args:
	curl http://127.0.0.1:3000/{{args}}


populate *args:
	just clear-local-storage
	just cli populate {{args}} \
	../../ \
	../bevyhub_template \
	../bevyhub_net \
# ../beet \
# ../../me-temp/mrchantey_bevyhub_hello_world \
# ../sewb \
# ../beet/crates/beet_flow/ \
# ../beet/crates/beet_ml/ \
# ../beet/crates/beet_spatial/ \
# ../beet/crates/beet_examples/