FROM node:alpine AS build 
WORKDIR /build/alpine

RUN apk update --no-cache  && apk upgrade --no-cache 
RUN apk add --no-cache cmake ninja clang alpine-sdk lua-aports sudo openssh-keygen fakeroot openssh-client yaml-dev brotli-dev json-c-dev sqlite-dev libpq-dev util-linux-dev libc-dev tinyxml2-dev ffmpeg-dev

RUN git clone https://git.tuxist.de/git/jan.koester/libcmdplus.git
RUN mkdir libcmdplus/build
RUN cd libcmdplus/build && cmake ../ -DCMAKE_CXX_FLAGS="-fPIC" -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/tuxist/uuidplus.git
RUN mkdir uuidplus/build
RUN cd uuidplus/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/jan.koester/libnetplus.git
RUN mkdir libnetplus/build
RUN cd libnetplus/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/jan.koester/libhtmlpp.git
RUN mkdir libhtmlpp/build
RUN cd libhtmlpp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/jan.koester/libhttppp.git
RUN mkdir libhttppp/build
RUN cd libhttppp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/jan.koester/libconfplus.git
RUN mkdir libconfplus/build
RUN cd libconfplus/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/jan.koester/libdbpp.git
RUN mkdir libdbpp/build
RUN cd libdbpp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/jan.koester/libgameinfoplus.git
RUN mkdir libgameinfoplus/build
RUN cd libgameinfoplus/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/tuxist/libparitypp
RUN mkdir libparitypp/build
RUN cd libparitypp/build && cmake ../ -G Ninja && ninja install

RUN git clone https://git.tuxist.de/git/tuxist/authdb.git
RUN mkdir authdb/build
RUN cd authdb/build && cmake ../ -G Ninja -DBUILD_BINDINGS=OFF && ninja install

RUN git clone https://git.tuxist.de/git/tuxist/mediadb.git
RUN mkdir mediadb/build
RUN cd mediadb/build && cmake ../ -G Ninja && ninja install

RUN git clone https://github.com/Tuxist/CPP-SMTPClient-library.git
RUN mkdir CPP-SMTPClient-library/build
RUN cd CPP-SMTPClient-library/build && cmake ../ -G Ninja -DCMAKE_INSTALL_LIBDIR=/usr/local/lib -DCMAKE_INSTALL_INCLUDEDIR=/usr/local/include && ninja install

RUN git clone https://git.tuxist.de/git/jan.koester/blogi.git
RUN mkdir blogi/build
RUN cd blogi/build && cmake ../ -G Ninja && ninja install

#RUN mkdir /etc/blogi && cp blogi/config.yaml /etc/blogi

USER root
FROM node:alpine
RUN addgroup blogi
RUN adduser blogi -h /var/lib/blogi -S -G blogi
RUN apk update && apk upgrade
RUN apk add --no-cache yaml brotli openssl json-c libuuid libpq sqlite-libs libstdc++ pwgen sed tinyxml2 ffmpeg

RUN mkdir /etc/blogi
RUN mkdir /usr/local/share/blogi

COPY docker-config.yaml /usr/local/share/blogi

RUN mkdir -p /usr/local/sbin /usr/local/bin /usr/local/lib
COPY run.sh /usr/local/sbin
RUN chmod +x /usr/local/sbin/run.sh

COPY --from=build /usr/local/bin/blogi /usr/local/bin/blogi
RUN chmod +x /usr/local/bin/blogi

COPY --from=build /usr/local/bin/authcli /usr/local/bin/authcli
RUN chmod +x /usr/local/bin/authcli

COPY --from=build /usr/local/share/blogi /usr/local/share/blogi
COPY --from=build /usr/local/lib /usr/local/lib

COPY --from=build /usr/local/lib/dbpp/pgsql.so /usr/local/lib/blogi/dbpp/pgsql.so
COPY --from=build /usr/local/lib/dbpp/sqlite.so /usr/local/lib/blogi/dbpp/sqlite.so

COPY --from=build /usr/local/lib/blogi/plugins /usr/local/lib/blogi/plugins


CMD ["sh","/usr/local/sbin/run.sh"]
