#!/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