# Modalità "record" # Variabili e funzioni di supporto # a modalità record # Setta la data della nuova entry SHIFT_DATE="$(date +%F)" SHIFT_DATE_HUMAN= set_shift_date(){ SHIFT_DATE_OCCUR="$(grep -c $SHIFT_DATE $SHIFT_FILE)" if [ $SHIFT_DATE_OCCUR -ne 0 ] then SHIFT_DATE="$SHIFT_DATE::$((SHIFT_DATE_OCCUR+1))" SHIFT_DATE_HUMAN="$SHIFT_DATE (shift n. $((SHIFT_DATE_OCCUR+1)) for this date)" else SHIFT_DATE_HUMAN="$SHIFT_DATE" fi return 0 } # Setta il numero di ore di lavoro SHIFT_DURATION= set_shift_duration(){ while true do echo -n "Enter the duration of your shift in hours [Use an integer. Default: 2]: " read SHIFT_DURATION echo # Controlla che esista tra 1 e 4, se non esiste setta il default e interrompi case "$SHIFT_DURATION" in "") SHIFT_DURATION=2 break ;; 1|2|3|4) break ;; *) echo "The duration of the shift must be an integer between 1 and 4! Retry..." esac done return 0 } # Permette di inserire un commento SHIFT_COMMENT= ENC_SHIFT_COMMENT= set_shift_comment(){ echo "Something remarkable to say? [One line. Enter nothing for no comment]:" read -ep '>' SHIFT_COMMENT if [ -z "$SHIFT_COMMENT" ] then SHIFT_COMMENT="[No comment]" echo "No news are good news." else ENC_SHIFT_COMMENT="$(echo $SHIFT_COMMENT | base64 -w 0)" SHIFT_COMMENT="\"$SHIFT_COMMENT\"" fi return 0 } # Richiede conferma all'utente confirm_entry(){ echo -e "\nshiftctl will record this new entry in shifts database file:" echo "date: $SHIFT_DATE_HUMAN" echo "operator: $RUNNER" echo "shift duration: ${SHIFT_DURATION}h" echo -e "comment: $SHIFT_COMMENT\n" while true do echo -n "Confirm entry? [y/n]: " read -n 1 BOOL echo case "$BOOL" in y|Y) ## Registra l'entrata echo "$SHIFT_DATE;$RUNNER;$SHIFT_DURATION;$ENC_SHIFT_COMMENT" >> $SHIFT_FILE ||\ echoerr "Failed to record entry." echo -e "\n\e[0;32mEntry recorded.\e[0m Congratulations, more 150 points for you. *_*" break ;; n|N) echo -e "\nAbortion :(. Get on with your work!" break ;; *) echo -e '\nAre you retarded? Answer with "y" or "n"...' esac done return 0 } # record mode record(){ set_shift_date set_shift_duration set_shift_comment confirm_entry return 0 }