devs/bin/fjadmin_install.sh

141 lines
4.3 KiB
Bash
Executable file

#!/bin/bash
#Script : fjadmin_install.sh
#Apps : MRDEVS TOOLS
#Description : Instala Forgejo Manager CLI
#Author : Cortana Rosero One
#Company Email : cortana@rosero.one
#Generated by : Claude Code (claude-3-7-sonnet-20250219)
#Created : 2025/03/19 11:57:08
#Modified : 2025/03/19 11:57:08
#Version : 1.2.0
#Use Notes :
#==============================================================================
# Derechos de Autor [2025] [Mauro Rosero P. <mauro@rosero.one>]
#==============================================================================
# Este programa es software libre: usted puede redistribuirlo y/o modificarlo
# bajo los términos de la Licencia Pública Affero General de GNU tal como
# lo publica la Free Software Foundation, ya sea la versión 3 de la licencia,
# o (a su elección) cualquier versión posterior.
#
# Este programa se distribuye con la esperanza de que sea útil,
# pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
# COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la
# Licencia Pública Affero General de GNU para obtener más detalles.
#
# Debería haber recibido una copia de la Licencia Pública Affero General
# junto con este programa. Si no la recibió, consulte <https://www.gnu.org/licenses/>.
# Configuración inicial
# Usar DEVELOPER_DIR de base.lib
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
BIN_BASE="bin"
BIN_LIBS="lib"
BIN_MESG="msg"
BIN_CFGS="config"
# Leer DEVSPATH desde el archivo de configuración o usar "devs" por defecto
if [ -f "$SCRIPT_DIR/config/devspath.dat" ]; then
DEVSPATH=$(cat "$SCRIPT_DIR/$BIN_CFGS/devspath.dat")
else
DEVSPATH="devs"
fi
BIN_HOME="$HOME/$DEVSPATH"
VERSION=$(cat "$BIN_HOME/$BIN_BASE/$BIN_CFGS/version")
# CHECK SHELL LANGUAGE
BIN_LANG=${LANG:0:2}
# Importar bibliotecas necesarias
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/base.lib"
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/developers.lib"
source "${BIN_HOME}/${BIN_BASE}/${BIN_LIBS}/console.lib"
# Cargar mensajes en el idioma del sistema o español por defecto
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "head"
load_messages "${BIN_HOME}/${BIN_BASE}" "${BIN_MESG}" "${BIN_LANG}" "developers"
title="${head_000} ${head_002}"
apps_title="${fjmsg_000}"
# Verificar si dialog está instalado
check_dialog_installed() {
if ! command -v dialog &> /dev/null; then
echo "${head_001}"
exit 1
fi
}
# Función para verificar si cargo está instalado
check_cargo() {
if ! command -v cargo &> /dev/null; then
dialog_error_box "${head_info}" "${fjmsg_002}"
# Mostrar progreso de instalación
echo "curl https://sh.rustup.rs -sSf | sh"
curl https://sh.rustup.rs -sSf | sh
# Cargar el entorno de Rust
source "$HOME/.cargo/env"
dialog_error_box "${head_info}" "${fjmsg_003}"
else
dialog_error_box "${head_info}" "${fjmsg_004}"
fi
}
# Función para verificar si forgejo-cli está instalado
check_forgejo_cli() {
if ! command -v codeberg &> /dev/null; then
dialog_error_box "${head_info}" "${fjmsg_005}"
# Verificar que cargo esté disponible
if ! command -v cargo &> /dev/null; then
dialog_error_box "${head_error}" "${fjmsg_006}\n${fjmsg_007}"
exit 1
fi
# Instalar forgejo-cli (codeberg-cli)
echo "cargo install codeberg-cli"
cargo install codeberg-cli
if [ $? -eq 0 ]; then
dialog_error_box "${head_info}" "${fjmsg_008}"
else
dialog_error_box "${head_error}" "${fjmsg_009}"
exit 1
fi
else
dialog_error_box "${head_info}" "${fjmsg_008}"
fi
}
# Función principal
main() {
# Verificar si dialog está instalado
check_dialog_installed
# Preguntar al usuario si desea instalar Forgejo CLI
dialog_yesno "${fjmsg_012}\n\n${fjmsg_013}"
if [ $? -ne 0 ]; then
dialog_error_box "${head_canceled}" "${fjmsg_014}"
clear
exit 0
fi
# Verificar si cargo está instalado
check_cargo
dialog_error_box "${head_info}" "${fjmsg_010}"
# Instalar forgejo-cli si no está instalado
check_forgejo_cli
dialog_error_box "${head_info}" "${fjmsg_011}"
clear
exit 0
}
# Ejecutar función principal
main