be63d35902b5aa91739cc95fa74c96a623642720
[ric-plt/appmgr.git] / build / user_entrypoint.sh
1 #!/bin/bash
2 # Copyright (c) 2019 AT&T Intellectual Property.
3 # Copyright (c) 2019 Nokia.
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 #     http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 #
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18
19 source /etc/os-release
20
21 if [ -z ${CONT_USER} ]; then CONT_USER=builder ; fi
22 if [ -z ${CONT_UID} ]; then CONT_UID=$(stat -c "%u" $(readlink -f .) ); fi
23 if [ -z ${CONT_GROUP} ]; then CONT_GROUP=builder; fi
24 if [ -z ${CONT_GID} ]; then CONT_GID=$(stat -c "%g" $(readlink -f .) ); fi
25
26 if [ $(id -u) -eq $CONT_UID ] || [ $(id -u) -ne 0 ] ; then
27   exec "$@"
28 fi
29
30 if [ $(getent group ${CONT_GROUP}) ]  || [ $(getent group ${CONT_GID}) ] ; then
31   echo "group conflict"
32   exit 0 
33 fi
34 if [ $(getent passwd ${CONT_USER}) ] || [ $(getent passwd ${CONT_UID}) ] ; then
35   echo "passwd conflict"
36   exit 0 
37 fi
38
39 if [[ $ID == "ubuntu" ]] ; then
40   groupadd --gid ${CONT_GID} ${CONT_GROUP} || exit 10
41   useradd --shell /bin/bash --uid ${CONT_UID} --gid ${CONT_GID} -o -d /ws $(test -d /ws && echo "-M" || echo "-m") --groups $CONT_GID ${CONT_USER}|| exit 11
42 fi
43 if [[ $ID == "alpine" ]] ; then
44   addgroup -g ${CONT_GID} ${CONT_GROUP}  || exit 10
45   adduser -s /bin/bash -u ${CONT_UID} -G ${CONT_GROUP} -h /ws $(test -d /ws && echo "-H") -D ${CONT_USER} || exit 11
46 fi
47
48 chown ${CONT_UID}.${CONT_GID} /ws
49
50 echo "${CONT_USER} ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
51
52 DOCKER_SOCKET=/var/run/docker.sock
53 if [ -S ${DOCKER_SOCKET} ]; then
54     DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
55     if [ $(getent group ${DOCKER_GID}) ]; then
56       if [[ $ID == "ubuntu" ]] ; then
57         usermod -aG $(getent group ${DOCKER_GID} | cut -d: -f1) ${CONT_USER}  || exit 12
58       fi
59       if [[ $ID == "alpine" ]] ; then
60         addgroup ${CONT_USER} $(getent group ${DOCKER_GID} | cut -d: -f1)  || exit 12
61       fi
62     else
63       if [[ $ID == "ubuntu" ]] ; then
64         groupadd -for -g ${DOCKER_GID} docker_${CONT_USER}  || exit 13
65         usermod -aG docker_${CONT_USER} ${CONT_USER}  || exit 14
66       fi
67       if [[ $ID == "alpine" ]] ; then
68         addgroup -g ${DOCKER_GID} docker_${CONT_USER}  || exit 13
69         addgroup ${CONT_USER} docker_${CONT_USER}  || exit 14
70       fi
71     fi
72 fi
73
74 export USER=${CONT_USER}
75 export HOME=/ws
76
77 mkdir -p /ws/go
78 chown -R ${CONT_UID}.${CONT_GID} /ws/go
79 export GOPATH="/ws/go"
80
81 sudo -E -s -u ${CONT_USER} env "PATH=$PATH" "$@"