musicdb/setup.sh
Mark 61110f5f4a add more modes to client and change server cli
server can now source its database and files from
another server, but it will have its own
queue and appears as separate to clients.

the client now has gui-syncplayer-{local,network}
modes which show the gui and also play the songs.
using a syncplayer-network mode now automatically
enables the cache manager, which should make
waiting for songs to load less frequent.
2024-05-28 13:20:43 +02:00

70 lines
2.3 KiB
Bash
Executable File

#!/usr/bin/sh
DBDIR=$1
MUSICDIR=$2
if [ ! -z "$VISUAL" ]; then
EDITOR="$VISUAL"
fi
echo "usage: ./setup.sh dbdir music-dir"
if [ ! -z "$DBDIR" ]; then
echo "dbdir: $DBDIR"
if [ ! -z "$MUSICDIR" ]; then
echo "music-dir: $MUSICDIR"
# set commands for filldb/server/client
if [ ! -f "$CMD_FILLDB" ]; then
CMD_FILLDB="musicdb-filldb/target/release/musicdb-filldb"
if [ ! -f "$CMD_FILLDB" ]; then
CMD_FILLDB="bin/musicdb-filldb"
if [ ! -f "$CMD_FILLDB" ]; then
echo "No command for filldb found, set CMD_FILLDB env var to the executable file or run \`cargo build --release\` in \`./musicdb-filldb\`."
return
fi
fi
fi
if [ ! -f "$CMD_SERVER" ]; then
CMD_SERVER="musicdb-server/target/release/musicdb-server"
if [ ! -f "$CMD_SERVER" ]; then
CMD_SERVER="bin/musicdb-server"
if [ ! -f "$CMD_SERVER" ]; then
echo "No command for server found, set CMD_SERVER env var to the executable file or run \`cargo build --release\` in \`./musicdb-server\`."
return
fi
fi
fi
if [ ! -f "$CMD_CLIENT" ]; then
CMD_CLIENT="musicdb-client/target/release/musicdb-client"
if [ ! -f "$CMD_CLIENT" ]; then
CMD_CLIENT="bin/musicdb-client"
if [ ! -f "$CMD_CLIENT" ]; then
echo "No command for client found, set CMD_CLIENT env var to the executable file or run \`cargo build --release\` in \`./musicdb-client\`."
return
fi
fi
fi
echo "CMD_FILLDB: $CMD_FILLDB (set CMD_FILLDB env var to override)"
echo "CMD_SERVER: $CMD_SERVER (set CMD_SERVER env var to override)"
echo "CMD_CLIENT: $CMD_CLIENT (set CMD_CLIENT env var to override)"
echo "EDITOR: $EDITOR (set EDITOR or VISUAL env var to override)"
# create DBDIR
mkdir "$DBDIR"
# create DBDIR/dbfile
echo
"$CMD_FILLDB" "$MUSICDIR" || return
mv "dbfile" "$DBDIR" || return
# start server
"$CMD_SERVER" --tcp 0.0.0.0:26002 local "$DBDIR" "$MUSICDIR" &
sleep 1
# start client
# if starting fails once, prompt user to provide a font, then try again
"$CMD_CLIENT" 0.0.0.0:26002 gui || ("$EDITOR" "~/.config/musicdb-client/config_gui.toml"; "$CMD_CLIENT" 0.0.0.0:26002 gui) || return
fi
fi