diff --git a/Dockerfile b/Dockerfile index 26cd7c8..98ad649 100644 --- a/Dockerfile +++ b/Dockerfile @@ -5,15 +5,5 @@ RUN apt-get update && apt-get install -y \ unzip \ zip \ && rm -rf /var/lib/apt/lists/* -RUN curl -fsSL -o /tmp/warp-packer \ - https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/linux-aarch64.warp-packer \ - && install -D \ - --mode=755 \ - --owner=root \ - --group=root \ - /tmp/warp-packer \ - /usr/local/bin \ - && rm /tmp/warp-packer -WORKDIR /workdir -COPY warp4j /usr/local/bin/ +RUN curl -s https://git.phoenix.ipv64.de/public/warp4j/raw/branch/feature/update_install_script/install | /bin/sh -s ENTRYPOINT [ "/usr/local/bin/warp4j" ] diff --git a/install b/install index 355a0a5..8a7695b 100755 --- a/install +++ b/install @@ -6,19 +6,25 @@ LOCATION=/usr/local/bin # exit top level program from subshell trap "exit 1" TERM export TOP_PID=$$ -function fail() { +fail() { kill -s TERM $TOP_PID } # platform IDs LIN=linux -LIN_URL=https://git.phoenix.ipv64.de/attachments/f701fbff-c58b-4aac-91e3-47efda1fc760 MAC=macos -MAC_URL=https://git.phoenix.ipv64.de/attachments/b09c6469-406a-4dd1-b5e8-1294a3aabf0f WIN=windows +# Urls +LIN_X64_URL=https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/linux-x64.warp-packer +LIN_AARCH64_URL=https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/linux-aarch64.warp-packer +MAC_URL=https://git.phoenix.ipv64.de/public/warp/releases/download/1.0.0/macos-x64.warp-packer + +# platform architecture +X64=x64 +AARCH64=aarch64 # returns this platform ID -function get_this_platform() { +get_this_platform() { local this_platform="$(uname -s)" case $this_platform in Linux*) echo $LIN ;; @@ -30,81 +36,111 @@ function get_this_platform() { esac } +# returns this platform architecture +get_this_architecture() { + local this_machine="$(uname -m)" + case $this_machine in + x86_64) echo $X64 ;; + aarch64) echo $AARCH64 ;; + *) + fail_with "Unsupported machine $this_machine" + ;; + esac +} + # actually sets this platform THIS_PLATFORM=$(get_this_platform) +# actually sets this architecture +THIS_ARCHITECTURE=$(get_this_architecture) + # fetches latest release download link for the platform -function get_warp_link() { +get_warp_link() { local this_platform=$1 + local this_architecture=$2 if [ "$this_platform" = "$LIN" ]; then - echo "$LIN_URL" - else - echo "$MAC_URL" - fi + echo "$LIN_URL" + if [ "$this_architecture" = "$X64" ]; then + echo "$LIN_X64_URL" + else + echo "$LIN_AARCH64_URL" + fi + else + echo "$MAC_URL" + fi } # downloads and installs single binary -function install() { +install() { local name=$1 local link=$2 local temp_location="/tmp/$name" echo "Downloading $name..." - curl -fsSL -o "$temp_location" "$link" - if [[ $? != 0 ]]; then + curl -fsSL -o $temp_location $link + if [ $? != 0 ]; then echo "Error: Failed to download $name" >&2 fail fi echo "Creating $LOCATION/$name..." - sudo install -D \ + su -c "install -D \ --mode=755 \ --owner=root \ --group=root \ - "$temp_location" "$LOCATION" - if [[ $? != 0 ]]; then + '$temp_location' '$LOCATION'" + if [ $? != 0 ]; then echo "Error: Failed to install $name" >&2 fail fi + rm $temp_location } # returns missing dependencies -function get_missing_deps() { - local deps=( - "awk" \ - "curl" \ - "file" \ - "grep" \ - "sed" \ - "sort" \ - "tar" \ - "unzip" \ - "zip" \ - ) - for d in ${deps[@]}; do - if ! command -v $d &> /dev/null ; then - echo -n "$d " - fi - done +get_missing_deps() { + if ! command -v awk > /dev/null 2<&1; then + echo -n "awk " + fi + if ! command -v curl > /dev/null 2<&1; then + echo -n "curl " + fi + if ! command -v file > /dev/null 2<&1; then + echo -n "file " + fi + if ! command -v grep > /dev/null 2<&1; then + echo -n "grep " + fi + if ! command -v sed > /dev/null 2<&1; then + echo -n "sed " + fi + if ! command -v sort > /dev/null 2<&1; then + echo -n "sort " + fi + if ! command -v tar > /dev/null 2<&1; then + echo -n "tar " + fi + if ! command -v unzip > /dev/null 2<&1; then + echo -n "unzip " + fi + if ! command -v zip > /dev/null 2<&1; then + echo -n "zip" + fi } -WARP4J_LINK="https://git.phoenix.ipv64.de/public/warp4j/raw/branch/master/warp4j" +WARP4J_LINK="https://git.phoenix.ipv64.de/public/warp4j/raw/branch/develop/warp4j" echo "Getting information about warp-packer releases..." -WARP_LINK=$(get_warp_link $THIS_PLATFORM) +WARP_LINK=$(get_warp_link $THIS_PLATFORM $THIS_ARCHITECTURE) MISSING_DEPS=$(get_missing_deps) install "warp-packer" "$WARP_LINK" && \ install "warp4j" "$WARP4J_LINK" -if [[ -z $MISSING_DEPS ]]; then +if [ -z "$MISSING_DEPS" ]; then echo "Successfully installed" else echo "Main tools successfully installed" echo "Please install following with your package manager:" - for d in ${MISSING_DEPS[@]}; do - echo -n "$d " - done - echo + echo $MISSING_DEPS exit 1 fi