Skip to content

Commit 4670851

Browse files
committed
deploy: 3dd550f
1 parent 3dd550f commit 4670851

File tree

1 file changed

+117
-0
lines changed

1 file changed

+117
-0
lines changed

.fuse_hidden00000e0e00000005

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
#!/usr/bin/env bash
2+
3+
RED=$(tput setaf 1)
4+
GREEN=$(tput setaf 2)
5+
YELLOW=$(tput setaf 3)
6+
CYAN=$(tput setaf 6)
7+
BOLD=$(tput bold)
8+
RESET=$(tput sgr0)
9+
TERM_WIDTH=$(tput cols)
10+
11+
echo -e "${BOLD}${CYAN}Checking out master branch...${RESET}"
12+
git checkout master
13+
14+
if [[ -n $(git status --porcelain) ]]; then
15+
echo -e "${BOLD}${RED}Uncommitted changes detected on master. Aborting...${RESET}"
16+
exit 1
17+
fi
18+
19+
if [ ! -d ".venv" ]; then
20+
echo -e "${BOLD}${RED}Virtual environment '.venv' not found. Aborting...${RESET}"
21+
exit 1
22+
fi
23+
24+
if [ -z "$VIRTUAL_ENV" ]; then
25+
echo -e "${BOLD}${CYAN}Activating virtual environment...${RESET}"
26+
source ./.venv/bin/activate
27+
if [ $? -ne 0 ]; then
28+
echo -e "${BOLD}${RED}Failed to activate virtual environment. Aborting...${RESET}"
29+
exit 1
30+
fi
31+
else
32+
echo -e "${BOLD}${GREEN}Virtual environment already active: ${VIRTUAL_ENV}${RESET}"
33+
fi
34+
35+
echo -e "${BOLD}${CYAN}Cleaning old site directory...${RESET}"
36+
rm -rf site/
37+
38+
echo -e "${BOLD}${CYAN}Building site with MkDocs...${RESET}"
39+
mkdocs build --verbose
40+
41+
echo -e "${BOLD}${CYAN}Packaging site into site.zip...${RESET}"
42+
zip -r site.zip site/
43+
44+
echo -e "${BOLD}${CYAN}Checking out gh-pages branch...${RESET}"
45+
git checkout gh-pages
46+
47+
BRANCH=$(git rev-parse --abbrev-ref HEAD)
48+
if [[ "$BRANCH" != "gh-pages" ]]; then
49+
echo -e "${BOLD}${RED}Not on gh-pages branch. Aborting...${RESET}"
50+
exit 1
51+
fi
52+
53+
shopt -s extglob
54+
echo -e "${BOLD}${CYAN}Cleaning old files in gh-pages branch...${RESET}"
55+
rm -rv !(".gitignore"|"CNAME"|".git"|".nojekyll"|".venv"|"updater.sh"|"site")
56+
shopt -u extglob
57+
58+
echo -e "${BOLD}${CYAN}Copying site.zip from master branch...${RESET}"
59+
git checkout master -- site.zip
60+
61+
echo -e "${BOLD}${CYAN}Extracting site.zip...${RESET}"
62+
unzip site.zip
63+
64+
if [ ! -e "site" ]; then
65+
echo -e "${BOLD}${RED}Site directory doesn't exist. Aborting...${RESET}"
66+
exit 1
67+
fi
68+
69+
echo -e "${BOLD}${CYAN}Moving site contents to root...${RESET}"
70+
mv site/* .
71+
72+
echo -e "${BOLD}${CYAN}Cleaning up temporary files...${RESET}"
73+
rm -rfv site/ site.zip
74+
75+
echo -e "${BOLD}${CYAN}Adding changes to git...${RESET}"
76+
git add .
77+
78+
COMMIT=$(git rev-parse --short HEAD)
79+
PREV_COMMIT=$(git rev-parse --short HEAD~1)
80+
81+
REPO_URL=$(git config --get remote.origin.url \
82+
| sed -e 's/[email protected]:/https:\/\/github.com\//' \
83+
-e 's/\.git$//')
84+
85+
COMMIT_URL="${REPO_URL}/commit/${COMMIT}"
86+
COMPARE_URL="${REPO_URL}/compare/${PREV_COMMIT}...${COMMIT}"
87+
88+
echo -e "${BOLD}${CYAN}Committing changes...${RESET}"
89+
git commit -m "deploy: ${COMMIT}"
90+
91+
echo -e "${BOLD}${CYAN}Pushing to gh-pages branch...${RESET}"
92+
git push -u origin gh-pages
93+
94+
echo -e "${BOLD}${CYAN}Switching back to master branch...${RESET}"
95+
git checkout master
96+
97+
rm -rf site/ site.zip
98+
99+
# Full-width deployment banner
100+
draw_line() {
101+
printf "${BOLD}${GREEN}"; for ((i=2;i<TERM_WIDTH;i++)); do printf ""; done; printf "${RESET}\n"
102+
}
103+
104+
draw_middle() {
105+
local left="$1"
106+
local right="$2"
107+
local padding=$((TERM_WIDTH - ${#left} - ${#right} - 4))
108+
printf "${BOLD}${GREEN}${RESET} ${BOLD}%s${RESET}%*s ${BOLD}${GREEN}${RESET}\n" "$left" "$padding" "$right"
109+
}
110+
111+
draw_line
112+
draw_middle "Deployment Status" ""
113+
draw_line
114+
draw_middle "View changes:" "${COMMIT_URL}"
115+
draw_middle "Compare previous:" "${COMPARE_URL}"
116+
117+
printf "${BOLD}${GREEN}"; for ((i=2;i<TERM_WIDTH;i++)); do printf ""; done; printf "${RESET}\n"

0 commit comments

Comments
 (0)