add watcher
This commit is contained in:
52
watch.sh
Executable file
52
watch.sh
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Function to kill the previous cargo process
|
||||
kill_cargo() {
|
||||
if [ -n "$pid" ] && ps -p $pid > /dev/null; then
|
||||
echo "Terminating previous cargo process..."
|
||||
pkill -P $pid
|
||||
kill -TERM $pid 2>/dev/null
|
||||
wait $pid 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# Cleanup on script exit
|
||||
trap 'kill_cargo; echo "Monitor stopped."; exit' INT TERM EXIT
|
||||
|
||||
echo "Monitoring directory for changes..."
|
||||
echo "Press Ctrl+C to exit"
|
||||
|
||||
# Initial run
|
||||
cargo r &
|
||||
pid=$!
|
||||
|
||||
# Check if we're on macOS
|
||||
if [[ "$(uname)" == "Darwin" ]]; then
|
||||
# Use fswatch for macOS
|
||||
fswatch -o src/ assets/ | while read; do
|
||||
echo -e "\n--- Changes detected, restarting cargo r ---"
|
||||
|
||||
# Kill the previous cargo process
|
||||
kill_cargo
|
||||
|
||||
# Start a new cargo process
|
||||
cargo r &
|
||||
pid=$!
|
||||
done
|
||||
else
|
||||
# Use inotifywait for Linux
|
||||
while true; do
|
||||
# Wait for changes in the directory
|
||||
inotifywait -q -e modify,create,delete,move -r src/ assets/ 2>/dev/null
|
||||
|
||||
echo -e "\n--- Changes detected, restarting cargo r ---"
|
||||
|
||||
# Kill the previous cargo process
|
||||
kill_cargo
|
||||
|
||||
# Start a new cargo process
|
||||
cargo r &
|
||||
pid=$!
|
||||
done
|
||||
fi
|
||||
|
Reference in New Issue
Block a user