FROM archlinux:base-devel AS build
ARG BT_APP
ARG BT_DEPENDS
RUN pacman -Syu --noconfirm
RUN pacman -S --noconfirm rustup clang $BT_DEPENDS
RUN rustup toolchain install nightly
RUN rustup default nightly
RUN mkdir -p src/crates
COPY ./crates /src/crates
COPY Cargo.toml /src/
COPY Cargo.lock /src/
WORKDIR /src
RUN cargo fetch --target x86_64-unknown-linux-gnu
WORKDIR /src/crates/$BT_APP
RUN cargo build --release

FROM archlinux:base AS release
ARG BT_APP
ARG BT_DEPENDS
ENV BT_APP=$BT_APP
RUN pacman -Syu --noconfirm\
    && pacman -S --noconfirm $BT_DEPENDS\
    && pacman -Scc --noconfirm\
    && useradd $BT_APP \
    && mkdir -p /app/state\
    && chown $BT_APP:$BT_APP /app/state
COPY --from=build /src/target/release/$BT_APP /app/app.bin
USER $BT_APP
WORKDIR /app
ENTRYPOINT ["./app.bin"]