Modes:
	default: 
		reinstalls non-interactively with no delays, logouts, or reboots
			bash cron-reinstall-esp-idf.sh

	test:
		tests the script. very fast. minimal actions taken. no reinstall is done
			bash cron-reinstall-esp-idf.sh test

	retool:
	    reinstalls bins and export.sh, nothing else
		    bash cron-reinstall-esp-idf.sh retool

	cron:
		runs noninteractively with forced user logout and automatic reboot, plus delays
		    bash cron-reinstall-esp-idf.sh cron

	interactive:
		interactively installs/reinstalls esp-idf
		    bash cron-reinstall-esp-idf.sh interactive
    
    help:
        display this help text
            bash cron-reinstall-esp-idf.sh help


Features:
	`build` idf.py build  
	`changebaud` prompts to enter a new baud  
	`changeesp` prompts to type in esp32s3, esp32c6, etc  
	`changeport` opens a menu to select a serial port  
	`clean` idf.py clean  
	`fullclean` fully resets a project, 'idf.py fullclean' plus remove the build dir and delete some temp and backup files  
	`rebuildfull` does a `fullclean` but also an `erase-flash` and also `setup`  
	`setup` same as running `idf.py set-target $ESPTARGET; idf.py menuconfig; idf.py build`  
	`flash` idf.py flash  
	`monitor` idf.py monitor  
	`erase-flash` idf.py erase-flash  
	`save-defconfig` idf.py save-defconfig  
	`step-flash-monitor` attempt clean, build, flash, then monitor, dying on error  


Helpful Stuff:
	cron:
	    reinstall from master everyday at 8pm, logging out users with warn delays and rebooting after
		    crontab -e
		    0 8 * * * bash $HOME/esp/esp-install-custom/cron-reinstall-esp-idf.sh cron

	manually wipe logs: 
		rm $ESPIDF_INSTALLDIR/install.log; rm $ESPIDF_INSTALLDIR/version-data.txt; touch $ESPIDF_INSTALLDIR/install.log; touch $ESPIDF_INSTALLDIR/version-data.txt;

	monitor log file during install:
		tail -n 75 $ESPIDF_INSTALLDIR/install.log;