#!/usr/bin/env bash
##makedesc: Install postman (latest)

set -eo pipefail

installed() { command -v "$1" >/dev/null 2>&1; }

download() {
    if installed wget; then
        wget -q --show-progress "$1" -O "$2"
    else
        curl -fsSL "$1" -o "$2"
    fi
}

unpack_targz() {
    tar -xzvf "$1" -C "$2"
}

install() {
    if [ "$(uname -s)" = "Darwin" ]; then
        if installed brew; then
            brew install --cask postman
        else
            echo "ERROR: Install Homebrew first." >&2
            exit 1
        fi
        return
    fi

    echo
    echo "==============================================="
    echo "Installing postman"
    echo "==============================================="
    echo

    # https://learning.postman.com/docs/getting-started/installation-and-updates/#installing-postman-on-linux

    mkdir -p "$HOME/install" "$HOME/.local/bin" "$HOME/.local/share/applications"

    download "https://dl.pstmn.io/download/latest/linux64" "$HOME/install/postman.tar.gz"
    unpack_targz "$HOME/install/postman.tar.gz" "$HOME/install"
    ln -sf "$HOME/install/Postman/Postman" "$HOME/.local/bin/postman"

    cat << EOF > "$HOME/.local/share/applications/Postman.desktop"
[Desktop Entry]
Name=Postman
Exec=$HOME/.local/bin/postman %U
Icon=$HOME/install/Postman/app/resources/app/assets/icon.png
Categories=Development,Network
Terminal=false
Type=Application
Encoding=UTF-8
EOF

    if command -v update-desktop-database >/dev/null 2>&1; then
        sudo update-desktop-database
    fi

    echo
    echo "Finish!"
    echo
}

case "$1" in
    *) install ;;
esac
