|
1 | 1 | #!/usr/bin/env bash
|
2 |
| -## ./deploy.sh |
3 |
| -## Deploys a web app to given SERVERS |
| 2 | +## Deploys a web app to given servers. Check out |
| 3 | +## This script is designed for Debian-based systems. Support for other distros will be added later. |
4 | 4 | ## Copyright (C) 2025 Buffer Park. All rights reserved.
|
5 | 5 | ## MIT License
|
6 | 6 |
|
7 |
| -set -e |
8 |
| -trap 'echo -e "\n${BRed}Error: An error occurred during deployment. Please check your inputs and try again.${Color_Off}"' ERR |
9 |
| - |
10 | 7 | SOURCE="${BASH_SOURCE[0]}"
|
11 | 8 | while [ -L "$SOURCE" ]; do
|
12 | 9 | DIR="$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)"
|
|
16 | 13 | SCRIPT_DIR="$(cd -P "$(dirname "$SOURCE")" >/dev/null 2>&1 && pwd)"
|
17 | 14 | source "$SCRIPT_DIR/awesome.conf" # For colors and Usage message
|
18 | 15 |
|
19 |
| -cd .. |
| 16 | +set -e |
| 17 | +trap 'echo -e "\n${BRed}Error: An error occurred during deployment. Please check your inputs and try again.${Color_Off}"' ERR |
20 | 18 |
|
| 19 | +SCRIPT_PATH="$DIR/$(basename "$SOURCE")" |
| 20 | +IN_PATH=false |
| 21 | +IFS=':' read -ra PATH_DIRS <<< "$PATH" |
| 22 | +for dir in "${PATH_DIRS[@]}"; do |
| 23 | + if [[ "$SCRIPT_PATH" == "$dir/"* ]]; then |
| 24 | + IN_PATH=true |
| 25 | + break |
| 26 | + fi |
| 27 | +done |
| 28 | + |
| 29 | +if ! $IN_PATH && [[ ! -f /usr/local/bin/deploy && ! -L /usr/local/bin/deploy ]]; then |
| 30 | + echo "Warning: Script is not in your \$PATH. Adding it will allow you to run it from anywhere." |
| 31 | + read -p "Do you want to add it to your \$PATH? (y/n) " answer |
| 32 | + if [[ "$answer" == "y" || "$answer" == "Y" ]]; then |
| 33 | + echo "Adding script to your \$PATH..." |
| 34 | + sudo ln -s "$SCRIPT_PATH" /usr/local/bin/deploy |
| 35 | + echo -e "Script added to your \$PATH. You can now run it from anywhere with the command:${BCyan} deploy [options] ${Color_Off}\n" |
| 36 | + else |
| 37 | + echo "Script not added to your \$PATH. You can run it using the full path: $SCRIPT_PATH" |
| 38 | + fi |
| 39 | +fi |
| 40 | + |
| 41 | +cd .. |
21 | 42 | for i in "$@"; do
|
22 | 43 | if [[ $i =~ ^--config= ]]; then
|
23 | 44 | config="${i#*=}"
|
@@ -63,7 +84,7 @@ for i in "$@"; do
|
63 | 84 | SETUP_COMMAND=""
|
64 | 85 | if ! [[ "$NUMBER" =~ ^[0-9]+$ ]]; then
|
65 | 86 | echo -e "${BRed}Error: Invalid number of commands '$NUMBER'. Please provide a number.${Color_Off}"
|
66 |
| - exit 1 |
| 87 | + exit 1O |
67 | 88 | fi
|
68 | 89 | for ((i=1; i<=NUMBER; i++)); do
|
69 | 90 | printf "${BCyan}Enter command $i: ${Color_Off}"
|
|
105 | 126 | KEEP=${KEEP:-5}
|
106 | 127 |
|
107 | 128 | if [ -z "$PROJECT_NAME" ]; then
|
108 |
| - echo -e "${BYellow}WARNING: PROJECT_NAME is not set in your environment. Falling back to user input. ${Color_Off}\n" |
109 |
| - echo -e "${BCyan}What is your project name?${Color_Off}" |
| 129 | + echo -e "${BYellow}WARNING: PROJECT_NAME is not set in your config. Falling back to user input. ${Color_Off}\n" |
| 130 | + echo -e "${BCyan}What is your project's name?${Color_Off}" |
110 | 131 | read -r PROJECT_NAME
|
111 | 132 | if [ -z "$PROJECT_NAME" ]; then
|
112 | 133 | echo -e "${BRed}Error: No project name provided. Exiting...${Color_Off}"
|
@@ -224,7 +245,7 @@ echo -e "Deployment will commence in 10 seconds. Check if you entered correct in
|
224 | 245 |
|
225 | 246 | spinner="/|\\-/"
|
226 | 247 | for ((j=10; j>0; j--)); do
|
227 |
| - echo -ne "${Yellow}Starting deployment in $j seconds... ${spinner:$((j%4)):1} \r" |
| 248 | + echo -ne "${Yellow}\tStarting deployment in $j seconds... ${spinner:$((j%4)):1} \r" |
228 | 249 | sleep 1
|
229 | 250 | done
|
230 | 251 | echo -e "\n"
|
|
0 commit comments