diff --git a/modules/disk-format.sh b/modules/disk-format.sh old mode 100755 new mode 100644 index 82e3706..3e73a41 --- a/modules/disk-format.sh +++ b/modules/disk-format.sh @@ -1,95 +1,47 @@ #!/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 if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then run_module_main "$@" -fi \ No newline at end of file +fi diff --git a/omarchy-setup.sh b/omarchy-setup.sh index 4a4ea9d..b0227be 100755 --- a/omarchy-setup.sh +++ b/omarchy-setup.sh @@ -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