|
#!/bin/sh |
|
|
|
ls Postman*.tar.gz > /dev/null 2>&1 |
|
if [ $? -eq 0 ]; then |
|
echo "Removing old Postman tarballs" |
|
rm -f $(ls Postman*.tar.gz) |
|
fi |
|
|
|
curlExists=$(command -v curl) |
|
|
|
echo "Testing Postman version" |
|
|
|
targetName="" |
|
if [ -z $curlExists ]; then |
|
targetName=$(wget -S --spider "https://dl.pstmn.io/download/latest/linux64" 2>&1 | grep "Content-Disposition" | awk -F '=' '{ print $2 }') |
|
else |
|
targetName=$(curl -sI "https://dl.pstmn.io/download/latest/linux64" | grep "content-disposition" | awk -F '=' '{ print $2 }') |
|
fi |
|
|
|
versionMaj=$(echo "$targetName" | awk -F '-' '{ print $4 }' | awk -F '.' '{ print $1 }') |
|
versionMin=$(echo "$targetName" | awk -F '-' '{ print $4 }' | awk -F '.' '{ print $2 }') |
|
versionRev=$(echo "$targetName" | awk -F '-' '{ print $4 }' | awk -F '.' '{ print $3 }') |
|
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 |
|
|
|
echo "Downloading latest Postman tarball" |
|
|
|
if [ -z $curlExists ]; then |
|
wget -q --show-progress "https://dl.pstmn.io/download/latest/linux64" --content-disposition |
|
else |
|
curl -# "https://dl.pstmn.io/download/latest/linux64" -O -J |
|
fi |
|
|
|
if [ $? -gt 0 ]; then |
|
echo "Failed to download Postman tarball" |
|
exit |
|
fi |
|
|
|
if [ -d "Postman" ]; then |
|
echo "Removing old 'Postman/'" |
|
rm -rf "Postman/" |
|
fi |
|
|
|
echo "Extracting Postman tarball" |
|
tar -xf $(ls Postman*.tar.gz) |
|
|
|
if [ $? -gt 0 ]; then |
|
echo "Failed to extract Postman tarball" |
|
exit |
|
fi |
|
|
|
if [ -d "postman_$version" ]; then |
|
echo "Removing old 'postman_$version/'" |
|
rm -rf "postman_$version/" |
|
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: amd64\nDepends: gconf2, libgtk2.0-0, desktop-file-utils\nOptional: libcanberra-gtk-module\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 |
|
|
|
if [ -f "postman_$version.deb" ]; then |
|
echo "Removing old 'postman_$version.deb'" |
|
rm -f "postman_$version.deb" |
|
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 |
|
|
|
echo "Cleaning up" |
|
rm -f $(ls Postman*.tar.gz) |
|
rm -rf "Postman/" |
|
rm -rf "postman_$version/" |
|
|
|
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" |