summaryrefslogtreecommitdiff
path: root/deploy/deploy.sh
blob: 4650ccfe5a32b43675d24ffdf000b925c0eee36a (plain)
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
#!/bin/bash

die() {
    >&2 echo "error: $@"
    exit 1
}

set -e

DIR="$( cd "$( dirname "$(readlink -f "${BASH_SOURCE[0]}")" )" && pwd )"

DEV_DIR="$(realpath "$DIR/../")"
STAGING_DIR="$HOME/staging"
PROD_DIR="$HOME/prod"
PHP=/usr/bin/php8.1
REPO_URI=$(cat "$DEV_DIR/config.yaml" | grep ^git_repo | head -1 | awk '{print $2}')

git push origin master

[ -d "$STAGING_DIR" ] || mkdir "$STAGING_DIR"
pushd "$STAGING_DIR"

if [ ! -d .git ]; then
    git init
    git remote add origin "$REPO_URI"
    git fetch
    git checkout master
fi

git reset --hard
git pull origin master

composer8.1 install --no-dev --optimize-autoloader --ignore-platform-reqs

if [ ! -d node_modules ]; then
    npm i
fi

cp "$DEV_DIR/config.yaml" .

"$DIR"/build_js.sh -i "$DEV_DIR/htdocs/js" -o "$STAGING_DIR/htdocs/dist-js" || die "build_js failed"
"$DIR"/build_css.sh -i "$DEV_DIR/htdocs/scss" -o "$STAGING_DIR/htdocs/dist-css" || die "build_css failed"
$PHP "$DIR"/gen_static_config.php -i "$STAGING_DIR/htdocs" > "$STAGING_DIR/config-static.php" || die "gen_static_config failed"

popd

# copy staging to prod
rsync -a --delete --delete-excluded --info=progress2 "$STAGING_DIR/" "$PROD_DIR/" \
    --exclude .git \
    --exclude debug.log \
    --exclude='/log' \
    --exclude='/composer.*' \
    --exclude='/htdocs/scss' \
    --exclude='/htdocs/js' \
    --exclude='/htdocs/sass.php' \
    --exclude='/htdocs/js.php' \
    --exclude='*.sh' \
    --exclude='*.sql'