-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathinstall
executable file
·115 lines (87 loc) · 2.88 KB
/
install
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
#!/usr/bin/env bash
set -o errexit -o nounset -o pipefail -o errtrace
(shopt -p inherit_errexit &>/dev/null) && shopt -s inherit_errexit
SCRIPT_DIR="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
readonly SCRIPT_DIR
readonly DOTFILES_DIR=$SCRIPT_DIR
readonly ENV_DIR=$DOTFILES_DIR/envs
# one.bash:usage
if [[ $# == 0 ]] || [[ ${1:-} == -h ]] || [[ ${1:-} == --help ]]; then
cat <<EOF
Usage: $(basename "$0") <env>
Desc: Initialize all configs, plugins and bash.
Env:
EOF
find ./envs -mindepth 1 -maxdepth 1 -type d -not -name ".*" -not -name "_*" -exec basename {} \; | sort | sed 's/^/ /'
exit 0
fi
# shellcheck source=scripts/install-funcs.bash
. "$DOTFILES_DIR"/scripts/install-funcs.bash
# shellcheck source=./scripts/colors.bash
. "$DOTFILES_DIR"/scripts/colors.bash
# shellcheck source=./scripts/lobash.bash
. "$DOTFILES_DIR"/scripts/lobash.bash
check() {
check_bash
check_cmd gawk
check_cmd perl
check_cmd git
check_cmd python3
}
set_proxy() {
[[ -z ${PROXY:-} ]] && return
local http_proxy="http://$PROXY"
local https_proxy="http://$PROXY"
local socket_proxy="socks5://$PROXY"
export http_proxy="$http_proxy"
export HTTP_PROXY="$http_proxy"
export https_proxy="$https_proxy"
export HTTPS_PROXY="$https_proxy"
export ALL_PROXY="$socket_proxy"
}
init_one_bash() {
echo "[TODO] init one.bash"
ln -fs "$DOTFILES_DIR/others/one.bash/bin/one" "$HOME/bin/one"
export PATH="$PATH:$HOME/bin"
one dep install
local ONE_BASH_DIR=${XDG_CONFIG_HOME:-$HOME/.config}/one.bash
echo "Create one.bash directory: $ONE_BASH_DIR"
mkdir -p "$ONE_BASH_DIR"
local ONE_CONF=$ONE_BASH_DIR/one.config.bash
local one_conf_path
one_conf_path=$(realpath "$env"/one.config.bash)
echo "ONE_CONF: $ONE_CONF -> $one_conf_path"
ln -fs "$one_conf_path" "$ONE_CONF"
echo "[DONE] init one.bash"
}
init_links() {
local ONE_BASH_DIR=${XDG_CONFIG_HOME:-$HOME/.config}/one.bash
local ONE_CONF=$ONE_BASH_DIR/one.config.bash
bash -c ". '$ONE_CONF' && PATH=$PATH one link"
}
main() {
local env=$ENV_DIR/$1
set_proxy
check
GITHUB_CLONE=git github_clone "adoyle-h/dotfiles-envs" "$ENV_DIR"
if [[ ! -d "$env" ]]; then
echo "Not found directory: $env" >&2
return 4
fi
# shellcheck disable=1091
. "$env"/config.bash
github_clone "one-bash/one.bash" "$DOTFILES_DIR/others/one.bash"
github_clone "adoyle-h/neovim-config" "$DOTFILES_DIR/others/nvim"
github_clone "adoyle-h/my-command-cheat" "$DOTFILES_DIR/others/cheatsheets-adoyle"
github_clone "adoyle-h/tmux-choose-pane" "$DOTFILES_DIR/others/tmux-choose-pane"
github_clone "adoyle-h/forgit" "$DOTFILES_DIR/others/forgit"
[[ ! -d $DOWNLOAD_BIN_DIR ]] && mkdir -p "$DOWNLOAD_BIN_DIR"
download_bins
init_one_bash
init_links
ONE_DIR=$HOME/dotfiles/others/one.bash
. "$ONE_DIR/bash/entry.bash"
type after_install &>/dev/null && after_install
echo "Please restart your shell to take effect."
}
main "$@"