#!/bin/bash

# ===== Couleurs =====
C_RESET="\e[0m"
C_DIR="\e[34m"        # Dossiers
C_FILE="\e[32m"       # Fichiers
C_ARCH="\e[35m"       # Archives
C_SCRIPT="\e[33m"     # Scripts .sh .py .pl
C_IMG="\e[36m"        # Images
C_VIDEO="\e[31m"      # Vidéos
C_AUDIO="\e[95m"      # Musique
C_HEAD="\e[96m"       # En-têtes
C_SIZE="\e[90m"       # Gris fade pour la taille


directory="${1:-.}"
display_dir=$(realpath "$directory")

# ===== Vérifications =====
if [ ! -d "$directory" ]; then
    echo -e "\e[31m❌ Erreur : dossier introuvable : $directory${C_RESET}"
    exit 1
fi

echo -e "${C_HEAD}📁${C_RESET} Listing du dossier :${C_HEAD} $display_dir${C_RESET}"
echo -e "${C_FILE}📦${C_RESET} Taille totale :${C_FILE} $(du -sh "$directory" | awk '{print $1}')${C_RESET}"
echo

# ===== En-têtes (sans LINKS) =====
printf "%-6s %-11s %-12s %-12s %-8s %-17s %s\n" \
"TYPE" "PERMISSIONS" "OWNER" "GROUP" "SIZE" "DATE" "NAME"

# ===== Fonction type et couleur =====
get_type_color() {
    local f="$1"

    if [ -d "$f" ]; then echo "📁 ${C_DIR}"
    elif [[ "$f" =~ \.(zip|tar|gz|bz2|xz|rar|7z)$ ]]; then echo "📚 ${C_ARCH}"
    elif [[ "$f" =~ \.(sh|py|pl|rb)$ ]]; then echo "🔧 ${C_SCRIPT}"
    elif [[ "$f" =~ \.(jpg|jpeg|png|gif|webp)$ ]]; then echo "🖼️ ${C_IMG}"
    elif [[ "$f" =~ \.(mp4|avi|mkv|mov)$ ]]; then echo "🎞️ ${C_VIDEO}"
    elif [[ "$f" =~ \.(mp3|wav|ogg|flac)$ ]]; then echo "🎵 ${C_AUDIO}"
    else echo "📄 ${C_FILE}"
    fi
}

# ===== Listing =====
ls -A "$directory" | while read entry; do
    path="$directory/$entry"

    type_color=$(get_type_color "$entry")
    emoji=$(echo "$type_color" | awk '{print $1}')
    color=$(echo "$type_color" | awk '{print $2}')

    perms=$(stat -c "%A" "$path")
    owner=$(stat -c "%U" "$path")
    group=$(stat -c "%G" "$path")
    size_raw=$(du -sh "$path" 2>/dev/null | awk '{print $1}')
    date=$(stat -c "%y" "$path" | cut -d':' -f1,2)   # Retire les secondes (HH:MM)

    printf "%b%-6s%b %-11s %-12s %-12s %b%-8s%b %-17s %b%s%b\n" \
        "$color" "$emoji" "$C_RESET" \
        "$perms" "$owner" "$group" \
        "$C_SIZE" "$size_raw" "$C_RESET" \
        "$date" \
        "$color" "$entry" "$C_RESET"

done

echo
exit 0
