diff --git a/bin/cortana_disable.sh b/bin/cortana_disable.sh new file mode 100755 index 0000000..f48fb51 --- /dev/null +++ b/bin/cortana_disable.sh @@ -0,0 +1,65 @@ +#!/bin/bash +# +# cortana_disable.sh +# Modified: 2025/03/11 12:00:00 +# Derechos de Autor (C) [2025] [Mauro Rosero P. (mauro.rosero@gmail.com)] +# +# 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 . + +# Script para desactivar el alias 'cortana' para Claude Code +# Uso: +# ./cortana_disable.sh + +DEVSPATH=devs +BIN_HOME=$HOME/$DEVSPATH +BIN_MESG=bin/msg +BIN_LIBS=bin/lib +BIN_CFGS=bin/config +VERSION=1.0.0 + +# CHECK SHELL LANGUAGE +BIN_LANG=${LANG:0:2} + +# LOAD BASE BASH LIBRARY +source $BIN_HOME/$BIN_LIBS/base.lib + +# Load head messages +load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" +title="${head_000} ${head_002}" + +# Verificar que 'dialog' esté instalado +if ! command -v dialog &>/dev/null; then + echo "${npm_001}" + exit 1 +fi + +# Confirmar desactivación +dialog --backtitle "${title}" --title "${npm_031}" --yesno "¿Desea desactivar el alias 'cortana' para Claude Code?" 7 50 +if [[ $? -eq 0 ]]; then + # Crear un archivo fuente para la desactivación del alias + UNALIAS_FILE="$BIN_HOME/bin/cortana_unalias.sh" + echo '#!/bin/bash' > "$UNALIAS_FILE" + echo 'unalias cortana 2>/dev/null' >> "$UNALIAS_FILE" + echo 'echo "Alias cortana desactivado en la sesión actual."' >> "$UNALIAS_FILE" + chmod +x "$UNALIAS_FILE" + + # Ejecutar la función remove_cortana_alias del biblioteca base.lib para el archivo de configuración permanente + remove_cortana_alias + + # Crear un mensaje con instrucciones para desactivar el alias en la sesión actual + dialog --backtitle "${title}" --title "${npm_041}" --msgbox "${npm_042}\n\nPara desactivar el alias en la sesión actual, ejecute:\n\nsource $UNALIAS_FILE\n\n" 10 70 +else + dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 + exit 1 +fi \ No newline at end of file diff --git a/bin/cortana_enable.sh b/bin/cortana_enable.sh new file mode 100755 index 0000000..c665273 --- /dev/null +++ b/bin/cortana_enable.sh @@ -0,0 +1,72 @@ +#!/bin/bash +# +# cortana_enable.sh +# Modified: 2025/03/11 12:00:00 +# Derechos de Autor (C) [2025] [Mauro Rosero P. (mauro.rosero@gmail.com)] +# +# 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 . + +# Script para activar el alias 'cortana' para Claude Code +# Uso: +# ./cortana_enable.sh + +DEVSPATH=devs +BIN_HOME=$HOME/$DEVSPATH +BIN_MESG=bin/msg +BIN_LIBS=bin/lib +BIN_CFGS=bin/config +VERSION=1.0.0 + +# CHECK SHELL LANGUAGE +BIN_LANG=${LANG:0:2} + +# LOAD BASE BASH LIBRARY +source $BIN_HOME/$BIN_LIBS/base.lib + +# Load head messages +load_messages $BIN_HOME $BIN_MESG $BIN_LANG "head" +title="${head_000} ${head_002}" + +# Verificar que 'dialog' esté instalado +if ! command -v dialog &>/dev/null; then + echo "${npm_001}" + exit 1 +fi + +# Confirmar activación +dialog --backtitle "${title}" --title "${npm_031}" --yesno "¿Desea activar el alias 'cortana' para Claude Code?" 7 50 +if [[ $? -eq 0 ]]; then + # Crear un archivo fuente para la activación del alias + ALIAS_FILE="$BIN_HOME/bin/cortana_alias.sh" + echo '#!/bin/bash' > "$ALIAS_FILE" + echo '# Verificar si ~/.npm-global/bin está en el PATH' >> "$ALIAS_FILE" + echo 'if [[ ":$PATH:" != *":$HOME/.npm-global/bin:"* ]]; then' >> "$ALIAS_FILE" + echo ' # Si no está en el PATH, usamos la ruta completa en el alias' >> "$ALIAS_FILE" + echo ' alias cortana="$HOME/.npm-global/bin/claude"' >> "$ALIAS_FILE" + echo 'else' >> "$ALIAS_FILE" + echo ' # Si está en el PATH, podemos usar el nombre directamente' >> "$ALIAS_FILE" + echo ' alias cortana="claude"' >> "$ALIAS_FILE" + echo 'fi' >> "$ALIAS_FILE" + echo 'echo "Alias cortana activado en la sesión actual."' >> "$ALIAS_FILE" + chmod +x "$ALIAS_FILE" + + # Ejecutar la función cortana_alias del biblioteca base.lib para el archivo de configuración permanente + cortana_alias + + # Crear un mensaje con instrucciones para activar el alias en la sesión actual + dialog --backtitle "${title}" --title "${npm_036}" --msgbox "${npm_037}\n\nPara activar el alias en la sesión actual, ejecute:\n\nsource $ALIAS_FILE\n\n" 10 70 +else + dialog --backtitle "${title}" --title "${head_canceled}" --msgbox "${npm_008}" 6 40 + exit 1 +fi \ No newline at end of file diff --git a/bin/cortana_install.sh b/bin/cortana_install.sh index e51086a..0e77455 100755 --- a/bin/cortana_install.sh +++ b/bin/cortana_install.sh @@ -64,11 +64,33 @@ pre_anthropic() { # Configure npm to use the new directory path npm config set prefix ~/.npm-global - # Note: Replace ~/.bashrc with ~/.zshrc, ~/.profile, or other appropriate file for your shell - echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc + # Determinar el shell actual y su archivo de configuración + local shell_config="" + case "$SHELL" in + */bash) + shell_config="$HOME/.bashrc" + ;; + */zsh) + shell_config="$HOME/.zshrc" + ;; + *) + # Fallback a bashrc + shell_config="$HOME/.bashrc" + ;; + esac + + # Verificar si la entrada PATH ya existe + if ! grep -q "export PATH=~/.npm-global/bin:\$PATH" "$shell_config"; then + # Agregar la configuración PATH al archivo de shell + echo 'export PATH=~/.npm-global/bin:$PATH' >> "$shell_config" + fi - # Apply the new PATH setting - source ~/.bashrc + # Exportar la variable PATH en la sesión actual + export PATH=~/.npm-global/bin:$PATH + + # Informar al usuario que debe reiniciar su terminal o usar source + dialog --backtitle "${title}" --infobox "Configuración de PATH actualizada. Para aplicar cambios permanentes, reinicie su terminal después de la instalación o ejecute:\n\nsource $shell_config" 8 60 + sleep 4 } # Función para instalar Anthropoc Claude Code @@ -91,9 +113,10 @@ uninstall_anthropic() { # Ejecutar la desinstalación npm uninstall -g @anthropic-ai/claude-code if [[ $? -eq 0 ]]; then + remove_cortana_alias dialog --backtitle "${title}" --title "${npm_028}" --msgbox "${npm_029}" 7 50 else - dialog --backtitle "${title}" --title "${head_eror}" --msgbox "${npm_030}" 7 50 + dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_030}" 7 50 fi } diff --git a/bin/lib/base.lib b/bin/lib/base.lib index a69265f..a7641a5 100644 --- a/bin/lib/base.lib +++ b/bin/lib/base.lib @@ -420,10 +420,17 @@ function sops_freekv_token() { # Alias claude code to cortana cortana_alias() { local alias_nombre="cortana" - local alias_comando="claude" + local alias_comando="" local shell_config="" local title="${head_000} ${head_002}" + # Determinar la ruta del comando claude + if [[ -x "$HOME/.npm-global/bin/claude" ]]; then + alias_comando="$HOME/.npm-global/bin/claude" + else + alias_comando="claude" # Fallback al comando en el PATH + fi + # Detectar el shell actual y seleccionar el archivo de configuración adecuado case "$SHELL" in */bash) @@ -447,7 +454,7 @@ cortana_alias() { echo "alias $alias_nombre='$alias_comando'" >> "$shell_config" if [[ $? -eq 0 ]]; then # Recargar el archivo de configuración - source "$shell_config" + source "$shell_config" 2>/dev/null || true dialog --backtitle "${title}" --title "${npm_036}" --msgbox "${npm_037} $shell_config\n\n${npm_038}" 9 60 else dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_039}" 7 50 @@ -455,3 +462,39 @@ cortana_alias() { fi fi } + +# Remove cortana alias +remove_cortana_alias() { + local alias_nombre="cortana" + local shell_config="" + local title="${head_000} ${head_002}" + + # Detectar el shell actual y seleccionar el archivo de configuración adecuado + case "$SHELL" in + */bash) + shell_config="$HOME/.bashrc" + ;; + */zsh) + shell_config="$HOME/.zshrc" + ;; + *) + dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_040}" 7 50 + return 1 + ;; + esac + + # Verificar si el alias existe en el archivo de configuración + if grep -q "alias $alias_nombre=" "$shell_config"; then + # Eliminar el alias del archivo de configuración + sed -i "/alias $alias_nombre=/d" "$shell_config" + if [[ $? -eq 0 ]]; then + dialog --backtitle "${title}" --title "${npm_041}" --msgbox "${npm_042} $shell_config" 7 60 + else + dialog --backtitle "${title}" --title "${head_error}" --msgbox "${npm_039}" 7 50 + return 1 + fi + else + dialog --backtitle "${title}" --title "${npm_043}" --msgbox "${npm_044}" 7 50 + return 2 + fi +} diff --git a/bin/msg/head.es b/bin/msg/head.es index 72bb260..6f195bf 100644 --- a/bin/msg/head.es +++ b/bin/msg/head.es @@ -109,3 +109,7 @@ npm_037="Alias 'cortana' añadido a" npm_038="Ahora puede usar el comando 'cortana' para ejecutar Claude." npm_039="Error al crear el alias 'cortana'" npm_040="Shell no compatible detectado." +npm_041="Alias eliminado" +npm_042="Alias 'cortana' eliminado de" +npm_043="Alias no encontrado" +npm_044="El alias 'cortana' no existe en la configuración del shell."