setup_git.sh
takker.icon用gitの自動設定script やること
実行方法
code:sh
実装メモ
例外処理を有効にする
code:setup_git.bash
set -eu
catch () {
echo "Some error have occurred. Terminate the installation."
}
trap catch ERR
変数設定
code:setup_git.bash
GITHUB_NAME="takker99"
GITHUB_EMAIL="37929109+takker99@users.noreply.github.com"
SSH_GITHUB_NAME="id_github_$GITHUB_NAME"
SSH_GITHUB_PATH="$HOME/.ssh/$SSH_GITHUB_NAME"
SSH_CONFIG_PATH="$HOME/.ssh/config"
SSH鍵を生成する
code:setup_git.bash
echo "SSH keys for GitHub aren't found. Creating SSH keys..."
# 秘密鍵の中身を取り出す
copyKey() {
KEY=$(cat "${SSH_GITHUB_PATH}.pub")
if type "clip.exe" > /dev/null 2>&1; then
echo $KEY | clip.exe
else
echo $KEY | xsel
fi
}
mkdir -p ~/.ssh
ssh-keygen -t ed25519 -C $GITHUB_EMAIL -f $SSH_GITHUB_PATH -P "" -N ""
貼り付け終わったら次に進む
code:setup_git.bash
copyKey
select i in Registered CopyAgain
do
case $i in
Registered) break ;;
CopyAgain) echo "Copied again. Please register it" ; copyKey ;;
*) echo "$REPLY is an invalid value. Either \"1\" or \"2\" can be selected." ;;
esac
done
fi
SSH通信を確認する
code:setup_git.bash
cat << EOS >> $SSH_CONFIG_PATH
Host github github.com
User git
IdentityFile $SSH_GITHUB_PATH
HostName github.com
EOS
code:setup_git.bash
ssh github || :
fi
code:setup_git.bash
echo "Downloading takker99/dotfiles..."
mkdir -p ~/git
pushd ~/git
git clone git@github.com:takker99/dotfiles.git
popd
fi
code:setup_git.bash
mv ~/.gitconfig ~/.gitconfig_old
fi
cat << EOS > ~/.gitconfig
email = $GITHUB_EMAIL
name = $GITHUB_NAME
encoding = utf-8
editor = nvim
filemode = false
quotepath = false
lineNumber = true
template = ~/git/dotfiles/.commit_template
EOS