# A dev container.

FROM alpine:3.22

RUN apk add build-base git go sqlite vim shellcheck curl jq sudo bash docker

# Busybox `less` doesn't appear to support colors (makes git diff lose color)
RUN apk add less

RUN curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b /usr/local/bin v2.0.2
RUN GOBIN=/usr/local/bin go install git.offline-twitter.com/offline-labs/gocheckout@v0.0.2

COPY etc/group /etc/group

# Create a user in the container with the same UID as on the host machine, to avoid ownership conflicts.
# The user gets sudo of course.
#
# If the host user is `root` (uid = 0), we skip creating a new user, because it will fail otherwise.
ARG USERNAME
ARG UID
ARG GID
RUN if [ "${UID}" -ne 0 ]; then \
    addgroup -g "${GID}" "${USERNAME}" && \
    adduser -D -u "${UID}" -G "${USERNAME}" "${USERNAME}" && \
    echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/"${USERNAME}"; \
    fi
USER ${USERNAME}
