scripts/horaires/horaires.sh
2025-09-22 22:58:20 +02:00

65 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
# --- Gestion du fichier CSV ---
if [[ -f "$1" ]]; then
CSV_FILE="$1"
shift
else
CSV_FILE="./horaires.csv"
fi
# Traduction manuelle des jours (anglais -> français)
declare -A JOURS_EN_FR=(
["Monday"]="Lundi"
["Tuesday"]="Mardi"
["Wednesday"]="Mercredi"
["Thursday"]="Jeudi"
["Friday"]="Vendredi"
["Saturday"]="Samedi"
["Sunday"]="Dimanche"
)
# Liste des jours en français (1 = Lundi, ...)
JOURS=("Lundi" "Mardi" "Mercredi" "Jeudi" "Vendredi" "Samedi" "Dimanche")
# --- Fonction pour normaliser le jour ---
normalize_day() {
local jour=$1
if [[ -n "${JOURS_EN_FR[$jour]}" ]]; then
# Jour anglais → traduction
echo "${JOURS_EN_FR[$jour]}"
else
# Jour français → on force Majuscule initiale
echo "${jour^}"
fi
}
# --- Détermination du jour/semaine ---
if [[ "$1" =~ ^[1-2]$ ]]; then
JOUR_RAW=$(date -d "+$1 day" +"%A")
JOUR=$(normalize_day "$JOUR_RAW")
SEMAINE_NUM=$(date -d "+$1 day" +"%V")
((SEMAINE_NUM % 2 == 0)) && SEMAINE="A" || SEMAINE="B"
elif [[ "$1" =~ ^[1-7][AB]$ ]]; then
JOUR_INDEX=${1:0:1}
SEMAINE=${1:1:1}
JOUR=${JOURS[$((JOUR_INDEX - 1))]}
else
JOUR_RAW=$(date +"%A")
JOUR=$(normalize_day "$JOUR_RAW")
SEMAINE_NUM=$(date +"%V")
((SEMAINE_NUM % 2 == 0)) && SEMAINE="A" || SEMAINE="B"
fi
# --- Lecture du CSV ---
HORAIRE=$(awk -F, -v jour="$JOUR" -v semaine="$SEMAINE" '$1 == jour && $2 == semaine {print $3}' "$CSV_FILE")
# --- Résultat ---
if [[ -n "$HORAIRE" ]]; then
echo "Horaires de $JOUR (semaine $SEMAINE) : $HORAIRE"
else
echo "Aucun horaire trouvé pour $JOUR (semaine $SEMAINE)."
fi