123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #!/bin/bash
- #### Matteo Savatteri, 29-09-2018
- # Semplice script per registrare su
- # file e analizzare i turni di lavoro
- # dei 150
- ### Preambolo
- # Set percorso assoluto della directory
- # di shiftctl
- # (il percorso della repo di git)
- SHIFTCTL_DIR="/usr/local/src/lcm-unimi/shiftctl"
- # Source delle configurazione
- . "$SHIFTCTL_DIR/conf"
- ## Set variabili globali
- VERSION="2.2.1"
- RUNNER="$(whoami)"
- QUERY_OPERATOR="$RUNNER"
- QUERY_DATE="$(date +%F)"
- MODE=record
- MODE_FLAG=
- CMDLN_FAIL=
- ## source definizione funzioni
- . "$SHIFTCTL_DIR/functions"
- ### Execution
- ## Init
- # Presentati
- print_banner
- # Parsa la linea di comando
- while getopts ":hvtrldo:eD:" flag
- do
- case "$flag" in
- h)
- set_mode help
- ;;
- v)
- set_mode version
- ;;
- t)
- set_mode grand_total
- ;;
- r)
- set_mode rotate
- ;;
- l)
- set_mode license
- ;;
- d)
- set_mode date
- ;;
- o)
- check_opt_dep "d"
- QUERY_OPERATOR="$OPTARG"
- ;;
- e)
- set_mode entry
- ;;
- D)
- check_opt_dep "e"
- QUERY_DATE="$OPTARG"
- ;;
- \?)
- echo -e "\nIllegal option: -$OPTARG."
- CMDLN_FAIL=1
- ;;
- \:)
- echo -e "\nOption -$OPTARG requires an argument."
- CMDLN_FAIL=1
- esac
- done
- shift $(($OPTIND - 1))
- # Controlla non ci siano argomenti non necessari
- [ -z "$*" ] ||\
- { echo -e "\nOne or more unexpected arguments: $*"; CMDLN_FAIL=1; }
- # Controlla errori in linea di comando
- [ -z "$CMDLN_FAIL" ] ||\
- { print_usage; echoerr "Incorrect command line. RTFM!"; }
- # Esegui i check
- case "$MODE" in
- record)
- check_runner
- smartinit_dbfile
- ;;
- grand_total|date|entry)
- smartinit_dbfile
- ;;
- rotate)
- check_root
- esac
- ## Main
- # Seleziona la modalità corretta
- case "$MODE" in
- record)
- # Registra una nuova entry
- record
- ;;
- grand_total)
- # Produce il gran totale delle ore
- print_gtotal
- ;;
- rotate)
- # Ruota il file dei turni
- rotate_dbfile
- ;;
- date)
- # Mostra date turni operatore
- show_operator_dates "$QUERY_OPERATOR"
- ;;
- entry)
- # Mostra entrate corrispondenti alla data
- show_entries_by_date "$QUERY_DATE"
- ;;
- help)
- # Mostra aiuto
- print_usage
- ;;
- version)
- # Mostra versione
- print_version
- ;;
- license)
- # Mostra licenza
- show_license
- ;;
- esac
- # Esci con grazia
- exit 0
|