diff --git a/.env.local.example b/.env.local.example index 5c90149..5bd9b5e 100644 --- a/.env.local.example +++ b/.env.local.example @@ -13,7 +13,12 @@ export DISCORD_TOKEN= # mongodb export MONGODB_URI=mongodb://localhost:27017 -export MONGODB_VOLUME_PATH=data/db + +# deployment +# where the bot code is located (root folder - absolute path) +export APP_ROOT= +# where the DB data is saved - absolute path, or relative to APP_ROOT +export DB_PATH=data # logging export LOG_LEVEL=debug diff --git a/.gitignore b/.gitignore index f1c9d49..6bf4453 100644 --- a/.gitignore +++ b/.gitignore @@ -131,7 +131,6 @@ dist # CUSTOM src/scripts/outputs -data/brain.dat .DS_Store build -data/db +data/ diff --git a/eslint.config.mjs b/eslint.config.mjs index 06298dd..01fe1e9 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -13,6 +13,6 @@ export default [ }, }, { - ignores: ['node_modules/', 'build/', 'dist/', 'gen/'], + ignores: ['node_modules/', 'build/', 'dist/', 'gen/', 'scaffold.config.js'], }, ] diff --git a/gen/services/venom-bot.service b/gen/services/venom-bot.service index 4affa65..4c592b8 100644 --- a/gen/services/venom-bot.service +++ b/gen/services/venom-bot.service @@ -3,7 +3,7 @@ Description=Venom Bot After=network.target [Service] -WorkingDirectory=/root/apps/venom +WorkingDirectory={{appRoot}} ExecStart=/usr/local/bin/pnpm start ExecStop=/bin/kill -SIGINT $MAINPID Restart=on-failure diff --git a/gen/services/venom-db.service b/gen/services/venom-db.service index 57b8a90..9d54a4d 100644 --- a/gen/services/venom-db.service +++ b/gen/services/venom-db.service @@ -4,6 +4,7 @@ After=docker.service Requires=docker.service [Service] +WorkingDirectory={{appRoot}} Environment="DOCKER_RUN_CMD=docker run \ --name venom-mongo \ --hostname=2d2cb1232ad1 \ @@ -16,8 +17,8 @@ Environment="DOCKER_RUN_CMD=docker run \ --env=MONGO_MAJOR=7.0 \ --env=MONGO_VERSION=7.0.12 \ --env=HOME=/data/db \ - --volume=./data/db:{{dbPath}}/db \ - --volume=./data/configdb:/{{dbPath}}/configdb \ + --volume=./{{dbPath}}/db:/data/db \ + --volume=./{{dbPath}}/configdb:/data/configdb \ --volume=./data/configdb \ --volume=/data/db \ --network=bridge -p 27017:27017 \ diff --git a/package.json b/package.json index 466bc21..f6d4eb2 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "logs": "journalctl -f -u venom-bot.service", "build": "tsc && tsc-alias", "gen": "simple-scaffold -c scaffold.config.js -k", - "install-services": "scripts/install-services.zsh", + "install-services": "src/scripts/install-services.zsh", "test": "echo \"Error: no test specified\" && exit 1" }, "devDependencies": { diff --git a/scaffold.config.js b/scaffold.config.js index 8e42bb0..fed37aa 100644 --- a/scaffold.config.js +++ b/scaffold.config.js @@ -1,3 +1,11 @@ +const path = require('node:path') +const dotenv = require('dotenv') + +dotenv.config({ path: path.resolve(process.cwd(), '.env.local') }) +dotenv.config({ path: path.resolve(process.cwd(), '.env') }) + +console.log(process.env) + module.exports = { command: { templates: ['gen/command'], @@ -11,8 +19,9 @@ module.exports = { templates: ['gen/services'], subdir: false, data: { - // eslint-disable-next-line no-undef - dbPath: process.env.MONGODB_VOLUME_PATH, + dbPath: process.env.DB_PATH, + appRoot: process.env.APP_ROOT, }, + name: '-', }, } diff --git a/src/scripts/install-services.zsh b/src/scripts/install-services.zsh old mode 100644 new mode 100755 index 22fae24..103fe93 --- a/src/scripts/install-services.zsh +++ b/src/scripts/install-services.zsh @@ -1,11 +1,23 @@ #!/usr/bin/env zsh +if [[ "$1" == "--dry-run" || "$1" == "-d" ]]; then + dry=1 +fi + echo 'Installing dependencies...' pnpm install tmp=$(mktemp -d) echo 'Generating systemd services...' pnpm simple-scaffold -c scaffold.config.js -k services -o $tmp echo 'Installing systemd services...' + +if [[ $dry -eq 1 ]]; then + echo 'Dry run. Exiting' + echo + tail -n +1 $tmp/* + exit 0 +fi + sudo mv $tmp/* /etc/systemd/system/ systemctl daemon-reload systemctl enable venom-bot