record_functions 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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 -ep '>' 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. SHIFT_COMMENT="\"$SHIFT_COMMENT\""
  54. fi
  55. return 0
  56. }
  57. # Richiede conferma all'utente
  58. confirm_entry(){
  59. echo -e "\nshiftctl will record this new entry in shifts database file:"
  60. echo "date: $SHIFT_DATE_HUMAN"
  61. echo "operator: $RUNNER"
  62. echo "shift duration: ${SHIFT_DURATION}h"
  63. echo -e "comment: $SHIFT_COMMENT\n"
  64. while true
  65. do
  66. echo -n "Confirm entry? [y/n]: "
  67. read -n 1 BOOL
  68. echo
  69. case "$BOOL" in
  70. y|Y)
  71. ## Registra l'entrata
  72. echo "$SHIFT_DATE;$RUNNER;$SHIFT_DURATION;$ENC_SHIFT_COMMENT" >> $SHIFT_FILE ||\
  73. echoerr "Failed to record entry."
  74. echo -e "\n\e[0;32mEntry recorded.\e[0m Congratulations, more 150 points for you. *_*"
  75. break
  76. ;;
  77. n|N)
  78. echo -e "\nAbortion :(. Get on with your work!"
  79. break
  80. ;;
  81. *)
  82. echo -e '\nAre you retarded? Answer with "y" or "n"...'
  83. esac
  84. done
  85. return 0
  86. }
  87. # record mode
  88. record(){
  89. set_shift_date
  90. set_shift_duration
  91. set_shift_comment
  92. confirm_entry
  93. return 0
  94. }