|
- #!/bin/bash
-
- VERBOSE=0
- CONFIG_DIR=$HOME/.config/crolim
- MEMORY_FILE=${CONFIG_DIR}/memory
- STATUS_COMMAND="date +%D"
-
- function usage() {
- echo "Usage: $0 [OPTIONS] COMMAND"
- echo " $0 -h"
- echo ""
- echo " -h ... show help"
- echo ""
- echo " OPTIONS"
- echo " -m --memory-file ... location to store previous status value"
- echo " -s --status-command ... command to execute to get the current status"
- echo " -v --verbose ... verbose mode"
- echo " COMMAND ... command to limit until memory and status are the same"
- }
-
- # read the options
- TEMP=`getopt -o m:s:hv --long memory-file:,status-command:,help,verbose -- "$@"`
- eval set -- "$TEMP"
-
- while true ; do
- case "$1" in
- -h | --help) usage; exit 0
- ;;
- -v | --verbose) VERBOSE=1 ; shift
- ;;
- -m | --memory-file)
- MEMORY_FILE=$2 ; shift 2
- ;;
- -s | --status-command)
- STATUS_COMMAND=$2 ; shift 2
- ;;
- --) shift ; break ;;
- *) echo "Internal error!" ; exit 1 ;;
- esac
- done
-
- # check limiting condition
- #mkdir -p `dirname $MEMORY_FILE`
- STATUS_NOW=`eval $STATUS_COMMAND`
- STATUS_MEMORY=""
- if [[ -f $MEMORY_FILE ]]; then
- STATUS_MEMORY=`cat $MEMORY_FILE`
- fi
- if [[ "$STATUS_NOW" == "$STATUS_MEMORY" ]]; then
- [[ $VERBOSE == 1 ]] && echo "Limiting, status is the same: ${STATUS_NOW}"
- exit 0
- else
- [[ $VERBOSE == 1 ]] && echo "Status changed from '${STATUS_MEMORY}' to '${STATUS_NOW}'"
- echo ${STATUS_NOW} > $MEMORY_FILE || { echo "Cannot update memory file: $MEMORY_FILE" ; exit 1 ; }
- fi
-
- # run the command!
- eval $@
|