shiftctl 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. #!/bin/bash
  2. #### Matteo Savatteri, 29-09-2018
  3. # Semplice script per registrare su
  4. # file e analizzare i turni di lavoro
  5. # dei 150
  6. ### Preambolo
  7. # Set percorso assoluto della directory
  8. # di shiftctl
  9. # (il percorso della repo di git)
  10. SHIFTCTL_DIR="/usr/local/src/lcm-unimi/shiftctl"
  11. # Source delle configurazione
  12. . "$SHIFTCTL_DIR/conf"
  13. ## Set variabili globali
  14. VERSION="2.2.1"
  15. RUNNER="$(whoami)"
  16. QUERY_OPERATOR="$RUNNER"
  17. QUERY_DATE="$(date +%F)"
  18. MODE=record
  19. MODE_FLAG=
  20. CMDLN_FAIL=
  21. ## source definizione funzioni
  22. . "$SHIFTCTL_DIR/functions"
  23. ### Execution
  24. ## Init
  25. # Presentati
  26. print_banner
  27. # Parsa la linea di comando
  28. while getopts ":hvtrldo:eD:" flag
  29. do
  30. case "$flag" in
  31. h)
  32. set_mode help
  33. ;;
  34. v)
  35. set_mode version
  36. ;;
  37. t)
  38. set_mode grand_total
  39. ;;
  40. r)
  41. set_mode rotate
  42. ;;
  43. l)
  44. set_mode license
  45. ;;
  46. d)
  47. set_mode date
  48. ;;
  49. o)
  50. check_opt_dep "d"
  51. QUERY_OPERATOR="$OPTARG"
  52. ;;
  53. e)
  54. set_mode entry
  55. ;;
  56. D)
  57. check_opt_dep "e"
  58. QUERY_DATE="$OPTARG"
  59. ;;
  60. \?)
  61. echo -e "\nIllegal option: -$OPTARG."
  62. CMDLN_FAIL=1
  63. ;;
  64. \:)
  65. echo -e "\nOption -$OPTARG requires an argument."
  66. CMDLN_FAIL=1
  67. esac
  68. done
  69. shift $(($OPTIND - 1))
  70. # Controlla non ci siano argomenti non necessari
  71. [ -z "$*" ] ||\
  72. { echo -e "\nOne or more unexpected arguments: $*"; CMDLN_FAIL=1; }
  73. # Controlla errori in linea di comando
  74. [ -z "$CMDLN_FAIL" ] ||\
  75. { print_usage; echoerr "Incorrect command line. RTFM!"; }
  76. # Esegui i check
  77. case "$MODE" in
  78. record)
  79. check_runner
  80. smartinit_dbfile
  81. ;;
  82. grand_total|date|entry)
  83. smartinit_dbfile
  84. ;;
  85. rotate)
  86. check_root
  87. esac
  88. ## Main
  89. # Seleziona la modalità corretta
  90. case "$MODE" in
  91. record)
  92. # Registra una nuova entry
  93. record
  94. ;;
  95. grand_total)
  96. # Produce il gran totale delle ore
  97. print_gtotal
  98. ;;
  99. rotate)
  100. # Ruota il file dei turni
  101. rotate_dbfile
  102. ;;
  103. date)
  104. # Mostra date turni operatore
  105. show_operator_dates "$QUERY_OPERATOR"
  106. ;;
  107. entry)
  108. # Mostra entrate corrispondenti alla data
  109. show_entries_by_date "$QUERY_DATE"
  110. ;;
  111. help)
  112. # Mostra aiuto
  113. print_usage
  114. ;;
  115. version)
  116. # Mostra versione
  117. print_version
  118. ;;
  119. license)
  120. # Mostra licenza
  121. show_license
  122. ;;
  123. esac
  124. # Esci con grazia
  125. exit 0