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