| 
          #!/bin/sh | 
        
        
           | 
          
 | 
        
        
           | 
          # SPDX-FileCopyrightText: 2017-2024 SanderTheDragon <[email protected]> | 
        
        
           | 
          # | 
        
        
           | 
          # SPDX-License-Identifier: MIT | 
        
        
           | 
          
 | 
        
        
           | 
          arch=$(dpkg --print-architecture) | 
        
        
           | 
          echo "Detected architecture: $arch" | 
        
        
           | 
          
 | 
        
        
           | 
          case "$arch" in | 
        
        
           | 
          	amd64) downloadURL="https://dl.pstmn.io/download/latest/linux64";; | 
        
        
           | 
          	arm64) downloadURL="https://dl.pstmn.io/download/latest/linux_arm64";; | 
        
        
           | 
          
 | 
        
        
           | 
          	*) | 
        
        
           | 
          		echo "Unsupported architecture: $arch" | 
        
        
           | 
          		exit | 
        
        
           | 
          		;; | 
        
        
           | 
          esac | 
        
        
           | 
          
 | 
        
        
           | 
          curlExists=$(command -v curl) | 
        
        
           | 
          echo "Testing Postman version" | 
        
        
           | 
          
 | 
        
        
           | 
          dateString="" | 
        
        
           | 
          if [ -z $curlExists ]; then | 
        
        
           | 
          	dateString=$(wget -S --spider $downloadURL 2>&1 | grep "Date" | awk -F ':' '{ print $2 }') | 
        
        
           | 
          else | 
        
        
           | 
          	dateString=$(curl -sI $downloadURL 2>&1 | grep "date" | awk -F ':' '{ print $2 }') | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          targetName="postman-$(date --date="$dateString" "+%y-%j-%H").tar.gz" | 
        
        
           | 
          versionMaj=$(echo "$targetName" | awk -F '.' '{ print $1 }' | awk -F '-' '{ print $2 }') | 
        
        
           | 
          versionMin=$(echo "$targetName" | awk -F '.' '{ print $1 }' | awk -F '-' '{ print $3 }') | 
        
        
           | 
          versionRev=$(echo "$targetName" | awk -F '.' '{ print $1 }' | awk -F '-' '{ print $4 }') | 
        
        
           | 
          version="$versionMaj.$versionMin-$versionRev" | 
        
        
           | 
          echo "Most recent Postman version V$version" | 
        
        
           | 
          
 | 
        
        
           | 
          current=$(dpkg-query --showformat='${Version}' --show postman 2> /dev/null) | 
        
        
           | 
          if [ $? -gt 0 ]; then | 
        
        
           | 
          	echo "Postman is not installed" | 
        
        
           | 
          else | 
        
        
           | 
          	echo "Installed version V$current" | 
        
        
           | 
          
 | 
        
        
           | 
          	if [ "$current" = "$version" ]; then | 
        
        
           | 
          		echo "The most recent version of Postman is currently installed" | 
        
        
           | 
          		exit | 
        
        
           | 
          	else | 
        
        
           | 
          		echo "Updating Postman to the latest version" | 
        
        
           | 
          	fi | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          originalPWD="$(pwd)" | 
        
        
           | 
          targetPWD="$(mktemp -d postman.XXXXXX)" | 
        
        
           | 
          cd "$targetPWD" | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Downloading latest Postman tarball" | 
        
        
           | 
          
 | 
        
        
           | 
          if [ -z $curlExists ]; then | 
        
        
           | 
          	wget -q --show-progress $downloadURL -O $targetName | 
        
        
           | 
          else | 
        
        
           | 
          	curl -# $downloadURL -o $targetName | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          if [ $? -gt 0 ]; then | 
        
        
           | 
          	echo "Failed to download Postman tarball" | 
        
        
           | 
          	exit | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Extracting Postman tarball" | 
        
        
           | 
          tar -xf $targetName | 
        
        
           | 
          
 | 
        
        
           | 
          if [ $? -gt 0 ]; then | 
        
        
           | 
          	echo "Failed to extract Postman tarball" | 
        
        
           | 
          	exit | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Creating 'postman_$version' folder structure and files" | 
        
        
           | 
          mkdir -m 0755 -p "postman_$version" | 
        
        
           | 
          
 | 
        
        
           | 
          mkdir -m 0755 -p "postman_$version/usr/share/applications" | 
        
        
           | 
          touch "postman_$version/usr/share/applications/Postman.desktop" | 
        
        
           | 
          
 | 
        
        
           | 
          mkdir -m 0755 -p "postman_$version/usr/share/icons/hicolor/128x128/apps" | 
        
        
           | 
          
 | 
        
        
           | 
          mkdir -m 0755 -p "postman_$version/opt/postman" | 
        
        
           | 
          
 | 
        
        
           | 
          mkdir -m 0755 -p "postman_$version/DEBIAN" | 
        
        
           | 
          touch "postman_$version/DEBIAN/control" "postman_$version/DEBIAN/postinst" "postman_$version/DEBIAN/prerm" | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Copying files" | 
        
        
           | 
          cp "Postman/app/resources/app/assets/icon.png" "postman_$version/usr/share/icons/hicolor/128x128/apps/postman.png" | 
        
        
           | 
          cp -R "Postman/"* "postman_$version/opt/postman/" | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Testing whether to use '-e'" | 
        
        
           | 
          lines=$(echo "\n" | wc -l) | 
        
        
           | 
          e="" | 
        
        
           | 
          if [ $lines -eq 1 ]; then | 
        
        
           | 
          	echo "'-e' is required" | 
        
        
           | 
          	e="-e" | 
        
        
           | 
          else | 
        
        
           | 
          	echo "'-e' is not required" | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Writing files" | 
        
        
           | 
          echo $e "[Desktop Entry]\nType=Application\nName=Postman\nGenericName=Postman API Tester\nIcon=postman\nExec=postman\nPath=/opt/postman\nCategories=Development;" > "postman_$version/opt/postman/Postman.desktop" | 
        
        
           | 
          echo $e "Package: postman\nVersion: $version\nSection: devel\nPriority: optional\nArchitecture: $arch\nDepends: libgtk-3-0, desktop-file-utils\nMaintainer: You\nDescription: Postman\n API something" > "postman_$version/DEBIAN/control" | 
        
        
           | 
          echo $e "if [ -f \"/usr/bin/postman\" ]; then\n\tsudo rm -f \"/usr/bin/postman\"\nfi\n\nsudo ln -s \"/opt/postman/Postman\" \"/usr/bin/postman\"\n\ndesktop-file-install \"/opt/postman/Postman.desktop\"" > "postman_$version/DEBIAN/postinst" | 
        
        
           | 
          echo $e "if [ -f \"/usr/bin/postman\" ]; then\n\tsudo rm -f \"/usr/bin/postman\"\nfi" > "postman_$version/DEBIAN/prerm" | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Setting modes" | 
        
        
           | 
          
 | 
        
        
           | 
          chmod 0775 "postman_$version/usr/share/applications/Postman.desktop" | 
        
        
           | 
          
 | 
        
        
           | 
          chmod 0775 "postman_$version/DEBIAN/control" | 
        
        
           | 
          chmod 0775 "postman_$version/DEBIAN/postinst" | 
        
        
           | 
          chmod 0775 "postman_$version/DEBIAN/prerm" | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Validating modes" | 
        
        
           | 
          nc="" | 
        
        
           | 
          if [ $(stat -c "%a" "postman_$version/DEBIAN/control") != "775" ]; then | 
        
        
           | 
          	echo "File modes are invalid, calling 'dpkg-deb' with '--nocheck'" | 
        
        
           | 
          	nc="--nocheck" | 
        
        
           | 
          else | 
        
        
           | 
          	echo "File modes are valid" | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Building 'postman_$version.deb'" | 
        
        
           | 
          dpkg-deb $nc -b "postman_$version" > /dev/null | 
        
        
           | 
          
 | 
        
        
           | 
          if [ $? -gt 0 ]; then | 
        
        
           | 
          	echo "Failed to build 'postman_$version.deb'" | 
        
        
           | 
          	exit | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          mv "postman_$version.deb" "$originalPWD" | 
        
        
           | 
          cd "$originalPWD" | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Cleaning up" | 
        
        
           | 
          rm -rf "$targetPWD" | 
        
        
           | 
          
 | 
        
        
           | 
          while true; do | 
        
        
           | 
          	read -p "Do you want to install 'postman_$version.deb' [Y/n] " yn | 
        
        
           | 
          
 | 
        
        
           | 
          	if [ -z $yn ]; then | 
        
        
           | 
          		yn="y" | 
        
        
           | 
          	fi | 
        
        
           | 
          
 | 
        
        
           | 
          	case $yn in | 
        
        
           | 
          		[Yy]* ) break;; | 
        
        
           | 
          		[Nn]* ) exit;; | 
        
        
           | 
          	esac | 
        
        
           | 
          done | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Installing" | 
        
        
           | 
          sudo apt install -y "./postman_$version.deb" | 
        
        
           | 
          
 | 
        
        
           | 
          if [ $? -gt 0 ]; then | 
        
        
           | 
          	echo "Failed to install 'postman_$version.deb'" | 
        
        
           | 
          	exit | 
        
        
           | 
          fi | 
        
        
           | 
          
 | 
        
        
           | 
          echo "Removing 'postman_$version.deb'" | 
        
        
           | 
          rm -f "postman_$version.deb" | 
        
  
Thanks