diff options
author | Jesus <heckyel@hyperbola.info> | 2025-05-18 20:09:31 -0500 |
---|---|---|
committer | Jesus <heckyel@hyperbola.info> | 2025-05-18 20:09:31 -0500 |
commit | c98c789f32ac45ca231350b8bacca07692afe749 (patch) | |
tree | acda5ecbb4bbc297478ae3027fe57a98f5ad56f7 | |
parent | d5e477f13dd41081bba461eb9ae34423d91f5790 (diff) | |
download | hyperterm-c98c789f32ac45ca231350b8bacca07692afe749.tar.lz hyperterm-c98c789f32ac45ca231350b8bacca07692afe749.tar.xz hyperterm-c98c789f32ac45ca231350b8bacca07692afe749.zip |
Add autodep.sh
-rw-r--r-- | hyperterm/core/autodep.sh | 63 | ||||
-rw-r--r-- | hyperterm/core/update.sh | 2 | ||||
-rw-r--r-- | hyperterm/hyperterm.sh | 3 | ||||
-rw-r--r-- | hyperterm/hyperterm.sha512 | 7 | ||||
-rw-r--r-- | hyperterm/tools/rar2zip.sh | 94 |
5 files changed, 122 insertions, 47 deletions
diff --git a/hyperterm/core/autodep.sh b/hyperterm/core/autodep.sh new file mode 100644 index 0000000..a106c82 --- /dev/null +++ b/hyperterm/core/autodep.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +function install_package() { + local pkg="$1" + + if command -v "$pkg" &>/dev/null; then + return 0 + fi + + msg "El paquete $pkg no se encontró. Procediendo a instalar..." \ + "$pkg not found. Attempting to install..." + + local INSTALLER="" + local SUDO="" + local USER_CMD=$(command -v sudo || command -v doas) + + [[ "$(id -u)" -ne 0 ]] && SUDO="$USER_CMD" + + local OS_ID="" + if [ -f /etc/os-release ]; then + OS_ID=$(grep "^ID=" /etc/os-release | head -n1 | cut -d= -f2 | tr -d '"') + OS_ID=${OS_ID,,} + fi + + case "$OS_ID" in + arch|manjaro|artix|hyperbola) + INSTALLER="pacman -Sy --noconfirm $pkg" + ;; + debian|ubuntu|linuxmint|elementary|pop) + INSTALLER="apt-get update && apt-get install -y $pkg" + ;; + fedora) + INSTALLER="dnf install -y $pkg" + ;; + void) + INSTALLER="xbps-install -Sy $pkg" + ;; + gentoo) + INSTALLER="emerge app-arch/$pkg" + ;; + alpine) + INSTALLER="apk add $pkg" + ;; + *) + msg_err "Distro no compatible con la instalación automática de $pkg." \ + "Unsupported distro for automatic $pkg installation." + return 1 + ;; + esac + + msg "Ejecutando instalación con: $SUDO $INSTALLER" \ + "Running install command: $SUDO $INSTALLER" + + $SUDO bash -c "$INSTALLER" + + if command -v "$pkg" &>/dev/null; then + return 0 + else + msg_err "Falló al instalar: $pkg" \ + "Failed to install $pkg." + return 1 + fi +} diff --git a/hyperterm/core/update.sh b/hyperterm/core/update.sh index ade74e3..dcd71d0 100644 --- a/hyperterm/core/update.sh +++ b/hyperterm/core/update.sh @@ -106,7 +106,7 @@ function updbashrc() { sleep 1 # Step 3: Core files - for f in autocomplete.sh colors.sh git.sh languages.sh status.sh update.sh; do + for f in autocomplete.sh autodep.sh colors.sh git.sh languages.sh status.sh update.sh; do download_file "hyperterm/core/$f" "$HOME/.hyperterm/core/$f" done diff --git a/hyperterm/hyperterm.sh b/hyperterm/hyperterm.sh index 38b1cb6..f70458c 100644 --- a/hyperterm/hyperterm.sh +++ b/hyperterm/hyperterm.sh @@ -34,10 +34,11 @@ if [[ -f $HOME/.hyperterm/tools/aliases.sh ]]; then source "$HOME/.hyperterm/too # bash_functions #---------------- # [ core ] +if [[ -f $HOME/.hyperterm/core/languages.sh ]]; then source "$HOME/.hyperterm/core/languages.sh"; else true; fi +if [[ -f $HOME/.hyperterm/core/autodep.sh ]]; then source "$HOME/.hyperterm/core/autodep.sh"; else true; fi if [[ -f $HOME/.hyperterm/core/autocomplete.sh ]]; then source "$HOME/.hyperterm/core/autocomplete.sh"; else true; fi if [[ -f $HOME/.hyperterm/core/colors.sh ]]; then source "$HOME/.hyperterm/core/colors.sh"; else true; fi if [[ -f $HOME/.hyperterm/core/git.sh ]]; then source "$HOME/.hyperterm/core/git.sh"; else true; fi -if [[ -f $HOME/.hyperterm/core/languages.sh ]]; then source "$HOME/.hyperterm/core/languages.sh"; else true; fi if [[ -f $HOME/.hyperterm/core/status.sh ]]; then source "$HOME/.hyperterm/core/status.sh"; else true; fi if [[ -f $HOME/.hyperterm/core/update.sh ]]; then source "$HOME/.hyperterm/core/update.sh"; else true; fi diff --git a/hyperterm/hyperterm.sha512 b/hyperterm/hyperterm.sha512 index c4f0cd9..a710e09 100644 --- a/hyperterm/hyperterm.sha512 +++ b/hyperterm/hyperterm.sha512 @@ -1,11 +1,12 @@ cdfe049ec07f02a1893cda29c13085d06709e09a30b0c2e1111585278315f03139d61080c883cb3fd87f2bf64e05d9b5e5eaaad84c97ced890d83c73eb399fcb ../.bash_profile -57bf0f09423414323ada7c518e2865db8651aa1b239fb5d89d3eb0687d4c3f5d8fe66fe48c6988ff50db0f54f67edfd36c4ea3193fe909c2349eee4a3efcdaa6 ./core/update.sh +d8aee7e20496df3fc31a903a85d086acddbe9c618b88cf5bd22a2c052593a058d956d50e9c6c27eeac3be8899f3cfac13050b43bba9fb4c8f0656d509c7decc3 ./core/update.sh 1cfba599047d84a17ff92b695ebf527a505a30acc9ec21a2b9f410a7ea6dde4b23b5cf62e557d82f2fe9a8980649942424b879ca53baae4d4cb3057681baa7b6 ./core/colors.sh 065cfa39f1b4312ed275ad1039827a24f703176c653a8d27303d145f9d389a60ec5b3a9eb167e060cc6fd093b9c03cfb1a8b70254d444fbc6e62e2297d88b310 ./core/status.sh 2036a79215a5434e31f3406bea3f2ffa7e94ffef86c2d1ceb8865db29f19fe7f342f9cab93288f57c75daed36ef146f85d15f8d633931a27d55c3983f55ef15b ./core/git.sh +55b23b0311ba3c3061084bcacf4ae7d679a3e3653270def15014fef173d5c930ee2b4378e61b9e67b369ff8c08624e592b2bd87271a00be8fb16ee05cdd6dc3f ./core/autodep.sh 7447d3e167ab207d3ef4218e201a06bf5a3fc23281639f16f7f405f1d66b73923845d450fdb0a94672757866a9da0324f728564a1b61b2ed1678fe576eb565cf ./core/autocomplete.sh f3e00b2aa8ab9f3ab44570adaa2520408ed66fd00f551654d60b64a4be3546ec781b7efa39bcd774937e654b6ffb4c7af3f21eeb36caf9c01f82f85cf28e2b4d ./core/languages.sh -b846a929844e74fc76ce65d2bd7aefcdeb03e058d9ce68a7f3f6bce6080a843d90eae78cecc2faac0c5b066a739a8328dfcd042cd25cb5aaa856e956a0c4d0c2 ./tools/rar2zip.sh +fd5f163c7503cb65daf095f0352e67541aecfbf5ed14ca4b74605a3e158b8d54d7f1a20079471245fe462dd7408b11b0027c9c2c25a961418d8f51b4006bf566 ./tools/rar2zip.sh 73becd983f15d68b3c459adb4fe847bbbd6343519640aa5e03bb530e61a59ed0545dd3b3621ad82da378bbf15c4d9ee63984004d3bfed26d9d9df643f1524de5 ./tools/proxy.sh 0b9671c851278cd6a5484ab95b62606b0b925f9606f4de400c5e15a66e35e86bb6bb15e4e1b599ca819c230604bce0ca755d599ec9cd59a14b41f352ef897997 ./tools/aliases.sh fab9d339a99c7d2e1809d1c44f533523c6bfcdcc8d63c62b335ce7d4c666c8bdd7ac319316bf71f043163a3a0184e25ecfe1ee32724627424d042a05fa80ce77 ./tools/vconverter.sh @@ -24,4 +25,4 @@ f760432c3d76befad30588299eb2d1412d77b22fd850ffbd840c72123885d4e916a7e0b16e7048c5 074e8549d638dee7470583c04ebbb7408181974806bd5e2cf5fc134ddee83c01040ed9d59a8aa00a87287b25df1c2e23edf3c063426952a8aeb56db8310ef8fd ./themes/joy.sh 07bb7b6bd609e855d0a7c9e39a0ff2959851f559106e8f59816312f298b03e87f39e53430869ed61a1271e265e976ea6b56f7ccee46c4ec3c37b40f1fc11cfad ./themes/default.sh c6c149704883ce5cbbd941019259effb105dd6910c98910782024311b3362df2e68d03c947908d40686c2620c1521aeee2ffb019a906ad367be1cc3d429ecd82 ./themes/minterm.sh -04ab2fefad0680b22001f241e2ce772d07eadef206bd09208627d9dc1b4366d190374d439930215db5f5a742f9fe0bba8fcbaf34164a9332ad7e132c70ba9f92 ./hyperterm.sh +33e0f862f72b0269de38545d2d41fcd7372f285841d0429614b7b206bc5ad5e8a51a4bdbf44e41c117e6ff642d8cc1521e8525bbb08c0d03a3ba69c6c978dbf8 ./hyperterm.sh diff --git a/hyperterm/tools/rar2zip.sh b/hyperterm/tools/rar2zip.sh index 54ec926..d2ba15a 100644 --- a/hyperterm/tools/rar2zip.sh +++ b/hyperterm/tools/rar2zip.sh @@ -7,51 +7,50 @@ function check_and_install_7z() { if command -v 7z &>/dev/null; then - return + return 0 fi - echo "7z not found. Attempting to install..." - - INSTALLER="" - SUDO="" - USER_CMD=$(command -v sudo || command -v doas) + install_package p7zip +} - [[ "$(id -u)" -ne 0 ]] && SUDO="$USER_CMD" +function check_and_install_unar_unrar() { + local unar_missing=0 + local unrar_missing=0 - OS_ID=$( - cat /etc/*release 2>/dev/null | - tr '[:upper:]' '[:lower:]' | - grep "^id=" | head -n1 | cut -d= -f2 | tr -d '"' - ) + command -v unar &>/dev/null || unar_missing=1 + command -v unrar &>/dev/null || unrar_missing=1 - case "$OS_ID" in - arch|manjaro|artix|hyperbola) - INSTALLER="pacman -Sy --noconfirm p7zip" - ;; - debian|ubuntu|linuxmint|elementary|pop) - INSTALLER="apt-get update && apt-get install -y p7zip-full" - ;; - fedora) - INSTALLER="dnf install -y p7zip p7zip-plugins" - ;; - void) - INSTALLER="xbps-install -Sy p7zip" + case "$unar_missing$unrar_missing" in + 00) + # both installed + return 0 ;; - gentoo) - INSTALLER="emerge app-arch/p7zip" + 10) + # unar installed, unrar missing + install_package unrar && return 0 ;; - alpine) - INSTALLER="apk add p7zip" + 01) + # unrar installed, unar missing + install_package unar && return 0 ;; - *) - echo "Unsupported distro. Cannot install 7z automatically." + 11) + # both missing, try unar first, then unrar + install_package unar && return 0 + install_package unrar && return 0 + echo "Error: could not install either unar or unrar." return 1 ;; esac +} - if [ -n "$INSTALLER" ]; then - echo "Installing 7z using: $SUDO $INSTALLER" - $SUDO bash -c "$INSTALLER" +function extract_rar() { + if command -v unar &>/dev/null; then + unar "$1" -o "$2" + elif command -v unrar &>/dev/null; then + unrar x -o+ "$1" "$2" + else + echo "Error: neither unar nor unrar available to extract $1" + return 1 fi } @@ -61,34 +60,45 @@ function rar2zip() { exit 1 } + check_and_install_unar_unrar || { + echo "Failed to install unar or unrar. Aborting." + exit 1 + } + echo "Converting RAR files to ZIP..." - WORKDIR="/dev/shm/" + WORKDIR="/dev/shm" for INFILE in "$@"; do - OLDFILE=$(realpath "${INFILE}") + OLDFILE=$(realpath "$INFILE") BASENAME=$(basename "${OLDFILE%.*}") DIRNAME=$(dirname "$OLDFILE") - NEWNAME="${DIRNAME}/$BASENAME.zip" + NEWNAME="${DIRNAME}/${BASENAME}.zip" - if [ ! -e "${NEWNAME}" ]; then + if [ ! -e "$NEWNAME" ]; then TEMPDIR=$(mktemp -p "$WORKDIR" -d) echo "Extracting $OLDFILE" - unar "$OLDFILE" -o "${TEMPDIR}/" + extract_rar "$OLDFILE" "$TEMPDIR/" || { + echo "Extraction failed for $OLDFILE" + rm -rf "$TEMPDIR" + continue + } 7z a -tzip -mx=9 "$NEWNAME" "${TEMPDIR}/*" touch -r "$OLDFILE" "$NEWNAME" - rm -r "$TEMPDIR" + rm -rf "$TEMPDIR" - gio trash "$OLDFILE" - echo "${OLDFILE}: Original file moved to trash" + gio trash "$OLDFILE" 2>/dev/null || rm -f "$OLDFILE" + echo "$OLDFILE: Original file moved to trash" else - echo "${NEWNAME}: File already exists!" + echo "$NEWNAME: File already exists!" fi done echo "Conversion complete." } + +rar2zip "$@" |