setup_git.sh
takker.icon用gitの自動設定script
https://github.com/takker99/dotfiles/blob/v0.2.0/setup_git.bash
やること
GitHubで使うSSH鍵を生成する
takker99/dotfilesのclone
.gitconfigの設定
実行方法
パイプで流し込んだscript中にselect文があると壊れるので、一旦一時ファイルに書き込んでから実行している
code:sh
curl https://raw.githubusercontent.com/takker99/dotfiles/v0.2.0/setup_git.bash > temp.bash && bash temp.bash && rm temp.bash
実装メモ
https://github.com/takker99/dotfiles/blob/1798728f157a97df18bfa89e04533fc3a62304bd/setup.bash#L32 をベースに作り変える
例外処理を有効にする
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
if ! -e "${SSH_GITHUB_PATH}" || ! -e "${SSH_GITHUB_PATH}.pub" ; then
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 ""
公開鍵をコピーして、SSH鍵登録画面に貼り付けるよう指示する
貼り付け終わったら次に進む
select文 (bash)を使っている
パイプで流し込んだscript中にselect文があると壊れる
code:setup_git.bash
copyKey
echo "Copied the SSH public key to your clipboard. Please register it at https://github.com/settings/ssh/new"
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
if ! -e $SSH_CONFIG_PATH ; then
cat << EOS >> $SSH_CONFIG_PATH
Host github github.com
User git
IdentityFile $SSH_GITHUB_PATH
HostName github.com
EOS
set errexit下でエラーを握りつぶす
code:setup_git.bash
ssh github || :
fi
takker99/dotfilesをcloneする
code:setup_git.bash
if ! -d ~/git/dotfiles ; then
echo "Downloading takker99/dotfiles..."
mkdir -p ~/git
pushd ~/git
git clone git@github.com:takker99/dotfiles.git
popd
fi
.gitconfigを設定する
code:setup_git.bash
if -e ~/.gitconfig ; then
mv ~/.gitconfig ~/.gitconfig_old
fi
cat << EOS > ~/.gitconfig
user
email = $GITHUB_EMAIL
name = $GITHUB_NAME
gui
encoding = utf-8
core
editor = nvim
filemode = false
quotepath = false
grep
lineNumber = true
alias
commit
template = ~/git/dotfiles/.commit_template
EOS
#2021-10-08 13:55:29