From e9a86351e38e353faf772fd12cfc0160586c0124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=D0=BA=D0=B0?= Date: Fri, 20 Feb 2026 21:09:55 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B8=D1=81=D0=BA=20=D0=BF=D1=83?= =?UTF-8?q?=D0=B1=D0=BB=D0=B8=D1=87=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=BA=D0=BB?= =?UTF-8?q?=D1=8E=D1=87=D0=B0=20=D0=B8=20=D0=B5=D0=B3=D0=BE=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=BA=D0=B0=D0=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- galias-d.sh | 105 ++++++++++++++++++++++++++++++++++------------------ 1 file changed, 70 insertions(+), 35 deletions(-) mode change 100644 => 100755 galias-d.sh diff --git a/galias-d.sh b/galias-d.sh old mode 100644 new mode 100755 index 578c455..bc8cc24 --- a/galias-d.sh +++ b/galias-d.sh @@ -2,50 +2,85 @@ # set -x -echo "hey! this is talias-d!" +# Цвета для вывода +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color +# Форматирование текста + +function msgerr() +{ + echo -e "${RED}$1${NC}" +} +function msgok() +{ + echo -e "${GREEN}$1${NC}" +} +function msgpr() +{ + echo -e "\e[35m$1${NC}" +} + +msgpr "hey! this is talias-d!" + +# Распечатать найденный публичный ключ +pubkey_print() { + echo "=== Содержимое файла: $1 ===" + echo "" + cat "$1" + echo "" + echo "=== Конец файла ===" +} + +# Установить пакет check_apt() { sudo apt install $1 -y } -read_ssh_pub_key() { - local ssh_dir="$HOME/.ssh" - local pub_key +# Работа с публичными ключами +public_keys() { + local SSH_DIR=$HOME/.ssh + local FILES=($(find ${SSH_DIR} -type f -name "*.pub" 2>/dev/null)) + local count=${#FILES[@]} - if [ ! -d "$ssh_dir" ]; then - echo "Директория не существует" >&2 - return 1 - fi - - pub_key=$(find "$ssh_dir" -maxdepth 1 -name "*.pub" -type f | head -n 1) - - echo " Ключ для копирования в gitea https://g.torshes.ru/user/settings/keys" - - # если pub_key не пустой и является файлом - if [ -n "$pub_key" ] && [ -f "$pub_key" ]; then - cat "$pub_key" - return 0 + # Создаем нужную папку, если не существует + mkdir -p $SSH_DIR + + if [ "$count" -eq 0 ]; then + # Не найден ключ + msgerr "Публичные SSH ключи не найдены. Будет совершена попытка создать в директории ${SSH_DIR}." + local ALGORITHM="ed25519" + local filepath="${SSH_DIR}/id_${ALGORITHM}" + ssh-keygen -t $ALGORITHM -f ${filepath} -N "" > /dev/null + pubkey_print "${filepath}.pub" + elif [ "$count" -eq 1 ]; then + # Найден один ключ + msgok "Найден один публичный SSH ключ" + pubkey_print ${FILES[@]} else - echo "Публичные SSH-ключи не найдены в $ssh_dir" >&2 - return 1 + # Найдено больше одного + msgerr "Найдено $count публичных ключей. Какой показать:" + select file in "${FILES[@]}"; do + if [ -n "$file" ]; then + pubkey_print ${file} + break + else + echo "Неверный выбор. Попробуйте снова." + fi + done fi + + msgok "Ключ для копирования в gitea: https://g.torshes.ru/user/settings/keys" + msgpr "Нажмите Enter для продолжения..." + read -ns 1 # -n 1 - одна клавиша, -s - скрытый ввод } -# Показать ключ или создать его -if read_ssh_pub_key; then - echo "Ключ успешно прочитан" -else - local ALGORITHM="ed25519" - ssh-keygen -t $ALGORITHM -f ~/.ssh/id_$ALGORITHM -N "" > /dev/null - read_ssh_pub_key -fi -check_apt git -# Попробовать склонировать репозиторий -TALIAS_DIR="$HOME/.talias" -if [ $(git clone ssh://git@g.torshes.ru:57322/alex/talias.git $TALIAS_DIR) ]; then - echo ERROR - return 1 -fi +# set -x -cat $TALIAS_DIR/README.md +public_keys + +# set +x \ No newline at end of file