From 762be270d525093a26819c20a3c7e473f92316cc Mon Sep 17 00:00:00 2001 From: Jared Vititoe Date: Sat, 1 Mar 2025 13:53:08 -0500 Subject: [PATCH] Reduced code base --- driveAtlas.sh | 56 ++++++++++++--------------------------------------- 1 file changed, 13 insertions(+), 43 deletions(-) diff --git a/driveAtlas.sh b/driveAtlas.sh index e2502f8..66ea0ab 100644 --- a/driveAtlas.sh +++ b/driveAtlas.sh @@ -32,42 +32,6 @@ get_drives_info() { done } -get_bay_number() { - local drive=$1 - local drive_name=$(basename "$drive") - - # Search through mappings for this drive - while IFS=: read -r path bay device; do - if [[ "$drive_name" == "$device" ]]; then - echo "$bay" - return - fi - done <<< "${DRIVE_MAPPINGS[medium2]}" -} - -get_physical_mapping() { - local -A drive_map - - # Map NVMe drives - for nvme in /dev/nvme*n1; do - if [ -b "$nvme" ]; then - drive_map[11]=$(basename "$nvme") - fi - done - - # Map SATA drives - for drive in /dev/sd[a-z]; do - if [ -b "$drive" ]; then - local bay=$(get_bay_number "$drive") - if [[ -n "$bay" ]]; then - drive_map[$bay]=$(basename "$drive") - fi - fi - done - - echo "$(declare -p drive_map)" -} - declare -A DRIVE_MAPPINGS=( ["medium2"]=" pci-0000:0c:00.0-ata-3:3 @@ -82,7 +46,7 @@ declare -A DRIVE_MAPPINGS=( build_drive_map() { local host=$(hostname) - local drive_map=() + declare -A drive_map # Get mapping for current host local mapping=${DRIVE_MAPPINGS[$host]} @@ -95,13 +59,18 @@ build_drive_map() { if [[ -L "/dev/disk/by-path/$path" ]]; then local drive=$(readlink -f "/dev/disk/by-path/$path" | sed 's/.*\///') - drive_map+=("${slot}:${drive}") + drive_map[$slot]=$drive fi done <<< "$mapping" fi + + # Make drive_map available globally + declare -g -A DRIVE_MAP=() + for key in "${!drive_map[@]}"; do + DRIVE_MAP[$key]=${drive_map[$key]} + done } - # Define the ASCII art maps large1=''' ┌─────────────────────────────────────────────────────────────┐ @@ -157,12 +126,13 @@ medium1=''' ''' generate_medium2_layout() { - eval "$(get_physical_mapping)" + # Build the drive map first + build_drive_map # USB Section with dynamic mapping printf " External USB [0b:00.0]\n" printf " ┌────────┐ ┌────────┐\n" - printf " │ %-6s │ │ %-6s │\n" "${drive_map[usb1]:-EMPTY}" "${drive_map[usb2]:-EMPTY}" + printf " │ %-6s │ │ %-6s │\n" "${DRIVE_MAP[usb1]:-EMPTY}" "${DRIVE_MAP[usb2]:-EMPTY}" printf " └────────┘ └────────┘\n\n" # Rest of chassis layout with enhanced drive info @@ -171,14 +141,14 @@ generate_medium2_layout() { printf "│ │\n" printf "│ NVMe [0d:00.0] Bay 11 │\n" printf "│ ┌────────┐ │\n" - printf "│ │ %-6s │ │\n" "${drive_map[11]:-EMPTY}" + printf "│ │ %-6s │ │\n" "${DRIVE_MAP[11]:-EMPTY}" printf "│ └────────┘ │\n" printf "│ │\n" printf "│ Front Hot-swap Bays [0c:00.0] │\n" printf "│ ┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐┌────────┐ │\n" for bay in {1..10}; do - printf "│ │%-2d:%-4s │" "$bay" "${drive_map[$bay]:-EMPTY}" + printf "│ │%-2d:%-4s │" "$bay" "${DRIVE_MAP[$bay]:-EMPTY}" done printf " │\n"