2024-04-23 13:20:42 +03:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -eau
|
|
|
|
|
|
|
|
method=$1
|
|
|
|
shift
|
|
|
|
|
|
|
|
case "$method" in
|
|
|
|
"start")
|
|
|
|
docker compose up -d --wait jsr
|
|
|
|
node ./init-server.js
|
|
|
|
;;
|
|
|
|
"update")
|
|
|
|
# unpublish all packages
|
2024-04-23 14:10:18 +03:00
|
|
|
if [ -d .jsr-data/gcs/modules/@mtcute ]; then
|
|
|
|
rm -rf .jsr-data/gcs/modules/@mtcute
|
|
|
|
docker compose exec jsr-db psql registry -U user -c "delete from publishing_tasks;"
|
|
|
|
docker compose exec jsr-db psql registry -U user -c "delete from package_files;"
|
|
|
|
docker compose exec jsr-db psql registry -U user -c "delete from npm_tarballs;"
|
|
|
|
docker compose exec jsr-db psql registry -U user -c "delete from package_version_dependencies;"
|
|
|
|
docker compose exec jsr-db psql registry -U user -c "delete from package_versions;"
|
|
|
|
docker compose exec jsr-db psql registry -U user -c "delete from packages;"
|
|
|
|
fi
|
2024-04-23 13:20:42 +03:00
|
|
|
|
|
|
|
# publish all packages
|
|
|
|
docker compose run --rm --build build all
|
|
|
|
|
|
|
|
# clear cache
|
2024-04-23 14:10:18 +03:00
|
|
|
if command -v deno &> /dev/null; then
|
|
|
|
rm -rf $(deno info --json | jq .denoDir -r)/deps
|
|
|
|
fi
|
|
|
|
if [ -f deno.lock ]; then
|
|
|
|
rm deno.lock
|
|
|
|
fi
|
2024-04-23 13:20:42 +03:00
|
|
|
;;
|
|
|
|
"clean")
|
|
|
|
docker compose down
|
|
|
|
rm -rf .jsr-data
|
|
|
|
;;
|
|
|
|
"stop")
|
|
|
|
docker compose down
|
|
|
|
;;
|
|
|
|
"run")
|
2024-04-23 14:10:18 +03:00
|
|
|
if [ -f .env ]; then
|
|
|
|
source .env
|
|
|
|
fi
|
2024-04-23 13:20:42 +03:00
|
|
|
|
2024-04-30 05:38:11 +03:00
|
|
|
export JSR_URL=http://localhost:4873
|
|
|
|
|
2024-04-29 18:10:43 +03:00
|
|
|
if [ ! -z ${DOCKER+x} ]; then
|
2024-04-23 13:20:42 +03:00
|
|
|
# running behind a socat proxy seems to fix some of the docker networking issues (thx kamillaova)
|
|
|
|
socat TCP-LISTEN:4873,fork,reuseaddr TCP4:jsr:80 &
|
|
|
|
socat_pid=$!
|
|
|
|
|
2024-04-30 05:38:11 +03:00
|
|
|
# run `deno cache` with a few retries to make sure everything is cached
|
|
|
|
for i in {1..5}; do
|
|
|
|
if deno cache tests/*.ts; then
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
2024-04-23 13:20:42 +03:00
|
|
|
trap "kill $socat_pid" EXIT
|
|
|
|
fi
|
|
|
|
|
2024-04-29 18:10:43 +03:00
|
|
|
if [ $# -eq 0 ]; then
|
2024-04-30 05:38:11 +03:00
|
|
|
deno test -A --unstable-ffi tests/**/*.ts
|
2024-04-23 13:20:42 +03:00
|
|
|
else
|
2024-04-30 05:38:11 +03:00
|
|
|
deno test -A --unstable-ffi $@
|
2024-04-23 13:20:42 +03:00
|
|
|
fi
|
|
|
|
;;
|
|
|
|
"run-docker")
|
|
|
|
source .env
|
|
|
|
docker compose run --rm --build test $@
|
|
|
|
;;
|
2024-04-23 14:10:18 +03:00
|
|
|
"ci")
|
|
|
|
set -eaux
|
2024-04-25 15:03:03 +03:00
|
|
|
if [ -d .jsr-data ]; then
|
|
|
|
# clean up data from previous runs
|
|
|
|
docker compose down
|
2024-04-29 01:36:42 +03:00
|
|
|
sudo rm -rf .jsr-data
|
2024-04-25 15:03:03 +03:00
|
|
|
fi
|
2024-04-23 14:10:18 +03:00
|
|
|
mkdir .jsr-data
|
|
|
|
./cli.sh start
|
|
|
|
./cli.sh update
|
|
|
|
docker compose run --rm --build test
|
|
|
|
;;
|
2024-04-23 13:20:42 +03:00
|
|
|
*)
|
|
|
|
echo "Unknown command"
|
|
|
|
;;
|
|
|
|
esac
|