only curl
This commit is contained in:
parent
6fff4075d9
commit
580f139ba2
@ -4,11 +4,11 @@ Custom Prompt Shell Settings for Bash
|
||||
|
||||
## Requirements
|
||||
|
||||
- wget
|
||||
- curl
|
||||
- git
|
||||
- less
|
||||
- coreutils
|
||||
- net-tools
|
||||
- unzip
|
||||
|
||||
## Features
|
||||
|
||||
@ -28,7 +28,7 @@ Custom Prompt Shell Settings for Bash
|
||||
- `ii` general system information
|
||||
- `proxy_on` enables proxy in terminal or tty
|
||||
- `sagent_start` and `sangent_stop` to enable or disable the SSH agent (password is remembered for 432000 seconds)
|
||||
- `rar2zip` convert RAR files to ZIP, use `unar` and `7z`
|
||||
- `rar2zip` convert RAR files to ZIP, use `unar` (`unrar`) and `7z`
|
||||
|
||||
- Aliases like:
|
||||
- `clean` clears the bash history
|
||||
|
@ -4,9 +4,11 @@ Configuración personalizada del Prompt Shell para Bash
|
||||
|
||||
## Dependencias
|
||||
|
||||
- wget
|
||||
- curl
|
||||
- git
|
||||
- less
|
||||
- coreutils
|
||||
- net-tools
|
||||
- unzip
|
||||
|
||||
## Características
|
||||
|
||||
@ -26,7 +28,7 @@ Configuración personalizada del Prompt Shell para Bash
|
||||
- `ii` información general del sistema
|
||||
- `proxy_on` activa proxy en el terminal o tty
|
||||
- `sagent_start` y `sangent_stop` para activar o desactivar el agente SSH (la contraseña es recordada por 432000 segundos)
|
||||
- `rar2zip` convierte archivos RAR a ZIP, utiliza `unar` y `7z`
|
||||
- `rar2zip` convierte archivos RAR a ZIP, utiliza `unar` (`unrar`) y `7z`
|
||||
|
||||
- Aliases como:
|
||||
- `clean` limpia el historial de bash
|
||||
|
@ -1,64 +1,87 @@
|
||||
#!/bin/bash
|
||||
# shellcheck source=/dev/null
|
||||
#------------------
|
||||
# Update functions
|
||||
#------------------
|
||||
#----------------------------
|
||||
# Check if a command exists
|
||||
#----------------------------
|
||||
function _which() {
|
||||
command -v "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Check URL's
|
||||
# ---------------------
|
||||
#----------------------------
|
||||
# Check if a URL is reachable
|
||||
#----------------------------
|
||||
function _url_exists() {
|
||||
curl --output /dev/null 2>&1 -s -w "%{http_code}\n" "$1"
|
||||
curl --output /dev/null --silent --head --write-out "%{http_code}" "$1"
|
||||
}
|
||||
|
||||
#------------------
|
||||
# Set working URLs
|
||||
#------------------
|
||||
function _urls() {
|
||||
URL_1="https://git.fridu.us/heckyel/hyperterm"
|
||||
URL_2="https://c.fridu.us/software/hyperterm.git"
|
||||
|
||||
if [ "$(_url_exists "$URL_1")" -eq 200 ]; then
|
||||
URL="$URL_1"
|
||||
RAW="$URL_1/raw/branch/master"
|
||||
elif [ "$(_url_exists "$URL_2")" -eq 200 ]; then
|
||||
URL="$URL_2"
|
||||
RAW="$URL_2/plain"
|
||||
else
|
||||
msg_err "El repositorio no está disponible o no hay conexión a Internet." \
|
||||
"The repository is unavailable or there's no internet connection."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
# ----------------------
|
||||
|
||||
#----------------------------
|
||||
# Download file with curl
|
||||
#----------------------------
|
||||
function download_file() {
|
||||
local remote_path=$1
|
||||
local local_path=$2
|
||||
mkdir -p "$(dirname "$local_path")"
|
||||
curl -Ls "$RAW/$remote_path" -o "$local_path"
|
||||
}
|
||||
|
||||
#----------------------------
|
||||
# Download _custom.sh if missing
|
||||
#----------------------------
|
||||
function ifexists_custom() {
|
||||
|
||||
_urls "$@"
|
||||
|
||||
if [ ! -e "$HOME/.hyperterm/_custom.sh" ]; then
|
||||
case $1 in
|
||||
wget) wget "$RAW/hyperterm/_custom.sh" -O "$HOME/.hyperterm/_custom.sh" ;;
|
||||
curl) curl "$RAW/hyperterm/_custom.sh" -o "$HOME/.hyperterm/_custom.sh" ;;
|
||||
git) cp -v /tmp/hyperterm/hyperterm/_custom.sh "$HOME/.hyperterm/" ;;
|
||||
esac
|
||||
_urls
|
||||
local custom_path="$HOME/.hyperterm/_custom.sh"
|
||||
if [ ! -e "$custom_path" ]; then
|
||||
download_file "hyperterm/_custom.sh" "$custom_path"
|
||||
fi
|
||||
}
|
||||
|
||||
#----------------------------
|
||||
# Show progress bar
|
||||
#----------------------------
|
||||
function show_progress() {
|
||||
case $1 in
|
||||
1) printf '%s\r' "##### (33%)" ;;
|
||||
2) printf '%s\r' "############# (66%)" ;;
|
||||
3) printf '%s\n' "####################### (100%) done!" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
#----------------------------
|
||||
# Update HyperTerm environment
|
||||
#----------------------------
|
||||
function updbashrc() {
|
||||
_urls
|
||||
|
||||
_urls "$@"
|
||||
# Step 1: Download checksum and _custom.sh
|
||||
download_file "hyperterm/hyperterm.sha512" "$HOME/.hyperterm/hyperterm.sha512"
|
||||
ifexists_custom
|
||||
|
||||
# data integration
|
||||
if _which wget; then
|
||||
wget -nv "$RAW/hyperterm/hyperterm.sha512" -O "$HOME/.hyperterm/hyperterm.sha512" &> /dev/null
|
||||
ifexists_custom wget &> /dev/null
|
||||
elif _which curl; then
|
||||
curl "$RAW/hyperterm/hyperterm.sha512" -o "$HOME/.hyperterm/hyperterm.sha512" &> /dev/null
|
||||
ifexists_custom curl &> /dev/null
|
||||
fi
|
||||
|
||||
# checksum of data verification
|
||||
# Step 2: Verify checksum
|
||||
(cd "$HOME/.hyperterm/" && sha512sum -c hyperterm.sha512 &> /dev/null)
|
||||
_interger=$?
|
||||
local _interger=$?
|
||||
|
||||
if _which git; then
|
||||
if [[ "$_interger" -eq 0 ]]; then
|
||||
# Import colors
|
||||
# Load colors and print banner
|
||||
_colors_bash "$@"
|
||||
printf '%b' "${BOLD}${CYAN}"
|
||||
printf '%s\n' ' __ __ ______ '
|
||||
@ -69,83 +92,72 @@ function updbashrc() {
|
||||
printf '%s\n' ' /____/_/ '
|
||||
printf '%s\n' ' '
|
||||
printf '%b' "${BOLD}${GREY}"
|
||||
msg "¡Hurra! HyperTerm se ha actualizado y/o está en la versión actual." \
|
||||
"Hooray! HyperTerm has been updated and/or is at the current version."
|
||||
msg "Puede reportarnos errores en https://todo.sr.ht/~heckyel/hyperterm" \
|
||||
"You can report errors issues in https://todo.sr.ht/~heckyel/hyperterm"
|
||||
msg "Consigue tu copia de HyperTerm en: https://c.fridu.us/software/hyperterm.git" \
|
||||
"Get your HyperTerm copy on: https://c.fridu.us/software/hyperterm.git"
|
||||
msg "✔️ HyperTerm se ha actualizado y/o está en la versión actual." \
|
||||
"✔️ HyperTerm has been updated and/or is at the current version."
|
||||
msg "Puede reportar errores en https://todo.sr.ht/~heckyel/hyperterm" \
|
||||
"You can report issues at https://todo.sr.ht/~heckyel/hyperterm"
|
||||
msg "Obtén tu copia en: https://c.fridu.us/software/hyperterm.git" \
|
||||
"Get your copy at: https://c.fridu.us/software/hyperterm.git"
|
||||
printf '%b\n' "$RESET"
|
||||
else
|
||||
case $(_url_exists "$URL") in
|
||||
200)
|
||||
# clone '--depth=1' not support cgit
|
||||
msg "Usando: $URL" \
|
||||
"Using: $URL"
|
||||
(git clone "$URL" /tmp/hyperterm/ --depth=1 &> /dev/null)
|
||||
printf '%s\r' "##### (33%)"
|
||||
msg "Fallo de checksum. Re-descargando archivos desde: $URL" \
|
||||
"Checksum failed. Re-downloading files from: $URL"
|
||||
show_progress 1
|
||||
sleep 1
|
||||
# core
|
||||
for i in autocomplete.sh colors.sh git.sh languages.sh status.sh update.sh; do
|
||||
install -m644 /tmp/hyperterm/hyperterm/core/$i "$HOME/.hyperterm/core/$i"
|
||||
done
|
||||
# themes
|
||||
for i in default.sh joy.sh light_theme.sh minterm.sh pure.sh simple.sh special.sh; do
|
||||
install -m644 /tmp/hyperterm/hyperterm/themes/$i "$HOME/.hyperterm/themes/$i"
|
||||
done
|
||||
# tools
|
||||
(cp -f /tmp/hyperterm/hyperterm/tools/* "$HOME/.hyperterm/tools/" &> /dev/null)
|
||||
|
||||
for i in hyperterm.sh hyperterm.sha512; do
|
||||
install -m644 /tmp/hyperterm/hyperterm/$i "$HOME/.hyperterm/$i"
|
||||
# Step 3: Core files
|
||||
for f in autocomplete.sh colors.sh git.sh languages.sh status.sh update.sh; do
|
||||
download_file "hyperterm/core/$f" "$HOME/.hyperterm/core/$f"
|
||||
done
|
||||
(cp -f /tmp/hyperterm/.bash_profile "$HOME/" &> /dev/null)
|
||||
printf '%s\r' "############# (66%)"
|
||||
(ifexists_custom git &> /dev/null)
|
||||
|
||||
# Step 4: Themes
|
||||
for f in default.sh joy.sh light_theme.sh minterm.sh pure.sh simple.sh special.sh; do
|
||||
download_file "hyperterm/themes/$f" "$HOME/.hyperterm/themes/$f"
|
||||
done
|
||||
|
||||
show_progress 2
|
||||
sleep 1
|
||||
(rm -fr /tmp/hyperterm/)
|
||||
printf '%s\n' "####################### (100%) done!"
|
||||
source "$HOME/.bashrc" ;;
|
||||
*)
|
||||
msg_err "El repo esta deshabilitado o no hay conexión a Internet" \
|
||||
"The repo is disabled or connection failed"
|
||||
return 1 ;;
|
||||
esac
|
||||
fi
|
||||
else
|
||||
msg_err "No hay curl y git. Por favor, instale los programas para actualizar HyperTerm" \
|
||||
"I couldn't find not curl and git. Please, install the programs to update HyperTerm"
|
||||
return 1
|
||||
|
||||
# Step 5: Tools
|
||||
for f in aliases.sh compress.sh export.sh listuser.sh network.sh proxy.sh rar2zip.sh ruby.sh ssh-agent.sh sysinfo.sh vconverter.sh virtualenv.sh; do
|
||||
download_file "hyperterm/tools/$f" "$HOME/.hyperterm/tools/$f"
|
||||
done
|
||||
|
||||
# Step 6: Main files
|
||||
download_file "hyperterm/hyperterm.sh" "$HOME/.hyperterm/hyperterm.sh"
|
||||
download_file "hyperterm/hyperterm.sha512" "$HOME/.hyperterm/hyperterm.sha512"
|
||||
download_file ".bash_profile" "$HOME/.bash_profile"
|
||||
|
||||
ifexists_custom
|
||||
show_progress 3
|
||||
_colors_bash "$@"
|
||||
source "$HOME/.bashrc"
|
||||
fi
|
||||
}
|
||||
|
||||
#------------------------------------
|
||||
# Overwrite _custom.sh interactively
|
||||
#------------------------------------
|
||||
function updbashrc_custom() {
|
||||
_urls "$@"
|
||||
case $(_url_exists "$URL") in
|
||||
200)
|
||||
while true
|
||||
do
|
||||
function _copy_c() {
|
||||
if _which wget; then
|
||||
wget "$RAW/hyperterm/_custom.sh" -O "$HOME/.hyperterm/_custom.sh"; source "$HOME/.bashrc"
|
||||
elif _which curl; then
|
||||
curl "$RAW/hyperterm/_custom.sh" -o "$HOME/.hyperterm/_custom.sh"; source "$HOME/.bashrc"
|
||||
fi
|
||||
}
|
||||
_urls
|
||||
if [ "$(_url_exists "$URL")" -eq 200 ]; then
|
||||
while true; do
|
||||
question=$(msg "¿Estás seguro de sobre-escribir _custom.sh? [s/N]: " \
|
||||
"Are you sure to overwrite _custom.sh? [y/N]: ")
|
||||
read -r -p "$question" input
|
||||
case $input in
|
||||
[sS]|[yY]) _copy_c "$@"; break ;;
|
||||
case "$input" in
|
||||
[yY]|[sS])
|
||||
download_file "hyperterm/_custom.sh" "$HOME/.hyperterm/_custom.sh"
|
||||
source "$HOME/.bashrc"
|
||||
break ;;
|
||||
[nN]|"") break ;;
|
||||
*) msg "Por favor responde sí o no" \
|
||||
"Please answer yes or no.";;
|
||||
*) msg "Por favor responde sí o no." \
|
||||
"Please answer yes or no." ;;
|
||||
esac
|
||||
done ;;
|
||||
*)
|
||||
msg_err "El repo esta deshabilitado o no hay conexión a Internet" \
|
||||
"The repo is disabled or connection failed"
|
||||
done
|
||||
else
|
||||
msg_err "El repositorio no está disponible o no hay conexión a Internet." \
|
||||
"The repository is unavailable or there's no internet connection."
|
||||
return 1
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
cdfe049ec07f02a1893cda29c13085d06709e09a30b0c2e1111585278315f03139d61080c883cb3fd87f2bf64e05d9b5e5eaaad84c97ced890d83c73eb399fcb ../.bash_profile
|
||||
42fadfdc8adee2825df79ae7ee449fcc54c383a114fa3a28bab66adae9ce026078dd793e3b5e2fe918cb088fbfc0c955828cbcf0b28f977f2904e8b19a2019fd ./core/update.sh
|
||||
57bf0f09423414323ada7c518e2865db8651aa1b239fb5d89d3eb0687d4c3f5d8fe66fe48c6988ff50db0f54f67edfd36c4ea3193fe909c2349eee4a3efcdaa6 ./core/update.sh
|
||||
1cfba599047d84a17ff92b695ebf527a505a30acc9ec21a2b9f410a7ea6dde4b23b5cf62e557d82f2fe9a8980649942424b879ca53baae4d4cb3057681baa7b6 ./core/colors.sh
|
||||
065cfa39f1b4312ed275ad1039827a24f703176c653a8d27303d145f9d389a60ec5b3a9eb167e060cc6fd093b9c03cfb1a8b70254d444fbc6e62e2297d88b310 ./core/status.sh
|
||||
2036a79215a5434e31f3406bea3f2ffa7e94ffef86c2d1ceb8865db29f19fe7f342f9cab93288f57c75daed36ef146f85d15f8d633931a27d55c3983f55ef15b ./core/git.sh
|
||||
|
321
install.sh
321
install.sh
@ -27,53 +27,87 @@ function msg_err() {
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
# Check Requirements
|
||||
# -------------------
|
||||
programs=("wget" "curl" "git" "less")
|
||||
function install_package() {
|
||||
local pkg="$1"
|
||||
local sudo_cmd=""
|
||||
local distro=""
|
||||
local os_data
|
||||
|
||||
case "$(id -u)" in
|
||||
0) sudo_cmd="" ;;
|
||||
*)
|
||||
case "$(command -v doas 2>/dev/null)" in
|
||||
"") sudo_cmd="sudo" ;;
|
||||
*) sudo_cmd="doas" ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
os_data="$(cat /etc/*release 2>/dev/null | tr '[:upper:]' '[:lower:]')"
|
||||
|
||||
case "$os_data" in
|
||||
*id=artix*|*id=arch*|*id=hyperbola*) distro="arch" ;;
|
||||
*id_like=arch*) distro="arch" ;;
|
||||
*id=debian*|*id=ubuntu*|*id_like=debian*) distro="debian" ;;
|
||||
*)
|
||||
msg_err "Sistema operativo no soportado automáticamente." \
|
||||
"Operating system not automatically supported."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$distro" in
|
||||
arch)
|
||||
$sudo_cmd pacman -Sy --noconfirm "$pkg"
|
||||
;;
|
||||
debian)
|
||||
$sudo_cmd apt-get update
|
||||
$sudo_cmd apt-get install -y "$pkg"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
programs=("curl" "less" "ls" "netstat" "unzip")
|
||||
for program in "${programs[@]}"; do
|
||||
if ! command -v "$program" &>/dev/null; then
|
||||
msg_err "$program no está instalado." \
|
||||
"$program is not installed" && exit 1
|
||||
case "$program" in
|
||||
netstat) pkg="net-tools" ;;
|
||||
ls) pkg="coreutils" ;;
|
||||
*) pkg="$program" ;;
|
||||
esac
|
||||
msg "Instalando dependencia: $pkg" "Installing dependency: $pkg"
|
||||
install_package "$pkg"
|
||||
fi
|
||||
done
|
||||
|
||||
# Check URL's
|
||||
# -----------
|
||||
function _which() {
|
||||
command -v "$1" &> /dev/null
|
||||
}
|
||||
|
||||
# Check URLs availability
|
||||
# -----------------------
|
||||
function _url_exists() {
|
||||
if _which wget; then
|
||||
if wget --spider "$1" 2>/dev/null; then
|
||||
return 0 # URL 'ok'
|
||||
else
|
||||
return 1 # URL 'fail'
|
||||
fi
|
||||
elif _which curl; then
|
||||
if curl --output /dev/null --silent --head --fail "$1"; then
|
||||
return 0 # URL 'ok'
|
||||
else
|
||||
return 1 # URL 'fail'
|
||||
fi
|
||||
fi
|
||||
curl --output /dev/null --silent --head --write-out "%{http_code}" "$1"
|
||||
}
|
||||
|
||||
function _urls() {
|
||||
URL_1="https://git.fridu.us/heckyel/hyperterm"
|
||||
URL_2="https://c.fridu.us/heckyel/hyperterm"
|
||||
|
||||
if [[ $(_url_exists "$URL_1") -eq 0 ]]; then
|
||||
URL="$URL_1"
|
||||
elif [[ $(_url_exists "$URL_2") -eq 0 ]]; then
|
||||
URL="$URL_2"
|
||||
fi
|
||||
URL_1="https://git.fridu.us/heckyel/hyperterm/archive/master.zip"
|
||||
URL_2="https://c.fridu.us/software/hyperterm.git/snapshot/hyperterm-master.zip"
|
||||
case "$(_url_exists "$URL_1")" in
|
||||
200) URL="$URL_1" ;;
|
||||
*)
|
||||
case "$(_url_exists "$URL_2")" in
|
||||
200) URL="$URL_2" ;;
|
||||
*)
|
||||
msg_err "No se pudo acceder a las URLs de HyperTerm." \
|
||||
"Could not access HyperTerm URLs."
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
# -----------
|
||||
|
||||
# Show how to use this installer
|
||||
# ------------------------------
|
||||
# Show usage
|
||||
# -----------
|
||||
function show_usage() {
|
||||
msg "\n$0: Instalar HyperTerm" \
|
||||
"\n$0: Install HyperTerm"
|
||||
@ -83,178 +117,148 @@ function show_usage() {
|
||||
"Arguments:"
|
||||
msg "--help (-h): Muestra mensaje de ayuda" \
|
||||
"--help (-h): Display this help message"
|
||||
msg "--silent (-s): Instala la configuración predeterminada sin solicitar entrada" \
|
||||
"--silent (-s): Install default settings without prompting for input"
|
||||
msg "--no-modify-config (-n): No modifica el archivo de configuración existente" \
|
||||
"--no-modify-config (-n): Do not modify existing config file"
|
||||
exit 0;
|
||||
msg "--silent (-s): Instala sin pedir interacción" \
|
||||
"--silent (-s): Install silently"
|
||||
msg "--no-modify-config (-n): No modifica archivo config" \
|
||||
"--no-modify-config (-n): Do not modify config file"
|
||||
exit 0
|
||||
}
|
||||
|
||||
# Clone
|
||||
#------
|
||||
function clone_new() {
|
||||
_urls "$@"
|
||||
# Download and unzip archive
|
||||
# --------------------------
|
||||
function download_and_unzip() {
|
||||
_urls
|
||||
|
||||
# clone
|
||||
msg "\e[1;32m==>\e[0m\033[1m Clonando hyperterm... \e[m" \
|
||||
"\e[1;32m==>\e[0m\033[1m Cloning hyperterm... \e[m"
|
||||
git clone "$URL" "/tmp/hyperterm/" --depth=1
|
||||
msg "\e[1;32m==>\e[0m\033[1m Descargando HyperTerm... \e[m" \
|
||||
"\e[1;32m==>\e[0m\033[1m Downloading HyperTerm... \e[m"
|
||||
|
||||
# copy
|
||||
msg "\e[1;32m==>\e[0m\033[1m Copiando hyperterm... \e[m" \
|
||||
"\e[1;32m==>\e[0m\033[1m Copying hyperterm... \e[m"
|
||||
if [[ "$silent" ]]; then
|
||||
install -d -m755 "$HOME/.hyperterm/"
|
||||
cp -r /tmp/hyperterm/hyperterm/* "$HOME/.hyperterm/"
|
||||
install -m644 /tmp/hyperterm/.bash_profile "$HOME/"
|
||||
install -d -m755 "$HOME/.hyperterm/template/"
|
||||
install -m644 /tmp/hyperterm/template/bash_profile.template.bash "$HOME/.hyperterm/template/"
|
||||
else
|
||||
install -d -m755 -v "$HOME/.hyperterm/"
|
||||
cp -rv /tmp/hyperterm/hyperterm/* "$HOME/.hyperterm/"
|
||||
install -m644 -v /tmp/hyperterm/.bash_profile "$HOME/"
|
||||
install -d -m755 -v "$HOME/.hyperterm/template/"
|
||||
install -m644 -v /tmp/hyperterm/template/bash_profile.template.bash "$HOME/.hyperterm/template/"
|
||||
TMP_DIR=$(mktemp -d /tmp/hyperterm.XXXXXX)
|
||||
ZIP_FILE="$TMP_DIR/hyperterm.zip"
|
||||
|
||||
curl -L -o "$ZIP_FILE" "$URL"
|
||||
|
||||
msg "\e[1;32m==>\e[0m\033[1m Descomprimiendo HyperTerm... \e[m" \
|
||||
"\e[1;32m==>\e[0m\033[1m Unzipping HyperTerm... \e[m"
|
||||
|
||||
unzip -q "$ZIP_FILE" -d "$TMP_DIR"
|
||||
# The unzip folder will be something like hyperterm-master or hyperterm-master.zip contents
|
||||
|
||||
# Move extracted files to ~/.hyperterm
|
||||
mkdir -p "$HOME/.hyperterm"
|
||||
# Find extracted dir
|
||||
EXTRACTED_DIR=$(find "$TMP_DIR" -mindepth 1 -maxdepth 1 -type d | head -n 1)
|
||||
|
||||
cp -r "$EXTRACTED_DIR/hyperterm"/* "$HOME/.hyperterm/"
|
||||
|
||||
# Copy .bash_profile and template files if exist
|
||||
if [[ -f "$EXTRACTED_DIR/.bash_profile" ]]; then
|
||||
cp "$EXTRACTED_DIR/.bash_profile" "$HOME/"
|
||||
fi
|
||||
|
||||
mkdir -p "$HOME/.hyperterm/template"
|
||||
if [[ -f "$EXTRACTED_DIR/template/bash_profile.template.bash" ]]; then
|
||||
cp "$EXTRACTED_DIR/template/bash_profile.template.bash" "$HOME/.hyperterm/template/"
|
||||
fi
|
||||
|
||||
# Clean temp
|
||||
rm -rf "$TMP_DIR"
|
||||
}
|
||||
|
||||
function clean_temp() {
|
||||
# clean up temp files
|
||||
msg "\e[1;32m==>\e[0m\033[1m Limpiando archivos temporales... \e[m" \
|
||||
"\e[1;32m==>\e[0m\033[1m Clean up temp files... \e[m"
|
||||
if [[ "$silent" ]]; then
|
||||
rm -rf /tmp/hyperterm/
|
||||
if [[ -f "$HOME/.hyperterm/template/bash_profile.template.bash" ]]; then
|
||||
rm -fr "$HOME/.hyperterm/template/"
|
||||
fi
|
||||
else
|
||||
rm -rfv /tmp/hyperterm/
|
||||
if [[ -f "$HOME/.hyperterm/template/bash_profile.template.bash" ]]; then
|
||||
rm -frv "$HOME/.hyperterm/template/"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
# Backup and install
|
||||
# ------------------
|
||||
function backup_and_install() {
|
||||
download_and_unzip
|
||||
|
||||
# Back up existing profile and create new one for hyperterm
|
||||
# ---------------------------------------------------------
|
||||
function backup_new() {
|
||||
clone_new "$@"
|
||||
test -w "$HOME/$CONFIG_FILE" &&
|
||||
cp -aL "$HOME/$CONFIG_FILE" "$HOME/$CONFIG_FILE.bak" &&
|
||||
test -w "$HOME/$CONFIG_FILE" && cp -aL "$HOME/$CONFIG_FILE" "$HOME/$CONFIG_FILE.bak" &&
|
||||
msg "\033[0;36mTu archivo original $CONFIG_FILE ha sido respaldado a $CONFIG_FILE.bak \033[0m" \
|
||||
"\033[0;36mYour original $CONFIG_FILE has been backed up to $CONFIG_FILE.bak \033[0m"
|
||||
|
||||
sed "s|{{HYPER_BASH}}|$HYPER_BASH|" "$HYPER_BASH/.hyperterm/template/bash_profile.template.bash" > "$HOME/$CONFIG_FILE"
|
||||
msg "\033[0;36mPlantilla copiada de $CONFIG_FILE dentro de ~/$CONFIG_FILE \033[0m" \
|
||||
"\033[0;36mCopied the template $CONFIG_FILE into ~/$CONFIG_FILE \033[0m"
|
||||
clean_temp "$@"
|
||||
sed "s|{{HYPER_BASH}}|$HYPER_BASH|" "$HOME/.hyperterm/template/bash_profile.template.bash" > "$HOME/$CONFIG_FILE"
|
||||
|
||||
msg "\033[0;36mPlantilla copiada a ~/$CONFIG_FILE \033[0m" \
|
||||
"\033[0;36mTemplate copied to ~/$CONFIG_FILE \033[0m"
|
||||
}
|
||||
|
||||
# Parse args
|
||||
# ----------
|
||||
for param in "$@"; do
|
||||
shift
|
||||
case "$param" in
|
||||
"--help") set -- "$@" "-h" ;;
|
||||
"--silent") set -- "$@" "-s" ;;
|
||||
"--no-modify-config") set -- "$@" "-n" ;;
|
||||
*) set -- "$@" "$param"
|
||||
*) set -- "$@" "$param" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
OPTIND=1
|
||||
while getopts "hsn" opt
|
||||
do
|
||||
while getopts "hsn" opt; do
|
||||
case "$opt" in
|
||||
"h") show_usage;;
|
||||
"s") silent=true ;;
|
||||
"n") no_modify_config=true ;;
|
||||
"?") show_usage >&2;;
|
||||
h) show_usage ;;
|
||||
s) silent=true ;;
|
||||
n) no_modify_config=true ;;
|
||||
?) show_usage >&2 ;;
|
||||
esac
|
||||
done
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
HYPER_BASH="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
case $OSTYPE in
|
||||
darwin*)
|
||||
CONFIG_FILE=.bash_profile
|
||||
;;
|
||||
*)
|
||||
CONFIG_FILE=.bashrc
|
||||
;;
|
||||
# Setup config file based on OS
|
||||
case "$OSTYPE" in
|
||||
darwin*) CONFIG_FILE=".bash_profile" ;;
|
||||
*) CONFIG_FILE=".bashrc" ;;
|
||||
esac
|
||||
|
||||
BACKUP_FILE=$CONFIG_FILE.bak
|
||||
msg "Instalando HyperTerm" \
|
||||
"Installing HyperTerm"
|
||||
if ! [[ "$silent" ]] && ! [[ "$no_modify_config" ]]; then
|
||||
if [ -e "$HOME/$BACKUP_FILE" ]; then
|
||||
msg_err "\033[0;36mEl archivo de respaldo ya existe. Asegúrese de hacer una copia de seguridad de su .bashrc antes de ejecutar esta instalación. \033[0m" \
|
||||
"\033[0;36mBackup file already exists. Make sure to backup your .bashrc before running this installation. \033[0m"
|
||||
while ! [ "$silent" ]; do
|
||||
question=$(msg "¿Desea sobrescribir la copia de seguridad existente? Esto eliminará su archivo de copia de seguridad existente ($HOME/$BACKUP_FILE) [s/N] " \
|
||||
"Would you like to overwrite the existing backup? This will delete your existing backup file ($HOME/$BACKUP_FILE) [y/N] ")
|
||||
HYPER_BASH="$(cd "$(dirname "$0")" && pwd)"
|
||||
|
||||
read -e -n 1 -r -p "$question" RESP
|
||||
case $RESP in
|
||||
[yY]|[sS])
|
||||
break
|
||||
;;
|
||||
[nN]|"")
|
||||
msg "\033[91mInstalación interrumpida. Por favor vuelve pronto!\033[m" \
|
||||
"\033[91mInstallation aborted. Please come back soon!\033[m"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
msg "\033[91mPor favor elija sí o no.\033[m" \
|
||||
"\033[91mPlease choose y or n.\033[m"
|
||||
;;
|
||||
msg "Instalando HyperTerm" "Installing HyperTerm"
|
||||
|
||||
if ! [[ "$silent" ]] && ! [[ "$no_modify_config" ]]; then
|
||||
if [[ -e "$HOME/$CONFIG_FILE.bak" ]]; then
|
||||
msg_err "\033[0;36mArchivo de respaldo ya existe. Haz backup antes de instalar.\033[0m" \
|
||||
"\033[0;36mBackup file already exists. Please backup before installing.\033[0m"
|
||||
while true; do
|
||||
read -e -n 1 -r -p "$(msg "¿Sobrescribir backup? [s/N] " "Overwrite backup? [y/N] ") " RESP
|
||||
case "$RESP" in
|
||||
[yYsS]) break ;;
|
||||
[nN]|"") msg "Instalación abortada." "Installation aborted."; exit 1 ;;
|
||||
*) msg "Elige sí o no." "Choose y or n." ;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
while ! [ "$silent" ]; do
|
||||
question=$(msg "¿Le gustaría conservar su configuración de $CONFIG_FILE y agregar plantillas de HyperTerm al final? [s/N] " \
|
||||
"Would you like to keep your config $CONFIG_FILE and append HyperTerm templates at the end? [y/N] ")
|
||||
read -e -n 1 -r -p "$question" choice
|
||||
case $choice in
|
||||
[yY]|[sS])
|
||||
clone_new "$@"
|
||||
test -w "$HOME/$CONFIG_FILE" &&
|
||||
cp -aL "$HOME/$CONFIG_FILE" "$HOME/$CONFIG_FILE.bak" &&
|
||||
msg "\033[0;36mTu archivo original $CONFIG_FILE ha sido respaldado a $CONFIG_FILE.bak \033[0m" \
|
||||
"\033[0;36mYour original $CONFIG_FILE has been backed up to $CONFIG_FILE.bak \033[0m"
|
||||
|
||||
(sed "s|{{HYPER_BASH}}|$HYPER_BASH|" "$HYPER_BASH/.hyperterm/template/bash_profile.template.bash" | tail -n +2) >> "$HOME/$CONFIG_FILE"
|
||||
msg "\033[0;36mla plantilla HyperTerm ha sido agregada a $CONFIG_FILE\033[0m" \
|
||||
"\033[0;36mHyperTerm template has been added to your $CONFIG_FILE\033[0m"
|
||||
clean_temp "$@"
|
||||
while true; do
|
||||
read -e -n 1 -r -p "$(msg "¿Conservar $CONFIG_FILE y añadir plantilla HyperTerm al final? [s/N] " "Keep $CONFIG_FILE and append HyperTerm template? [y/N] ") " choice
|
||||
case "$choice" in
|
||||
[yYsS])
|
||||
download_and_unzip "$@"
|
||||
test -w "$HOME/$CONFIG_FILE" && cp -aL "$HOME/$CONFIG_FILE" "$HOME/$CONFIG_FILE.bak" &&
|
||||
msg "\033[0;36mRespaldo creado en $CONFIG_FILE.bak \033[0m" "\033[0;36mBackup created at $CONFIG_FILE.bak \033[0m"
|
||||
(sed "s|{{HYPER_BASH}}|$HYPER_BASH|" "$HOME/.hyperterm/template/bash_profile.template.bash" | tail -n +2) >> "$HOME/$CONFIG_FILE"
|
||||
msg "\033[0;36mPlantilla HyperTerm añadida a $CONFIG_FILE\033[0m" "\033[0;36mHyperTerm template added to $CONFIG_FILE\033[0m"
|
||||
break
|
||||
;;
|
||||
[nN]|"")
|
||||
backup_new "$@"
|
||||
backup_and_install "$@"
|
||||
break
|
||||
;;
|
||||
*)
|
||||
msg "\033[91mPor favor elija sí o no.\033[m" \
|
||||
"\033[91mPlease choose y or n.\033[m"
|
||||
msg "Elige sí o no." "Choose y or n."
|
||||
;;
|
||||
esac
|
||||
done
|
||||
elif [[ "$silent" ]] && ! [[ "$no_modify_config" ]]; then
|
||||
# backup/new by default
|
||||
backup_new "$@"
|
||||
backup_and_install "$@"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
msg "\e[1;32m==>\e[0m\033[1m Instalación finalizada con éxito! Disfrute HyperTerm! \e[m" \
|
||||
msg "\e[1;32m==>\e[0m\033[1m Instalación finalizada con éxito! Disfruta HyperTerm! \e[m" \
|
||||
"\e[1;32m==>\e[0m\033[1m Installation finished successfully! Enjoy HyperTerm! \e[m"
|
||||
|
||||
msg "\033[0;36mPara comenzar a usarlo, abra una nueva pestaña o haga 'source $HOME/$CONFIG_FILE'.\033[0m" \
|
||||
"\033[0;36mTo start using it, open a new tab or 'source $HOME/$CONFIG_FILE'.\033[0m"
|
||||
msg "\033[0;36mPara empezar, abre una nueva pestaña o haz 'source $HOME/$CONFIG_FILE'.\033[0m" \
|
||||
"\033[0;36mTo start, open a new tab or 'source $HOME/$CONFIG_FILE'.\033[0m"
|
||||
|
||||
echo ""
|
||||
msg "¡Muchas gracias! por instalar" \
|
||||
"Thank you! for install"
|
||||
msg "¡Gracias por instalar!" "Thank you for installing!"
|
||||
echo -e '\033[0;36m __ __ ______ '
|
||||
echo -e '\033[0;36m / / / /_ ______ ___ ____/_ __/__ _________ ___ '
|
||||
echo -e '\033[0;36m / /_/ / / / / __ \/ _ \/ ___// / / _ \/ ___/ __ `__ \ '
|
||||
@ -262,7 +266,8 @@ echo -e '\033[0;36m / __ / /_/ / /_/ / __/ / / / / __/ / / / / / / / '
|
||||
echo -e '\033[0;36m /_/ /_/\__, / .___/\___/_/ /_/ \___/_/ /_/ /_/ /_/ '
|
||||
echo -e '\033[0;36m /____/_/ '
|
||||
echo -e '\033[m'
|
||||
msg "Para evitar problemas y mantener su shell, habilite solo las funciones que realmente desea utilizar desde $HOME/.hyperterm/_custom.sh" \
|
||||
"To avoid issues and to keep your shell lean, please enable only features you really want to use from $HOME/.hyperterm/_custom.sh"
|
||||
msg "Puede reportarnos errores en \033[0;36mhttps://todo.sr.ht/~heckyel/hyperterm \033[0m" \
|
||||
"You can report errors issues in \033[0;36mhttps://todo.sr.ht/~heckyel/hyperterm \033[0m"
|
||||
|
||||
msg "Para evitar problemas, activa solo las funciones que uses en $HOME/.hyperterm/_custom.sh" \
|
||||
"To avoid issues, enable only the features you want from $HOME/.hyperterm/_custom.sh"
|
||||
msg "Puedes reportar errores en \033[0;36mhttps://todo.sr.ht/~heckyel/hyperterm \033[0m" \
|
||||
"You can report issues at \033[0;36mhttps://todo.sr.ht/~heckyel/hyperterm \033[0m"
|
||||
|
Loading…
x
Reference in New Issue
Block a user