1+ version : ' 3'
2+ silent : true
3+
4+ tasks :
5+ default :
6+ desc : The default task that shows help
7+ cmds :
8+ - task --list
9+
10+ install :
11+ desc : Install the project
12+ deps :
13+ - _dc_compile
14+ cmds :
15+ - task _show_preinstall_notes
16+ - echo "Installing"
17+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml pull
18+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml up --force-recreate --detach --remove-orphans
19+ - echo "Waiting for database to be ready"
20+ - sleep 10
21+ - echo "Initialize the database"
22+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec api bin/console doctrine:schema:create
23+ - echo "Clearing the cache"
24+ - task cc
25+ - echo "Create jwt key pair"
26+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec --user 1000:1000 api bin/console lexik:jwt:generate-keypair --skip-if-exists
27+ - task tenant_add
28+ - echo "CREATE AN ADMIN USER. CHOOSE THE TENANT YOU JUST CREATED."
29+ - task user_add
30+ - task load_templates
31+ - task _show_notes
32+
33+ reinstall :
34+ desc : Reinstall from scratch. Removes the database, all containers, and volumes.
35+ deps :
36+ - down
37+ cmds :
38+ - task install
39+
40+ down :
41+ desc : Remove all containers and volumes
42+ deps :
43+ - stop
44+ cmds :
45+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml down -v
46+
47+ up :
48+ desc : Take the environment up without altering the existing state of the containers
49+ cmds :
50+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml up -d
51+
52+ stop :
53+ desc : Stop all containers without altering anything else
54+ cmds :
55+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml stop
56+
57+ tenant_add :
58+ desc : Add a new tenant group
59+ cmds :
60+ - echo ""
61+ - echo "Add a tenant"
62+ - echo "===================================================="
63+ - echo "A tenant is a group of users that share the same configuration. F. ex. IT, Library, Schools etc."
64+ - echo "You have to provide tenant id, tenant title and optionally a description."
65+ - echo "===================================================="
66+ - echo ""
67+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec -T api bin/console app:tenant:add
68+
69+ user_add :
70+ desc : Add a new user (editor or admin)
71+ cmds :
72+ - echo ""
73+ - echo "Add a user"
74+ - echo "===================================================="
75+ - echo "You have to provide email, password, full name, role (editor or admin) and the tenant id."
76+ - echo "===================================================="
77+ - echo ""
78+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec -T api bin/console app:user:add
79+
80+ load_templates :
81+ desc : Load templates and screen layouts
82+ cmds :
83+ - |
84+ TEMPLATES_RELEASE=$(grep ^TASK_VERSION_TEMPLATES= .env.docker.local | cut -d '=' -f 2)
85+ TEMPLATES=$(grep ^TASK_TEMPLATES= .env.docker.local | cut -d '=' -f 2 | tr -d ' "' | tr ',' ' ')
86+ if [ -z "$TEMPLATES_RELEASE" ]; then
87+ echo "Error: TASK_VERSION_TEMPLATES is not set in .env.docker.local"
88+ exit 1
89+ fi
90+ if [ -z "$TEMPLATES" ]; then
91+ echo "Error: TASK_TEMPLATES is not set or empty in .env.docker.local"
92+ exit 1
93+ fi
94+ echo "Using TEMPLATES_RELEASE=$TEMPLATES_RELEASE"
95+ echo "Using TEMPLATES=$TEMPLATES"
96+ for TEMPLATE in $TEMPLATES; do
97+ CONFIG_URL="https://raw.githubusercontent.com/os2display/display-templates/refs/tags/$TEMPLATES_RELEASE/build/$TEMPLATE-config-main.json"
98+ echo "Loading template: $TEMPLATE"
99+ docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec --user deploy api bin/console app:template:load -p $CONFIG_URL
100+ done
101+
102+ SCREEN_LAYOUTS=$(grep ^TASK_SCREEN_LAYOUTS= .env.docker.local | cut -d '=' -f 2 | tr -d ' "' | tr ',' ' ')
103+ if [ -z "$SCREEN_LAYOUTS" ]; then
104+ echo "Error: TASK_SCREEN_LAYOUTS is not set or empty in .env.docker.local"
105+ exit 1
106+ fi
107+ echo "Using SCREEN_LAYOUTS=$SCREEN_LAYOUTS"
108+ for SCREEN_LAYOUT in $SCREEN_LAYOUTS; do
109+ CONFIG_URL="https://raw.githubusercontent.com/os2display/display-templates/refs/tags/$TEMPLATES_RELEASE/src/screen-layouts/$SCREEN_LAYOUT.json"
110+ echo "Loading screen layout: $SCREEN_LAYOUT"
111+ docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec --user deploy api bin/console app:screen-layouts:load --update --cleanup-regions $CONFIG_URL
112+ done
113+
114+ logs :
115+ desc : Follow docker logs from the containers
116+ cmds :
117+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml logs -f --tail=50
118+
119+ cc :
120+ desc : Clear the cache
121+ cmds :
122+ - docker compose --env-file .env.local --env-file .env.docker.local -f docker-compose.yml exec api bin/console cache:clear
123+
124+ _show_preinstall_notes :
125+ cmds :
126+ - echo ""
127+ - echo "===================================================="
128+ - echo "Pre-installation Requirements"
129+ - echo "===================================================="
130+ - echo ""
131+ - echo "- Edit .env.docker.local and provide your own configuration settings."
132+ - echo "- Copy your SSL certificate files (docker.crt and docker.key) to the ssl-folder"
133+ - echo ""
134+ - echo "Have you completed the above pre-install requirements? (yes/no)"
135+ - |
136+ read answer && case $answer in
137+ [Yy][Ee][Ss]) ;;
138+ *) echo "Please complete the pre-install tasks before continuing."; exit 1;;
139+ esac
140+
141+ _show_notes :
142+ cmds :
143+ - |
144+ DOMAIN=$(grep ^COMPOSE_SERVER_DOMAIN= .env.docker.local | cut -d '=' -f 2)
145+ echo ""
146+ echo "===================================================="
147+ echo "OS2display now is available via the URLs below"
148+ echo "===================================================="
149+ echo "Admin: https://$DOMAIN/admin"
150+ echo "Screen: https://$DOMAIN/screen"
151+ echo "===================================================="
152+
153+ _env_files :
154+ cmds :
155+ - |
156+ if [ ! -f .env.local ]; then
157+ echo ".env.local does not exist. Copying .env.example to .env.local..."
158+ cp .env.example .env.local
159+ fi
160+ - |
161+ if [ ! -f .env.docker.local ]; then
162+ echo ".env.docker.local does not exist. Copying .env.docker.example to .env.docker.local..."
163+ cp .env.docker.example .env.docker.local
164+ fi
165+
166+ _dc_compile :
167+ deps :
168+ - _env_files
169+ cmds :
170+ - |
171+ COMPOSE_FILES="-f docker-compose.server.yml"
172+ if grep -q '^INTERNAL_DATABASE=true' .env.docker.local; then
173+ COMPOSE_FILES="$COMPOSE_FILES -f docker-compose.mariadb.yml"
174+ fi
175+ if grep -q '^INTERNAL_PROXY=true' .env.docker.local; then
176+ COMPOSE_FILES="$COMPOSE_FILES -f docker-compose.traefik.yml"
177+ fi
178+ docker compose --env-file .env.local --env-file .env.docker.local $COMPOSE_FILES config > docker-compose.yml
0 commit comments