|
| 1 | +#!/bin/sh |
| 2 | + |
| 3 | +# Handle closing application on signal interrupt (ctrl + c) |
| 4 | +trap 'kill $CONTINUOUS_INSTALL_PID $SERVER_PID; gradle --stop; exit' INT |
| 5 | + |
| 6 | +mkdir logs |
| 7 | +# Reset log file content for new application boot |
| 8 | +echo "*** Logs for continuous installer ***" > ./logs/installer.log |
| 9 | +echo "*** Logs for 'npm run start' ***" > ./logs/runner.log |
| 10 | + |
| 11 | +# Print that the application is starting in watch mode |
| 12 | +echo "starting application in watch mode..." |
| 13 | + |
| 14 | +# Start the continious build listener process |
| 15 | +echo "starting continuous installer..." |
| 16 | +npm install |
| 17 | + |
| 18 | +( package_modify_time=$(stat -c %Y package.json) |
| 19 | +package_lock_modify_time=$(stat -c %Y package-lock.json) |
| 20 | +while sleep 1 |
| 21 | +do |
| 22 | + new_package_modify_time=$(stat -c %Y package.json) |
| 23 | + new_package_lock_modify_time=$(stat -c %Y package-lock.json) |
| 24 | + |
| 25 | + if [[ "$package_modify_time" != "$new_package_modify_time" ]] || [[ "$package_lock_modify_time" != "$new_package_lock_modify_time" ]] |
| 26 | + then |
| 27 | + echo "running npm install..." |
| 28 | + npm install | tee ./logs/installer.log |
| 29 | + fi |
| 30 | + |
| 31 | + package_modify_time=$new_package_modify_time |
| 32 | + package_lock_modify_time=$new_package_lock_modify_time |
| 33 | + |
| 34 | +done ) & CONTINUOUS_INSTALL_PID=$! |
| 35 | + |
| 36 | +# Start server process once initial build finishes |
| 37 | +( npm run start | tee ./logs/runner.log ) & SERVER_PID=$! |
| 38 | + |
| 39 | +# Handle application background process exiting |
| 40 | +wait $CONTINUOUS_INSTALL_PID $SERVER_PID |
| 41 | +EXIT_CODE=$? |
| 42 | +echo "application exited with exit code $EXIT_CODE..." |
| 43 | + |
0 commit comments