record_functions 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # Modalità "record"
  2. # Variabili e funzioni di supporto
  3. # a modalità record
  4. # Setta la data della nuova entry
  5. SHIFT_DATE="$(date +%F)"
  6. SHIFT_DATE_HUMAN=
  7. set_shift_date(){
  8. SHIFT_DATE_OCCUR="$(grep -c $SHIFT_DATE $SHIFT_FILE)"
  9. if [ $SHIFT_DATE_OCCUR -ne 0 ]
  10. then
  11. SHIFT_DATE="$SHIFT_DATE::$((SHIFT_DATE_OCCUR+1))"
  12. SHIFT_DATE_HUMAN="$SHIFT_DATE (shift n. $((SHIFT_DATE_OCCUR+1)) for this date)"
  13. else
  14. SHIFT_DATE_HUMAN="$SHIFT_DATE"
  15. fi
  16. return 0
  17. }
  18. # Setta il numero di ore di lavoro
  19. SHIFT_DURATION=
  20. set_shift_duration(){
  21. while true
  22. do
  23. echo -n "Enter the duration of your shift in hours [Use an integer. Default: 2]: "
  24. read SHIFT_DURATION
  25. echo
  26. # Controlla che esista tra 1 e 4, se non esiste setta il default e interrompi
  27. case "$SHIFT_DURATION" in
  28. "")
  29. SHIFT_DURATION=2
  30. break
  31. ;;
  32. 1|2|3|4)
  33. break
  34. ;;
  35. *)
  36. echo "The duration of the shift must be an integer between 1 and 4! Retry..."
  37. esac
  38. done
  39. return 0
  40. }
  41. # Permette di inserire un commento
  42. SHIFT_COMMENT=
  43. ENC_SHIFT_COMMENT=
  44. set_shift_comment(){
  45. echo "Something remarkable to say? [One line. Enter nothing for no comment]:"
  46. read SHIFT_COMMENT
  47. if [ -z "$SHIFT_COMMENT" ]
  48. then
  49. SHIFT_COMMENT="No comment"
  50. echo "No news are good news."
  51. else
  52. ENC_SHIFT_COMMENT="$(echo $SHIFT_COMMENT | base64 -w 0)"
  53. fi
  54. return 0
  55. }
  56. # Richiede conferma all'utente
  57. confirm_entry(){
  58. echo -e "\nshiftctl will record this new entry in shifts database file:"
  59. echo "date: $SHIFT_DATE_HUMAN"
  60. echo "operator: $RUNNER"
  61. echo "shift duration: $SHIFT_DURATION"
  62. echo -e "comment: $SHIFT_COMMENT\n"
  63. while true
  64. do
  65. echo -n "Confirm entry? [y/n]: "
  66. read -n 1 BOOL
  67. echo
  68. case "$BOOL" in
  69. y|Y)
  70. ## Registra l'entrata
  71. echo "$SHIFT_DATE;$RUNNER;$SHIFT_DURATION;$ENC_SHIFT_COMMENT" >> $SHIFT_FILE ||\
  72. echoerr "Failed to record entry."
  73. echo -e "\n\e[0;32mEntry recorded.\e[0m Congratulation, more 150 points for you. *_*"
  74. break
  75. ;;
  76. n|N)
  77. echo -e "\nAbortion :(. Get on with your work!"
  78. break
  79. ;;
  80. *)
  81. echo -e '\nAre you retarded? Answer with "y" or "n"...'
  82. esac
  83. done
  84. return 0
  85. }
  86. # record mode
  87. record(){
  88. set_shift_date
  89. set_shift_duration
  90. set_shift_comment
  91. confirm_entry
  92. return 0
  93. }