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