a764765514870c80b12a31e89403e8bd410c241b
[src/app-framework-main.git] / conf / unit / macros.inc
1 dnl vim: set filetype=sysctl.conf.m4 syntax=sysctl.conf.m4:
2 --------------------------------------------------------------------------------
3 -- GLOBAL IMPORTANT DEFINITIONS
4 --------------------------------------------------------------------------------
5 define( `X_EMITS', 1)
6 define( `X_DIVERTS', `divert(eval(-!X_EMITS()))')
7 define( `X_PUSH_DIVERTS', `pushdef(`X_EMITS', eval(X_EMITS() && $1))X_DIVERTS()')
8
9 define( `X_IF', `pushdef(`X_COND', $1)X_PUSH_DIVERTS($1)')
10 define( `X_ELSE', `popdef(`X_EMITS')X_PUSH_DIVERTS(eval(!X_COND))')
11 define( `X_ELIF', `X_ELSE()X_IF($1)')
12 define( `X_ENDIF', `popdef(`X_EMITS')popdef(`X_COND')X_DIVERTS()')
13
14 define( `IF', `pushdef(`ELSE',`X_ELSE()')pushdef(`ELIF',`X_ELIF($1)')pushdef(`ENDIF',`X_ENDIF()popdef(`ELSE',`ELIF',`ENDIF')')X_IF($1)')
15 --------------------------------------------------------------------------------
16 -- MUSTACH SPECIFIC DEFINITIONS
17 --------------------------------------------------------------------------------
18 define( `MUSTACH_ON', `ifelse(`$2',,,`{{#$1}}`$2'{{/$1}}')ifelse(`$3',,,`{{^$1}}`$3'{{/$1}}')')
19 define( `MUSTACH_IF', `{{#$1}}pushdef(`ELSE',`{{/$1}}{{^$1}}')pushdef(`ENDIF',`{{/$1}}popdef(`ELSE',`ENDIF')')')
20 define( `MUSTACH_IF_NOT', `{{^$1}}pushdef(`ELSE',`{{/$1}}{{#$1}}')pushdef(`ENDIF',`{{/$1}}popdef(`ELSE',`ENDIF')')')
21 --------------------------------------------------------------------------------
22 -- CONDITIONAL HELPERS
23 --------------------------------------------------------------------------------
24 define( `PERM', `@afm_prefix@permission:$1')
25 define( `REQPERM', `required-permission.PERM($1)')
26
27 define( `ON_PERM', `MUSTACH_ON(REQPERM($1),$2,$3)')
28 define( `IF_PERM', `MUSTACH_IF(REQPERM($1))')
29 define( `IF_NOT_PERM', `MUSTACH_IF_NOT(REQPERM($1))')
30
31 define( `ON_CONTENT', `MUSTACH_ON(content.type=$1,$2,$3)')
32 define( `IF_CONTENT', `MUSTACH_IF(content.type=$1)')
33 define( `IF_NOT_CONTENT', `MUSTACH_IF_NOT(content.type=$1)')
34
35 define( `ON_VALUE', `MUSTACH_ON(value=$1,$2,$3)')
36 define( `IF_VALUE', `MUSTACH_IF(value=$1)')
37 define( `IF_NOT_VALUE', `MUSTACH_IF_NOT(value=$1)')
38 --------------------------------------------------------------------------------
39 -- AFM DEFINITION
40 --------------------------------------------------------------------------------
41 -- NOTE:
42 --  when home screen will use real ids
43 --  use TARGET={{:id}}--{{:ver}}--{{:#target}}
44 --  instead of TARGET={{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
45 --------------------------------------------------------------------------------
46 define( `TARGET', `{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}')
47 define( `NEWTARGET', `{{:id}}--{{:ver}}--{{:#target}}')
48 define( `UNIT_NAME_BASE', `afm-ON_PERM(`:public:hidden', `service', `appli')-NEWTARGET')
49 define( `UNIT_NAME_SERVICE', `UNIT_NAME_BASE@%i.service')
50 define( `UNIT_NAME_API_BASE', `afm-api-$1')
51 define( `UNIT_NAME_API_SERVICE', `UNIT_NAME_API_BASE($1)@$2.service')
52 define( `UNIT_NAME_API_SOCKET', `UNIT_NAME_API_BASE($1)@$2.socket')
53 define( `UNIT_NAME_BINDING_BASE', `afm-link-$1')
54 define( `UNIT_NAME_BINDING_SERVICE', `UNIT_NAME_BINDING_BASE($1)@$2.service')
55 define( `APP_DATA_DIR', `/home/%i/app-data')
56 define( `USER_RUN_DIR', `@afm_users_rundir@/%i')
57 define( `DEBUGGING_DIR', `@afm_platform_rundir@/debug')
58 define( `API_PATH', `USER_RUN_DIR/apis')
59 define( `API_PATH_WS', `API_PATH/ws')
60 define( `API_PATH_LINK', `API_PATH/link')
61 --------------------------------------------------------------------------------
62 -- AGL_DEVEL SPECIFIC PARTS
63 --------------------------------------------------------------------------------
64 define( `ON_AGL_DEVEL', `ifdef(`AGL_DEVEL', $1, $2)')
65 define( `ON_NOT_AGL_DEVEL', `ifdef(`AGL_DEVEL', $2, $1)')
66 define( `IF_AGL_DEVEL', `IF(ON_AGL_DEVEL(1,0))')
67 define( `IF_NOT_AGL_DEVEL', `IF(ON_AGL_DEVEL(0,1))')