TimeCapsule💊

やったこと,やること,やってみたいこと

dotfilesのセットアップスクリプトを改良した

少し前まではシンボリックリンクの作成しかしてくれないセットアップする気のないsetup.shでした。

しかしそれでは、「OSのクリーンインストール」、「PCの買い替え」などで環境の再構築をしなければならない時、非常に時間が掛かってしまいますし、「前の環境と全然違う。。。」といった状況に陥ってしまいます。

なので、自動化出来そうな所は自動化してみよう!! ということで、セットアップスクリプトの改良に没頭しました。

デモ

f:id:n2kia4:20170319130924g:plain

リポジトリ

github.com

実行方法

よく見かけるワンコマンド方式です。

bash -c "$(curl -LSs https://raw.github.com/n2kia4/dotfiles/master/setup.sh)"

少し前までは、お決まりのスリーコマンド(clone, cd, 実行)方式だったのですが、少しでも楽に環境の再構築がしたい私は、ワンコマンドでセットアップを行なっています(やっていることは同じです)。

セットアッププロセス

セットアッププロセスはこんな感じです。

  • OSのチェック

    • macOSなら続行

    • macOS以外ならexit 1

  • dotfilesのダウンロード:

    • Gitが使える -> git clone

    • Gitが使えない -> curl

  • シンボリックリンクの作成

  • Homebrewのインストール

    -> インストール済みならSKIP

  • Homebrewのアップデート

  • Homebrewの問題をチェック

  • パッケージのインストール

    -> インストール済みならSKIP

  • Vimプラグインのインストール

  • Vimプラグインのアップデート

  • ログインシェルの変更

    -> 既にログインシェルが$(which zsh)ならSKIP

  • シェルのリロード

コード構成

プロセス毎に関数を作り、main関数でまとめています。

#!/bin/bash

check_os() {
    os_name="$(uname)"
    if [ "$os_name" != "Darwin" ]; then
        print_error "Sorry, this script is intended only for macOS"
        exit 1
    fi
}

download_dotfiles() {
    #...
}
#...
main() {
    check_os
    download_dotfiles
    symbolic_links
    install_homebrew
    install_packages
    install_vim_plugins
    update_vim_plugins
    change_login_shell
    reload_shell
}

main

終わりに

だいぶ環境の再構築が楽になりました。今後も改良を続けていこうと思います。