-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinstall_and_configure.sh
executable file
·156 lines (136 loc) · 5.02 KB
/
install_and_configure.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#!/bin/bash
# OSごとに異なるパッケージマネージャーを設定
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS
if ! command -v brew &> /dev/null; then
# Homebrewがインストールされていない場合はインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
package_manager="brew"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Ubuntu
package_manager="apt"
else
echo "This script supports only macOS and Ubuntu."
exit 1
fi
# スクリプトのディレクトリを取得
script_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# dotfiles フォルダのパス
dotfiles_dir="$script_dir/dotfiles"
# ステータスメッセージを表示する
show_status() {
echo -e "\033[1;34m$1\033[0m" # 青色の文字で表示
}
# エラーが発生した場合に終了する関数
exit_on_error() {
local exit_code=$1
local error_message=$2
if [ "$exit_code" -ne 0 ]; then
echo -e "\033[1;31mError: $error_message\033[0m"
exit "$exit_code"
fi
}
# スクリプトの進捗メッセージを表示
echo "🚀 Script is in progress..."
echo -e
# 一度だけパッケージマネージャーを更新
show_status "⚙️ Updating package list"
if [[ "$package_manager" == "brew" ]]; then
brew update
else
sudo $package_manager update
fi
exit_on_error $? "Failed to update package list."
echo -e
# 関数: パッケージのインストール状態を確認して表示する
check_and_install() {
package_name=$1
show_status "⚙️ Checking $package_name"
if command -v "$package_name" &> /dev/null; then
installed_version=$($package_name --version)
echo "✅ $package_name is already installed (Version: $installed_version)"
else
show_status "🔧 Installing $package_name"
if [[ "$package_manager" == "brew" ]]; then
brew install "$package_name"
else
if ! sudo $package_manager install -y "$package_name"
then
echo "Failed to install $package_name using $package_manager."
sudo snap install "$package_name"
fi
if [[ "$package_name" == "yazi" ]]; then
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup update
cargo install --locked yazi-fm yazi-cli
fi
fi
exit_on_error $? "Failed to install $package_name."
installed_version=$($package_name --version)
echo "✅ $package_name installed successfully (Version: $installed_version)"
fi
}
# 関数: パッケージの設定ファイルを取得・適用する
get_and_apply_config() {
package_name=$1
config_file=$2
show_status "⚙️ Configuring $package_name"
if [ -e "${HOME}/${config_file}" ]; then
# 既存の設定ファイルが存在する場合はバックアップを作成
backup_file="${HOME}/${config_file}_backup_$(date +"%Y%m%d%H%M%S")"
mv "${HOME}/${config_file}" "$backup_file"
echo "📁 Backup created for existing $package_name config file: $backup_file"
fi
# dotfiles フォルダから設定ファイルを取得
cp "$dotfiles_dir/$config_file" "${HOME}/${config_file}"
exit_on_error $? "Failed to copy $package_name configuration file."
echo "✅ $package_name configuration applied successfully: ${HOME}/${config_file}"
}
# lsd
check_and_install "lsd"
echo -e
# Zshのインストールと設定ファイルの取得・適用
check_and_install "zsh"
get_and_apply_config "Zsh" ".zshrc"
# shellcheck source=/dev/null
source "${HOME}/.zshrc"
echo -e
# Emacsのインストールと設定ファイルの取得・適用
check_and_install "emacs"
get_and_apply_config "Emacs" ".emacs.el"
echo -e
# Tmuxのインストールと設定ファイルの取得・適用
check_and_install "tmux"
get_and_apply_config "Tmux" ".tmux.conf"
echo -e
# tmux-mem-cpu-loadのインストール
show_status "⚙️ Checking tmux-mem-cpu-load"
if command -v "tmux-mem-cpu-load" &> /dev/null; then
echo "✅ tmux-mem-cpu-load is already installed"
else
show_status "🔧 Installing tmux-mem-cpu-load"
if [[ "$package_manager" == "brew" ]]; then
brew install tmux-mem-cpu-load
else
git clone https://github.com/thewtex/tmux-mem-cpu-load.git
cd tmux-mem-cpu-load || exit
cmake .
make
sudo make install
fi
exit_on_error $? "Failed to install tmux-mem-cpu-load"
echo "✅ tmux-mem-cpu-load installed successfully"
fi
echo -e
# htopのインストールと設定ファイルの取得・適用
check_and_install "htop"
echo -e
# neofetchのインストールと設定ファイルの取得・適用
check_and_install "neofetch"
echo -e
# neofetchのインストールと設定ファイルの取得・適用
check_and_install "yazi"
echo -e
# スクリプトの進捗メッセージを終了
echo "🎉 Script execution completed!"