# hadolint global ignore=DL4001
# hadolint ignore=DL3007
FROM registry.shore.co.il/toolbx:latest as temp
RUN curl https://github.com/duckdb/duckdb/releases/download/v1.0.0/duckdb_cli-linux-amd64.zip --output /tmp/duckdb.zip && \
    unzip /tmp/duckdb.zip duckdb -d /tmp/ && \
    install -m 755 -o root -g root /tmp/duckdb /usr/local/bin/duckdb


# hadolint ignore=DL3007
FROM registry.shore.co.il/toolbx:latest
COPY --from=temp /usr/local/bin/duckdb /usr/local/bin/
SHELL ["/bin/bash", "-o", "pipefail", "-xc"]
ENV PATH /opt/pipx/bin:/usr/local/lib/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# hadolint ignore=DL3008
RUN apt-get update && \
    curl "https://github.com/kubernetes/kompose/releases/download/v1.26.1/kompose_1.26.1_$(dpkg --print-architecture).deb" --output /tmp/kompose.deb && \
    curl https://s3.amazonaws.com/session-manager-downloads/plugin/latest/ubuntu_64bit/session-manager-plugin.deb --output /tmp/session-manager-plugin.deb && \
    DEBIAN_FRONTEND=noninteractive apt-get install --yes --no-install-recommends \
        /tmp/kompose.deb \
        /tmp/session-manager-plugin.deb \
        adb \
        apache2-utils \
        aspell-he \
        at \
        aws-vault \
        bash-completion \
        bats \
        bc \
        build-essential \
        bundler \
        bzr \
        ca-certificates \
        clickhouse-client \
        cmake \
        colorized-logs \
        composer \
        consul=1.16.4-1 \
        curl \
        dbus-x11 \
        default-jdk-headless \
        devscripts \
        direnv \
        dirmngr \
        dnsutils \
        docker-buildx-plugin \
        docker-cli \
        dos2unix \
        easy-rsa \
        entr \
        expect \
        flatpak \
        flatpak-builder \
        flatpak-xdg-utils \
        fuse3 \
        gdal-bin \
        gettext-base \
        gh \
        gir1.2-glib-2.0 \
        gir1.2-ostree-1.0 \
        git \
        gnupg \
        go-md2man \
        gobjc++ \
        golang \
        gomplate \
        google-cloud-cli-skaffold \
        google-cloud-sdk \
        gpgv \
        helm \
        hugo \
        hunspell \
        hunspell-he \
        hyphen-en-us \
        ipcalc \
        iproute2 \
        iputils-ping \
        iputils-tracepath \
        jp \
        jq \
        keyutils \
        kops \
        krb5-config \
        kubectl \
        ldap-utils \
        less \
        libbz2-dev \
        libcairo2-dev \
        libcap2-bin \
        libdbus-1-dev \
        libgirepository1.0-dev \
        liblcms2-dev \
        libldap2-dev \
        liblzma-dev \
        libmariadb-dev \
        libncursesw5-dev \
        libnotify-bin \
        libpq-dev \
        libproj-dev \
        libprotobuf-dev \
        libreadline-dev \
        libsasl2-dev \
        libsecret-tools \
        libsqlite3-dev \
        libwebp-dev \
        libxml2-dev \
        libxmlsec1-dev \
        libyaml-dev \
        llvm \
        lsof \
        lz4 \
        man-db \
        mariadb-client \
        mat2 \
        mercurial \
        meson \
        minikube \
        mongodb-database-tools \
        mythes-en-us \
        netcat-openbsd \
        nodejs \
        npm \
        ostree \
        packer=1.9.5-1 \
        php-cli \
        pigz \
        plocate \
        podman-remote \
        postgresql-client \
        protobuf-compiler \
        python3-dev \
        python3-pip \
        python3-venv \
        rclone \
        redis-tools \
        rename \
        reprepro \
        rsync \
        ruby-dev \
        sharutils \
        shellcheck \
        signify-openbsd \
        skopeo \
        sops \
        subversion \
        sudo \
        swaks \
        systemd \
        task-english \
        task-hebrew \
        task-ssh-server \
        telnet \
        terraform=1.5.7-1 \
        time \
        tk-dev \
        tmux \
        tnftp \
        tofu \
        transmission-cli \
        tree \
        ttyrec \
        udftools \
        unrar-free \
        unzip \
        vagrant=2.3.7-1 \
        vault=1.14.8-1 \
        vcdimager \
        vim-nox \
        w3m-img \
        wget \
        whois \
        xauth \
        xdg-user-dirs \
        zip \
    && \
    rm /etc/ssh/ssh_host_* && \
    rm -rf /tmp/* /var/tmp/* /var/lib/apt/lists/* /var/cache/apt/archives/*
ENV PIPX_HOME /opt/pipx
ENV PIPX_BIN_DIR /opt/pipx/bin
# hadolint ignore=DL3013
RUN export PIP_CONSTRAINT=/tmp/constraint.txt && \
    python3 -m pip freeze | grep packaging >> "$PIP_CONSTRAINT" && \
    echo 'ruamel.yaml.clib>=0.2.12' >> "$PIP_CONSTRAINT" && \
    python3 -m pip install --no-cache-dir --break-system-packages \
        Glances \
        PyGObject \
        PyMySQL \
        'ansible>=10' \
        ansible-runner \
        awslogs \
        bcrypt \
        black \
        boto \
        boto3 \
        bump2version \
        check-manifest \
        colorama \
        cookiecutter \
        cryptography \
        dnspython \
        docker \
        fabric \
        flit \
        github3.py \
        gunicorn \
        hashin \
        httpbin \
        httpie \
        identify \
        importlab \
        invoke \
        iredis \
        khal \
        khard \
        litecli \
        magic-wormhole \
        mycli \
        netaddr \
        opensearch-py[async] \
        paramiko \
        parse \
        passhole \
        passlib \
        pgcli \
        pip-tools \
        pipenv \
        pipx \
        poetry \
        pre-commit \
        protobuf \
        psycopg2 \
        pur \
        pygments \
        pymongo \
        pyopenssl \
        'python-gitlab[autocompletion,yaml]' \
        python-hcl2 \
        pyxdg \
        redis \
        remarshal \
        requests \
        rich-cli \
        sdbus-notifications \
        sh \
        sqlite-utils \
        template \
        terraformation \
        todoman \
        tox \
        transmission-rpc \
        ziglang \
    && \
    pipx install chalice && \
    pipx install curator-opensearch && \
    pipx install https://github.com/aws/aws-cli/archive/refs/heads/v2.zip && \
    rm -rf /tmp/* /var/tmp/* ~/.cache/*
ENV COREPACK_HOME=/usr/local/share/corepack
# hadolint ignore=DL3016
RUN npm install --global \
        @bitwarden/cli \
        @devcontainers/cli \
        @playwright/test \
        corepack \
    && \
    chown -R root:root /usr/local/lib/node_modules/@bitwarden/cli/node_modules/ && \
    corepack install --global yarn@1 && \
    rm -rf /tmp/* /var/tmp/* ~/.cache/*
RUN export GOPATH=/usr/local/lib/go && \
    mkdir "$GOPATH" && \
    export GO111MODULE=on && \
    go install github.com/1player/host-spawn@latest && \
    go install github.com/aquaproj/aqua/v2/cmd/aqua@latest && \
    go install github.com/giantswarm/semver-bump@latest && \
    go install github.com/hashicorp/envconsul@latest && \
    go install github.com/kaorimatz/mysqldump-loader@v0.4.1 && \
    go install github.com/kvz/json2hcl@latest && \
    go install github.com/loft-sh/devpod@latest && \
    go install github.com/lucagrulla/cw@latest && \
    go install github.com/nektos/act@latest && \
    go install github.com/nishanths/license/v5@latest && \
    go install github.com/rhysd/actionlint/cmd/actionlint@latest && \
    go install github.com/spelufo/on-change@latest && \
    go install golang.org/x/tools/cmd/gonew@latest && \
    go install sigs.k8s.io/kustomize/kustomize/v5@latest && \
    rm -rf /tmp/* /var/tmp/* ~/.cache/*
# hadolint ignore=SC2263
RUN install -m 0755 <(curl https://raw.githubusercontent.com/rabbitmq/rabbitmq-server/v3.12.6/deps/rabbitmq_management/bin/rabbitmqadmin) /usr/local/bin/rabbitmqadmin && \
    install -m 0755 <(curl "https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-linux-$(uname -m)") /usr/local/bin/docker-compose && \
    install -m 0755 <(curl "https://github.com/genuinetools/reg/releases/download/v0.16.1/reg-$(go env GOOS)-$(go env GOARCH)") /usr/local/bin/reg && \
    install -m 0755 <(curl "https://github.com/rancher/rke/releases/download/v1.4.10/rke_$(go env GOOS)-$(go env GOARCH)") /usr/local/bin/rke && \
    install -m 0755 <(curl "https://pkgx.sh/Linux/$(uname -m)") /usr/local/bin/pkgx && \
    mkdir /usr/local/share/bfg && \
    install <(curl 'https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar') /usr/local/share/bfg/bfg.jar && \
    curl https://github.com/SelfAdjointOperator/better-adb-sync/archive/refs/heads/master.tar.gz | tar -zxC /opt/ && \
    ln --symbolic /opt/better-adb-sync-master/src/adbsync.py /usr/local/bin/adbsync && \
    curl https://github.com/asdf-vm/asdf/archive/refs/heads/master.tar.gz | tar -zxC /opt/ && \
    ln --symbolic --target /etc/profile.d/ /opt/asdf-master/asdf.sh && \
    echo "export PATH=$PIPX_BIN_DIR:/usr/local/lib/go/bin:\$PATH" > /etc/profile.d/workbench.sh && \
    rm -rf /tmp/* /var/tmp/* ~/.cache/*
RUN _PIPENV_COMPLETE=bash_source pipenv > /etc/bash_completion.d/pipenv && \
    rabbitmqadmin --bash-completion  > /etc/bash_completion.d/rabbitmqadmin && \
    poetry completions bash > /etc/bash_completion.d/poetry && \
    register-python-argcomplete gitlab > /etc/bash_completion.d/gitlab && \
    register-python-argcomplete pipx -s bash > /etc/bash_completion.d/pipx && \
    invoke --print-completion-script bash > /etc/bash_completion.d/invoke && \
    fab --print-completion-script bash > /etc/bash_completion.d/fabric && \
    helm completion bash > /etc/bash_completion.d/helm && \
    semver-bump completion bash > /etc/bash_completion.d/semver-bump && \
    kompose completion bash > /etc/bash_completion.d/kompose && \
    skaffold completion bash > /etc/bash_completion.d/skaffold && \
    kustomize completion bash > /etc/bash_completion.d/kustomize && \
    devpod completion bash > /etc/bash_completion.d/devpod && \
    wget https://raw.githubusercontent.com/docker/compose/1.29.2/contrib/completion/bash/docker-compose -qO /etc/bash_completion.d/docker-compose && \
    wget https://raw.githubusercontent.com/ansible-community/molecule/1.25.1/asset/bash_completion/molecule.bash-completion.sh -qO /etc/bash_completion.d/molecule && \
    wget https://github.com/mrolli/packer-bash-completion/raw/master/packer -qO /etc/bash_completion.d/packer && \
    wget https://raw.githubusercontent.com/dsifford/yarn-completion/v0.17.0/yarn-completion.bash -qO /etc/bash_completion.d/yarn && \
    wget https://github.com/containers/podman/raw/main/completions/bash/podman -qO /etc/bash_completion.d/podman && \
    #wget https://raw.githubusercontent.com/ziglang/shell-completions/master/_zig -qO /etc/bash_completion.d/zig && \
    ln --symbolic /opt/asdf-master/completions/asdf.bash /etc/bash_completion.d/asdf && \
    rm -rf /tmp/* /var/tmp/* ~/.cache/*
RUN mkdir -p /usr/local/share/ca-certificates && \
    wget https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem  -qO - | \
        awk '/-----BEGIN[A-Z0-9 ]*CERTIFICATE-----/ {n++} n > 0 {print > ("/usr/local/share/ca-certificates/rds-" (1+n) ".crt")}' && \
    update-ca-certificates && \
    # pragma: allowlist nextline secret
    rm -rf /tmp/* /var/tmp/* ~/.cache/*
COPY --chown=root:root bash_completion.d/* /etc/bash_completion.d/
COPY --chown=root:root bin/* /usr/local/bin/
ENV ASDF_DIR /opt/asdf-master
VOLUME /run/sshd
CMD ["/bin/bash"]