-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall
executable file
·96 lines (79 loc) · 2.95 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
#!/usr/bin/env bash
if [ -z "$1" ]; then
echo "Usage: $0 </path/to/config_filename>"
exit 1
fi
get_confirmation_prompt() {
input=$1
if [[ $input = true ]]; then
echo "Y/n"
else
echo "y/N"
fi
}
parse_confirmation_input() {
local input="$1"
local default="$2"
case $input in
y|Y) echo true ;;
n|N) echo false ;;
*) echo $default ;;
esac
}
set -e
SELF="$0"
SCRIPT=$(realpath "$SELF")
ROOT_DIR=$(dirname "$SCRIPT")
CONFIG_PATH="$1"
if ! test -f $CONFIG_PATH; then
echo "Invalid config, $CONFIG_PATH does not exist."
exit 1
fi
RCARGO_CONFIG_LOCAL=".rcargo/config"
RCARGO_CONFIG="$ROOT_DIR/$RCARGO_CONFIG_LOCAL"
mkdir -p ".rcargo" && cp $CONFIG_PATH $RCARGO_CONFIG
. $RCARGO_CONFIG
## Update config
SED_PATTERNS=""
echo "Enter the path to your project directory (defaults to '$LOCAL_DIR')"
echo "This is your local mirror to the remote's $REMOTE_DIR"
read local_dir
if [ -z "$local_dir" ]
then
local_dir=$LOCAL_DIR
fi
LOCAL_DIR=$(realpath $local_dir)
LOCAL_DIR_LINE=$(echo $LOCAL_DIR | sed 's/\//\\\//g')
SED_PATTERNS+="-e s/LOCAL_DIR=\".*\"/LOCAL_DIR=\"$LOCAL_DIR_LINE\"/ "
echo -e "\nGit session manager automatically changes your remote workspace's 'session' based on your local git branch. "
echo "This can help if you tend to concurrently develop on multiple branches."
echo -n "Enable git session manager? ($(get_confirmation_prompt $GIT_SESSION_MANAGER)) "
read enable_git_session_manager
git_session_manager=$(parse_confirmation_input "$enable_git_session_manager" "$GIT_SESSION_MANAGER")
SED_PATTERNS+="-e s/GIT_SESSION_MANAGER=.*/GIT_SESSION_MANAGER=$git_session_manager/ "
echo -e "\nAuto-sync will rsync your local files to the remote machine before every cargo command. "
echo "NOTE: Only use this if you do not use remote development, or you will lose your remote changes!"
echo -n "Enable auto-sync? ($(get_confirmation_prompt $AUTO_LOCAL_TO_REMOTE_SYNC_BEFORE_CARGO_CMD)) "
read enable_auto_sync
auto_sync=$(parse_confirmation_input "$enable_auto_sync" "$AUTO_LOCAL_TO_REMOTE_SYNC_BEFORE_CARGO_CMD")
SED_PATTERNS+="-e s/AUTO_LOCAL_TO_REMOTE_SYNC_BEFORE_CARGO_CMD=.*/AUTO_LOCAL_TO_REMOTE_SYNC_BEFORE_CARGO_CMD=$auto_sync/ "
if [[ "$OSTYPE" == "darwin"* ]]; then
sed -i "" $SED_PATTERNS $RCARGO_CONFIG
else
sed -i $SED_PATTERNS $RCARGO_CONFIG
fi
## Install into /usr/local/rcargo and /usr/local/bin
echo "Installing rcargo to /usr/local/bin ..."
sudo rsync -av $ROOT_DIR --exclude template_config --exclude install --exclude .git --exclude .gitignore /usr/local
sudo ln -sf /usr/local/rcargo-cli/rcargo /usr/local/bin/rcargo
## Finish
INSTALLED_RCARGO_CONFIG="/usr/local/rcargo-cli/$RCARGO_CONFIG_LOCAL"
echo "Config ($INSTALLED_RCARGO_CONFIG):"
cat $INSTALLED_RCARGO_CONFIG
if [[ ! ":$PATH:" == *":/usr/local/bin:"* ]]; then
echo "/usr/local/bin is not added to your PATH. Please add it to your ~/.profile"
echo "Example snippet:"
echo "PATH=\"/usr/local/bin:\$PATH\""
echo ""
echo "Remember to '. ~/.profile' to update your PATH"
fi