summaryrefslogtreecommitdiff
path: root/compose
diff options
context:
space:
mode:
Diffstat (limited to 'compose')
-rwxr-xr-xcompose122
1 files changed, 0 insertions, 122 deletions
diff --git a/compose b/compose
deleted file mode 100755
index 20126f4..0000000
--- a/compose
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/bin/sh
-### CRIMSON --- A simple PHP framework.
-### Copyright © 2024 Freya Murphy <contact@freyacat.org>
-###
-### This file is part of CRIMSON.
-###
-### CRIMSON is free software; you can redistribute it and/or modify it
-### under the terms of the GNU General Public License as published by
-### the Free Software Foundation; either version 3 of the License, or (at
-### your option) any later version.
-###
-### CRIMSON is distributed in the hope that it will be useful, but
-### WITHOUT ANY WARRANTY; without even the implied warranty of
-### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-### GNU General Public License for more details.
-###
-### You should have received a copy of the GNU General Public License
-### along with CRIMSON. If not, see <http://www.gnu.org/licenses/>.
-
-# `compose`
-# This script will provide a docker compose interface with all the CRIMSON
-# environment setup. This script may request root privilages since it needs all
-# docker containers to run with user 1000:1000. If you are not user 1000:1000,
-# root privlage is required to create volume folders with uid/gid 1000.
-
-# Make sure errors fail to avoid nasal demons
-set -e
-
-# ========================================================= PERMISSION CHECK ==
-# Make sure we are either root or user 1000:1000. This is required for crimson.
-
-args="$@"
-command="$0 $args"
-
-uid=$(id -u)
-gid=$(id -g)
-
-if [[ $uid -eq 1000 ]] && [[ $gid -eq 1000 ]]; then
- true # all set
-elif [[ $uid -eq 0 ]] && [[ $gid -eq 0 ]]; then
- true # all set
-else
- # root required (1000:1000 may not exist)
- exec sudo -E $command
-fi
-
-# ================================================================ CONSTANTS ==
-# ROOT: This is the folder the crimson project is located in. ROOT is used to
-# access docker-compose files, base.env, and other crimson files.
-# CALL_ROOT: This is the folder that the user who called `compose` is currently
-# in. For crimson to work this must be the folder that your project using
-# crimson is. This is because crimson loads `.env` here to load any user
-# specified environment. `.env` is needed for $DATA and $SOURCE. Read base.env
-# for more information.
-
-ROOT="$(realpath "$(dirname "$0")")"
-CALL_ROOT="$(pwd)"
-
-# ================================================================ FUNCTIONS ==
-# add_arg - adds arguments to the docker compose command to be run
-# include_env - loads a .env file
-# include - adds the docker compose file to be included called
-# docker-compose.<$1>.yml
-
-docker_args=""
-function add_arg {
- docker_args="$docker_args $@"
-}
-
-function include_env {
- local file
- file="$1"
- if [ -f "$file" ]; then
- source "$file"
- add_arg --env-file $file
- fi
-}
-
-function include {
- local file
- if [ "$2" = "true" ]; then
- file="$ROOT/docker/docker-compose.$1.yml"
- add_arg -f $file
- fi
-}
-
-# ================================================================ BOOTSTRAP ==
-# Enter the crimson project directory, load all .env files, and pick which
-# docker-compose.*.yml files are requested. Then make the docker volumes here
-# with the correct permissions. If we let docker do it, it will make them owned
-# by root (thanks) and break our containers.
-
-cd "$ROOT"
-
-# get docker file includes
-include_env "$ROOT/base.env"
-include_env "$CALL_ROOT/.env"
-include "base" "true"
-include "db" "$POSTGRES_ENABLED"
-include "api" "$API_ENABLED"
-
-# assert SOURCE and DATA are set
-if [ -z "$SOURCE" ]; then
- printf "fatal: SOURCE is not set. See '$ROOT/base.env'\n"
- exit 1
-fi
-
-if [ -z "$DATA" ]; then
- printf "fatal: DATA is not set. See '$ROOT/base.env'\n"
- exit 1
-fi
-
-# preset perms (postgres will crash if not)
-if [ ! -d "$DATA" ]; then
- mkdir -p "$DATA"
- mkdir -p "$DATA/crimson"
- mkdir -p "$DATA/schemas"
- chown -R 1000:1000 "$DATA"
-fi
-
-# run docker compose
-exec -a docker -- docker compose -p $PROJECT_NAME $docker_args "$@"