mirror of
https://github.com/marcogll/omarchy_setup.git
synced 2026-01-13 21:35:16 +00:00
feat: Update disk-format module to enable support for additional file systems and improve logging
This commit is contained in:
104
modules/disk-format.sh
Executable file → Normal file
104
modules/disk-format.sh
Executable file → Normal file
@@ -1,92 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
# ===============================================================
|
||||
# disk-format.sh - Formateo de discos (FAT32 / exFAT / NTFS / ext4)
|
||||
# disk-format.sh - Soporte para FAT32 / exFAT / NTFS / ext4
|
||||
# ===============================================================
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
source "${SCRIPT_DIR}/common.sh"
|
||||
|
||||
run_module_main() {
|
||||
log_step "Módulo: Formateo de discos (FAT32 / exFAT / NTFS / ext4)"
|
||||
log_step "Habilitar sistemas de archivos (FAT32 / exFAT / NTFS / ext4)"
|
||||
|
||||
# Dependencias
|
||||
local PKGS=(dosfstools exfatprogs ntfs-3g e2fsprogs)
|
||||
if ! pacman -T "${PKGS[@]}" &>/dev/null; then
|
||||
log_info "Instalando dependencias necesarias..."
|
||||
start_spinner "Instalando: ${PKGS[*]}..."
|
||||
if sudo pacman -S --needed --noconfirm "${PKGS[@]}"; then
|
||||
stop_spinner 0 "Dependencias instaladas."
|
||||
else
|
||||
stop_spinner 1 "No se pudieron instalar las dependencias."
|
||||
return 1
|
||||
local pkgs=(
|
||||
dosfstools
|
||||
exfatprogs
|
||||
ntfs-3g
|
||||
e2fsprogs
|
||||
gparted
|
||||
gnome-disk-utility
|
||||
)
|
||||
|
||||
local failed=false
|
||||
for pkg in "${pkgs[@]}"; do
|
||||
if ! check_and_install_pkg "$pkg"; then
|
||||
failed=true
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ "$failed" == true ]]; then
|
||||
log_warning "Algunos paquetes no se pudieron instalar. Revisa los mensajes anteriores."
|
||||
fi
|
||||
|
||||
echo
|
||||
lsblk -dpno NAME,SIZE,MODEL | sed '/loop/d' | nl -w2 -s'. '
|
||||
echo
|
||||
read -rp "Introduce el dispositivo a formatear (ej. /dev/sdb o /dev/sdb1): " DEVICE
|
||||
if [[ ! -b "$DEVICE" ]]; then
|
||||
log_error "Dispositivo no válido: $DEVICE"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Desmontar si está montado
|
||||
local mp
|
||||
mp=$(lsblk -no MOUNTPOINT "$DEVICE" | tr -d '[:space:]')
|
||||
if [[ -n "$mp" ]]; then
|
||||
log_warning "El dispositivo está montado en: $mp. Intentando desmontar..."
|
||||
sudo umount "${DEVICE}"* || {
|
||||
log_error "No se pudo desmontar $DEVICE"
|
||||
return 1
|
||||
}
|
||||
fi
|
||||
|
||||
echo
|
||||
echo "Tipos disponibles:"
|
||||
echo " 1) FAT32"
|
||||
echo " 2) exFAT"
|
||||
echo " 3) NTFS"
|
||||
echo " 4) ext4"
|
||||
read -rp "Selecciona tipo [1-4]: " ft
|
||||
case "$ft" in
|
||||
1) FS="fat32"; CMD_BASE="sudo mkfs.fat -F32" ;;
|
||||
2) FS="exfat"; CMD_BASE="sudo mkfs.exfat" ;;
|
||||
3) FS="ntfs"; CMD_BASE="sudo mkfs.ntfs -f" ;;
|
||||
4) FS="ext4"; CMD_BASE="sudo mkfs.ext4 -F" ;;
|
||||
*) log_error "Opción inválida"; return 1 ;;
|
||||
esac
|
||||
|
||||
read -rp "Etiqueta (opcional): " LABEL
|
||||
echo
|
||||
echo -e "ADVERTENCIA: Se eliminarán todos los datos en ${DEVICE}."
|
||||
read -rp "Escribe 'SI' para confirmar: " confirm
|
||||
if [[ "${confirm}" != "SI" ]]; then
|
||||
log_info "Operación cancelada"
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Añadir etiqueta si se proporcionó
|
||||
if [[ -n "${LABEL}" ]]; then
|
||||
case "$FS" in
|
||||
fat32) CMD="${CMD_BASE} -n ${LABEL} ${DEVICE}" ;;
|
||||
exfat) CMD="${CMD_BASE} -n ${LABEL} ${DEVICE}" ;;
|
||||
ntfs) CMD="${CMD_BASE} -L ${LABEL} ${DEVICE}" ;;
|
||||
ext4) CMD="${CMD_BASE} -L ${LABEL} ${DEVICE}" ;;
|
||||
esac
|
||||
else
|
||||
CMD="${CMD_BASE} ${DEVICE}"
|
||||
fi
|
||||
|
||||
log_info "Ejecutando: ${CMD}"
|
||||
if eval "${CMD}"; then
|
||||
log_success "Formateo completado: ${DEVICE} → ${FS}"
|
||||
return 0
|
||||
else
|
||||
log_error "Fallo al formatear ${DEVICE}"
|
||||
return 1
|
||||
fi
|
||||
log_success "Soporte de sistemas de archivos habilitado."
|
||||
echo ""
|
||||
log_info "Formatea manualmente con las utilidades instaladas:"
|
||||
echo " • FAT32 : sudo mkfs.fat -F32 /dev/sdXn"
|
||||
echo " • exFAT : sudo mkfs.exfat /dev/sdXn"
|
||||
echo " • NTFS : sudo mkfs.ntfs -f /dev/sdXn"
|
||||
echo " • ext4 : sudo mkfs.ext4 -F /dev/sdXn"
|
||||
log_info "Alternativamente puedes usar GParted o GNOME Disks para un asistente gráfico."
|
||||
return 0
|
||||
}
|
||||
|
||||
# Ejecutar si se llama directamente
|
||||
|
||||
@@ -107,11 +107,11 @@ MODULES=(
|
||||
["7"]="icon_manager;run_module_main;🎨 Gestionar Temas de Iconos (Papirus, Tela, etc.);fg"
|
||||
["8"]="davinci-resolve;install_davinci_resolve;🎬 Instalar DaVinci Resolve (Intel Edition);fg"
|
||||
["H"]="hyprland-config;run_module_main;🎨 Instalar Configuración de Hyprland;bg"
|
||||
["F"]="disk-format;run_module_main;💾 Formatear un Disco (FAT32, exFAT, NTFS, ext4);fg"
|
||||
["F"]="disk-format;run_module_main;💾 Habilitar Formatos FAT/exFAT/NTFS/ext4;bg"
|
||||
)
|
||||
|
||||
# Módulos a incluir en la opción "Instalar Todo"
|
||||
INSTALL_ALL_CHOICES=("1" "2" "3" "4" "5" "6" "8")
|
||||
INSTALL_ALL_CHOICES=("1" "2" "3" "4" "5" "6" "7" "8" "H")
|
||||
|
||||
# Función para mostrar el menú
|
||||
show_menu() {
|
||||
@@ -129,7 +129,7 @@ show_menu() {
|
||||
echo -e " ${GREEN}${key})${NC} ${description}"
|
||||
done | sort -V
|
||||
|
||||
echo -e " ${GREEN}A)${NC} ✅ Instalar Todo (opciones 1, 2, 3, 4, 5, 6, 8)"
|
||||
echo -e " ${GREEN}A)${NC} ✅ Instalar Todo (1, 2, 3, 4, 5, 6, 7, 8, H)"
|
||||
echo -e " ${GREEN}0)${NC} 🚪 Salir"
|
||||
echo ""
|
||||
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
@@ -303,7 +303,7 @@ main() {
|
||||
read -p "Presiona Enter para continuar..."
|
||||
|
||||
elif [[ "$choice" == "A" ]]; then
|
||||
log_warning "La opción 'Instalar Todo' ejecutará los módulos: 1, 2, 3, 4, 5, 6 y 8."
|
||||
log_warning "La opción 'Instalar Todo' ejecutará los módulos: 1, 2, 3, 4, 5, 6, 7, 8 y H."
|
||||
log_warning "DaVinci Resolve requiere que el ZIP de instalación esté en ~/Downloads/."
|
||||
echo -ne "${BOLD}¿Confirmas que deseas instalar todas las opciones ahora? [s/N]: ${NC}"
|
||||
read -r confirm
|
||||
|
||||
Reference in New Issue
Block a user