Closed12

dotfilesの設定をする

chouxcreamschouxcreams

一旦ファイルをdotfiles以下に移動してみる(まだcommitやpushはしない!)

mv ~/.zshrc ~/.zprofile ~/.zshenv ~/dotfiles

このままだと.zshrcなどが読み込まれないので環境変数ZDOTDIR.zshenvで設定する

echo 'export ZDOTDIR="$HOME/dotfiles"' >> ~/dotfiles/.zshenv

ホームディレクトリに.zshenvがないと設定したZDOTDIRすら読み込めないのでシンボリックリンクを貼る

ln -s ~/dotfiles/.zshenv

再起動して読み込めてそうなことを確認する

exec $SHELL -l
chouxcreamschouxcreams

gitのログに残す前にヤバそうな環境変数がないかざっと確認する
何らかのパスワードとか書いてたら良くないので

chouxcreamschouxcreams

ZDOTDIRを設定したことで、.zsh_history~/dotfiles以下に移動したの忘れてた

mv ~/.zsh_history ~/dotfiles

あとホームディレクトリにzshのコマンド履歴を保持する.zhistory.zsh_historyの2種類があった。この記事によるとCatalina以降では.zsh_historyに保管されるらしいので.zhistoryを削除

コマンド履歴をgitに残す必要ないので.gitignoreを作成

touch ~/dotfiles/.gitignore

この記事みたいにホワイトリスト形式の.gitignoreを作る

.gitignore
### all ignore ###
/*
/.**

### not ignore ###
!/README.md
!/LICENSE
!/.zshenv
!/.zprofile
!/.zshrc
chouxcreamschouxcreams

.zshrcの中身をzinitの設定、zinitのプラグイン、path、環境変数の設定、エイリアスの設定、ぐらいの粒度ででブロック分けする。
ついでにpathの書き方もexport PATH=/path/to/hoge:$PATHから以下の記事のような書き方に変更
https://qiita.com/mollifier/items/42ae46ff4140251290a7

これでいい感じになったのでcommitしてpush

chouxcreamschouxcreams

初期化スクリプトを書く。とりあえず.zshenvのシンボリックリンク貼るだけ。

init.sh
#! /bin/sh

DOTPATH="$HOME/dotfiles"
ln -s $DOTPATH/.zshenv $HOME/.zshenv
chouxcreamschouxcreams

https://hodalog.com/docker-and-git-commands-auto-completion-in-mac-os-catalina/ を参考にgit/dockerのコマンドをtabで補完できるように設定する。
以下を初期化スクリプトに追記

init.sh
# gitの補完用スクリプトのダウンロード
curl -o $HOME/dotfiles/.zsh/completion/git-completion.bash https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash
curl -o $HOME/dotfiles/.zsh/completion/_git https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.zsh

# dockerの補完用スクリプトのダウンロード
curl -o $HOME/.zsh/completion/_docker https://raw.githubusercontent.com/docker/cli/master/contrib/completion/zsh/_docker

以下を.zshrcに追記

.zshrc
### gitやdockerの補完の設定
zstyle ':completion:*:*:git:*' script ~/dotfiles/.zsh/completion/git-completion.bash
fpath=(~/dotfiles/.zsh/completion $fpath)
autoload -Uz compinit && compinit -i
chouxcreamschouxcreams

https://qiita.com/rtakasuke/items/85133e396ba766458c20#最後に

上の記事を参考にGithub Actionsによる自動テストを書く

macos.yml
name: macos

on:
  push:
    branches: [ main ]

jobs:
  macos-test:
    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v2

    - name: Run init.sh
      run: ${GITHUB_WORKSPACE}/init.sh

    - name: Load .zshenv
      run: |
        zsh ~/.zshenv 2> error.log; cat error.log
        if [ -s error.log ]; then false; fi

    - name: Load .zprofile
      run: |
        zsh ${ZDOTDIR}/.zprofile 2> error.log; cat error.log
        if [ -s error.log ]; then false; fi

    - name: Load .zshrc
      run: |
        zsh ${ZDOTDIR}/.zshrc 2> error.log; cat error.log
        if [ -s error.log ]; then false; f
    
lint.yml
name: lint

on:
  push:
    branches: [ main ]

jobs:
  lint-check:
    runs-on: macos-latest

    steps:
    - uses: actions/checkout@v2

    - name: Check init.sh
      run: shellcheck ${GITHUB_WORKSPACE}/init.sh

    - name: Check .zshenv
      run: shellcheck ${GITHUB_WORKSPACE}/.zshenv --exclude=SC2148,SC1090

    - name: Check .zprofile
      run: shellcheck ${GITHUB_WORKSPACE}/.zprofile --exclude=SC2148,SC1090

    - name: Check .zshrc
      run: shellcheck ${GITHUB_WORKSPACE}/.zshrc --exclude=SC2148,SC1090

chouxcreamschouxcreams

shellcheckはzsh的pathの書き方するだけで通らなくなるし、brewのインストールの自動化もまだやってないので、init.shだけ実行するように書き換えた

このスクラップは2021/06/23にクローズされました