diff --git a/configure_user.sh b/configure_user.sh index c3ef7e0..707ac7c 100755 --- a/configure_user.sh +++ b/configure_user.sh @@ -37,6 +37,41 @@ configure_git() { fi } +configure_gpg() { + [ -d ~/.gnupg ] && [ -f ~/.gnupg/gpg.conf ] && return + + if confirm_action "要配置 gpg 吗?" "Y"; then + mkdir -p ~/.gnupg + chmod 700 ~/.gnupg + cp $scriptdir/files/gpg.conf ~/.gnupg/gpg.conf + fi +} + +configure_git_gpg() { + [ ! -f ~/.gitconfig ] && return + ! command_exists git && return + [ -n "$(git config --global user.signingkey)" ] && return + + if confirm_action "要配置 git 使用 gpg 签名吗?" "N"; then + if ! command_exists 7za; then + echo "7zip 未安装,请运行 sudo apt install p7zip-full 安装" + return + fi + read_password + cp $scriptdir/files/git.key.zip $tempdir/git.key.zip + 7za x -p$password $tempdir/git.key.zip -o$tempdir > /dev/null 2>&1 + rm $tempdir/git.key.zip + if [ ! -s $tempdir/git.key ]; then + echo "Wrong password!" + return + fi + gpg --import $tempdir/git.key + rm $tempdir/git.key + git config --global user.signingkey 4ACB54FB3EFF978038BFB374A523E440E24B89CF + git config --global commit.gpgSign true + fi +} + configure_miniconda() { [ -d ~/.miniconda3 ] && return [ $offline -eq 1 ] && return @@ -85,16 +120,6 @@ configure_nvm() { fi } -configure_gpg() { - [ -d ~/.gnupg ] && [ -f ~/.gnupg/gpg.conf ] && return - - if confirm_action "要配置 gpg 吗?" "Y"; then - mkdir -p ~/.gnupg - chmod 700 ~/.gnupg - cp $scriptdir/files/gpg.conf ~/.gnupg/gpg.conf - fi -} - # ============================================================ if [ $# -ne 0 ]; then @@ -102,6 +127,7 @@ if [ $# -ne 0 ]; then declare -F configure_$func >/dev/null || continue echo "Configuring $func..." eval "configure_$func" + unset -f configure_$func done return fi @@ -109,7 +135,8 @@ fi configure_ssh configure_ssh_keygen configure_git +configure_gpg +configure_git_gpg configure_miniconda configure_miniforge configure_nvm -configure_gpg diff --git a/files/git.key.zip b/files/git.key.zip new file mode 100644 index 0000000..09ff79b Binary files /dev/null and b/files/git.key.zip differ