Modes:
	Some take optional [branch] paramater
	[branch] is the esp-idf branch you desire, defaults to master if not specified.


	default: 
		reinstalls non-interactively with no delays, logouts, or reboots
			`run-esp-cmd`

	test:
		tests the script. very fast. minimal actions taken. no reinstall is done
			`run-esp-cmd test [branch]`
			`run-esp-cmd t [branch]`

	retool:
	    reinstalls bins and export.sh, nothing else
		    `run-esp-cmd retool`
			`run-esp-cmd rt`

	cron:
		runs noninteractively with forced user logout and automatic reboot, plus delays
		    `run-esp-cmd cron [branch]`
			`run-esp-cmd c [branch]`

	update:
		updates and installs latest without reboot or user logout
			`run-esp-cmd update [branch]`
			`run-esp-cmd u [branch]`

	interactive:
		interactively installs/reinstalls esp-idf
		    `run-esp-cmd interactive`
			`run-esp-cmd i`

	nuke:
		full delete and re-download and install
			`run-esp-cmd nuke [branch]`
			`run-esp-cmd n [branch]`
	
	nukereboot
		full delete and re-download and install, then reboot
			`run-esp-cmd nukereboot [branch]`
			`run-esp-cmd nr [branch]`

	clearlogs:
		clear logs
			`run-esp-cmd clearlogs`
			`run-esp-cmd clear`
			`run-esp-cmd cl`

    help:
        display this help text
            `run-esp-cmd help`
			`run-esp-cmd h`
			`run-esp-cmd -h`
			`run-esp-cmd --help`
			`help-esp-tools`

	uninstall:
		uninstall esp-idf
			`run-esp-cmd uninstall`


Usage:
	Once installed for the first time, restart your shell.
	to activate esp-idf with the custom additions, run:
		`get-esp-tools`
	exit with
		`exit-esp-tools`
	for help
		`help-esp-tools`


Features:
	`get-idf-tools` enter esp-idf
	`help-esp-tools` show this help
	`exit-esp-tools` exit esp-idf and reset terminal
	`build` idf.py build  
	`changebaud` alone prompts to enter baudrate
		`changebaud <baudrate>` sets baudrate manually
			ex. `changebaud 115200`
	`changeesp` change esp device
		`changeesp` alone prompts to enter
		`changeesp <esp device>` manually changes to <esp device>
			ex. `changeesp esp32p4`
	`changeport` change serial port
		`changeport` alone prompts to select
		`changeport <tty device path>` manually specifies path
			ex. `changeport /dev/ttyUSB0` changes to /dev/ttyUSB0
 	`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  
	`imagesize` get binary size, broken down in various ways including total, by componant, and by file
	`chipinfo` get information from the esp chip
	`espinfo` get detailed information about esp-idf and esp-idf-tools envrionment
	`menuconfig` run `idf.py menuconfig`
	`create-project` alone prompts for a project name
		`create-project <project name>` creates a project with <project name>
			ex. `create-project hello-world`
	`esp-install-monitor` monitors install.log. alias for `tail -n 75 -f $ESPIDFTOOLS_INSTALLDIR/install.log`
	`esp-install-logs` displays full text of install.log and version-data.txt
	`$examples` is a shortcut for examples directory in esp-idf
		ex. cd $examples`
	
Cronjob:
	reinstall from master everyday at 4am, logging out users with warn delays and rebooting after
	    `crontab -e`
	add below to bottom of file:
		`0 4 * * * bash $HOME/esp/esp-install-custom/esp-idf-tools-cmd.sh cron`
