case $1 in
    -p | --prod | --production)
        echo Which Docker version should be installed?

        select version in $(curl -Ls https://download.docker.com/linux/static/stable/x86_64 | rg -o 'docker-\d+\.\d+\.\d+.tgz' | rg -o '\d+\.\d+\.\d+' | uniq | sort -rV); do
            case $REPLY in
                1 | 2 | 3 | 4 | 5 | 6)
                    echo Because of OCI runtime error unusable!
                    exit 1
                    ;;
                esac

                echo "Installing version: $version"
            break
        done

        curl -sLO https://download.docker.com/linux/static/stable/x86_64/docker-$version.tgz

        gunzip docker-$version.tgz
        tar xvf docker-$version.tar | sed 's|docker/||g' | tee log.txt

        rm docker-$version.tar

        mv docker/* /bin
        rm -r docker

        msd -r -n docker
        msd -r -n containerd
    ;;

    -d | --dev | --developement)
        # Docker (CLI)
        mkdir -p /root/.go/src/github.com/docker/cli
        cd /root/.go/src/github.com/docker/cli

        git init
        git pull https://github.com/docker/cli
    
        DISABLE_WARN_OUTSIDE_CONTAINER=1 make

        mv build/docker-linux-amd64 /bin/docker

        rm -r /root/.go/src

        # Docker Daemon
        mkdir /home/docker
        cd /home/docker

        git init
        git pull https://github.com/moby/moby.git

        go build -C cmd/dockerd -o /bin/dockerd
        go build -C cmd/docker-proxy -o /bin/docker-proxy

        rm -r /home/docker

        # Containerd
        mkdir /home/containerd
        cd /home/containerd

        git init
        git pull https://github.com/containerd/containerd.git

        make

        mv bin/* /bin

        rm -r /home/containerd

        # Libpathrs (dependency)
        mkdir /home/pathrs
        cd /home/pathrs

        git init
        git pull https://github.com/cyphar/libpathrs

        make install

        rm -r /home/pathrs

        # Runc
        mkdir /home/runc
        cd /home/runc

        git init
        git pull https://github.com/opencontainers/runc.git

        make

        mv runc /bin/runc

        rm -r /home/runc

        # Tini (Docker Init)
        mkdir /home/tini
        cd /home/tini

        git init
        git pull https://github.com/krallin/tini.git

        cmake .
        make preinstall

        mv tini /bin/docker-init

        rm -r /home/tini

        # BuildX
        mkdir /home/buildx
        cd /home/buildx

        git init
        git pull https://github.com/docker/buildx

        go build -C cmd/buildx -o /bin/buildx

        rm -r /home/buildx

        # Compose
        mkdir /home/compose
        cd /home/compose

        git init
        git pull https://github.com/docker/compose

        echo "Do you want install Docker compose as pülugin or standalone?"
        select type in plugin native; do
            case $REPLY in
                1)
                    DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
                    mkdir -p $DOCKER_CONFIG/cli-plugins

                    path=$DOCKER_CONFIG/cli-plugins/docker-compose
                ;;

                2)
                    path=/bin/compose
                ;;
            esac

            break
        done

        go build -C cmd -o $path

        rm -r /home/compose

        # Starting
        msd -c -n docker -e dockerd
        msd -c -n containerd -e containerd
    ;;
esac