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