diff options
-rwxr-xr-x | compare_versions.sh | 37 | ||||
-rwxr-xr-x | fetch_info.sh | 105 | ||||
-rwxr-xr-x | ungoogled-chromium-update.sh | 91 | ||||
-rwxr-xr-x | update_ungoogled_chromium-portable_linux_64.sh | 59 |
4 files changed, 201 insertions, 91 deletions
diff --git a/compare_versions.sh b/compare_versions.sh new file mode 100755 index 0000000..b205a66 --- /dev/null +++ b/compare_versions.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +# Bash script to compare ungoogled-chromium version numbers +# $1 -> up-to-date version number (from atom feed) +# $2 -> currently installed version number +# Return Values: + # 0 -> installed version is up-to-date + # 1 -> installed version can be upgraded + + +# Break into arrays +IFS='.' +read -ra V1 <<< "$1" +read -ra V2 <<< "$2" + +# DEBUG +for val in "${V1[@]}"; do + echo "$val" +done +echo ${#V1[@]} +for val in "${V2[@]}"; do + echo "$val" +done +echo ${#V2[@]} + +# Determine shorter array (for the loop) +LENGTH=${#V1[@]} + +for (( i = 0 ; i < LENGTH ; i++ )); do + if [ "${V1[$i]}" -gt "${V2[$i]}" ]; then + exit 1 + elif [ "${V1[$i]}" -lt "${V2[$i]}" ]; then + exit 0 + fi +done + +exit 0 diff --git a/fetch_info.sh b/fetch_info.sh new file mode 100755 index 0000000..601f394 --- /dev/null +++ b/fetch_info.sh @@ -0,0 +1,105 @@ +#!/bin/bash + +# Bash script to query for information about latest version of ungoogled-chromium (for specific version) +# $1 -> platform name +# Return Values: + # 0 -> error + # 1 -> success + +# URL for atom feed +ATOM_URL="https://raw.githubusercontent.com/ungoogled-software/ungoogled-chromium-binaries/master/feed.xml" + +PARSED_XML=$(curl -s $ATOM_URL | xml2) + +# Get table of available platforms, with versions, and URLs on the following line +PLATFORM_TABLE=$(echo "$PARSED_XML" | grep -E '(/feed/entry/title=)|(/feed/entry/link/@href=)' | sed 's/^.*=//g') + +# echo "$PLATFORM_TABLE" + + +# Set DEFAULT_PLATFORM +if [ -n "$1" ]; then + PLATFORM="$1" +else + echo "Error: $0 missing argument" + exit 0 +fi + +# grep for PLATFORM in PLATFORM_TABLE, pull out two lines, starting from matching LINE_NUMBER +LINE_NUMBER=$(echo "$PLATFORM_TABLE" | grep -m 1 -n "$PLATFORM" | cut -d ':' -f 1) +echo "$PLATFORM_TABLE" | sed -n "$LINE_NUMBER,$((LINE_NUMBER+1))p" + +exit 1 + +# """ +# --- +# +# # Function to print a message that the currently installed ungoogled-chromium is up to date +# nothing_to_do() { +# echo "$UG_PATH is up to date" +# } +# +# # Function to check if $1 is higher version than $2 +# # $1 -> remote version (example: 91.0.4472.164) +# # $2 -> local version (example: 91.0.4472.114) +# # Return value: +# # 0 -> $1 <= $2 (no need to update) +# # 1 -> $1 > $2 (update available) +# compare_version() { +# echo "$1" +# echo "$2" +# +# # Break into arrays +# local IFS='.' +# read -ra V1 <<< "$1" +# read -ra V2 <<< "$2" +# +# for val in "${V1[@]}"; do +# echo "$val" +# done +# echo ${#V1[@]} +# for val in "${V2[@]}"; do +# echo "$val" +# done +# echo ${#V2[@]} +# +# # Determine shorter array (for the loop) +# local LENGTH=${#V1[@]} +# +# for (( i = 0 ; i < LENGTH ; i++ )); do +# if [ "${V1[$i]}" -gt "${V2[$i]}" ]; then +# return 1 +# elif [ "${V1[$i]}" -lt "${V2[$i]}" ]; then +# return 0 +# fi +# done +# +# return 0 +# } +# +# +# # DEBUG +# #compare_version "91.0.4472.164" "91.0.4472.114" +# +# # Determine local version if ungoogled-chromium is installed +# if [ -x "$UG_PATH" ]; then +# VERSION=$($UG_PATH --version | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") +# echo "$VERSION" +# fi +# +# # If ungoogled-chromium is installed on the machine, check if there is a newer version +# LATEST=$(echo "$PLATFORM_TABLE" | grep "$DEFAULT_PLATFORM") +# # TODO handle ambiguous DEFAULT_PLATFORM +# # TODO handle if unknown DEFAULT_PLATFORM +# +# if [ -n "$VERSION" ]; then +# +# compare_version "$(echo "$LATEST" | head -n 1 | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")" "$VERSION" +# if [ $? -eq 0 ]; then +# nothing_to_do +# exit +# else +# echo "Gotta update!" +# fi +# fi +# """ diff --git a/ungoogled-chromium-update.sh b/ungoogled-chromium-update.sh deleted file mode 100755 index 7d1659d..0000000 --- a/ungoogled-chromium-update.sh +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash - -# Shell script to install the latest version of ungoogled-chromium over the version on the machine if an update is available (using atom feed). User can specify a subgrouping (default is AppImage) - -# path for downloading ungoogled-chromium and comparing version numbers (FIXME WIP) -# TODO write function to search through user's path for ungoogled-chromium -UG_PATH="$HOME/Applications/appimage/ungoogled-chromium_87.0.4280.141-1.1_linux.AppImage" - -# Set default platform to look for new version from -DEFAULT_PLATFORM="AppImage" - -# URL for atom feed -ATOM_URL="https://raw.githubusercontent.com/ungoogled-software/ungoogled-chromium-binaries/master/feed.xml" - -PARSED_XML=$(curl -s $ATOM_URL | xml2) - -# Get table of available platforms, with versions, and URLs on the following line -PLATFORM_TABLE=$(echo "$PARSED_XML" | grep -E '(/feed/entry/title=)|(/feed/entry/link/@href=)' | sed 's/^.*=//g') - -# echo "$PARSED_XML" -echo "$PLATFORM_TABLE" - - -# Function to print a message that the currently installed ungoogled-chromium is up to date -nothing_to_do() { - echo "$UG_PATH is up to date" -} - -# Function to check if $1 is higher version than $2 -# $1 -> remote version (example: 91.0.4472.164) -# $2 -> local version (example: 91.0.4472.114) -# Return value: -# 0 -> $1 <= $2 (no need to update) -# 1 -> $1 > $2 (update available) -compare_version() { - echo "$1" - echo "$2" - - # Break into arrays - local IFS='.' - read -ra V1 <<< "$1" - read -ra V2 <<< "$2" - - for val in "${V1[@]}"; do - echo "$val" - done - echo ${#V1[@]} - for val in "${V2[@]}"; do - echo "$val" - done - echo ${#V2[@]} - - # Determine shorter array (for the loop) - local LENGTH=${#V1[@]} - - for (( i = 0 ; i < LENGTH ; i++ )); do - if [ "${V1[$i]}" -gt "${V2[$i]}" ]; then - return 1 - elif [ "${V1[$i]}" -lt "${V2[$i]}" ]; then - return 0 - fi - done - - return 0 -} - - -# DEBUG -#compare_version "91.0.4472.164" "91.0.4472.114" - -# Determine local version if ungoogled-chromium is installed -if [ -x "$UG_PATH" ]; then - VERSION=$($UG_PATH --version | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") - echo "$VERSION" -fi - -# If ungoogled-chromium is installed on the machine, check if there is a newer version -LATEST=$(echo "$PLATFORM_TABLE" | grep "$DEFAULT_PLATFORM") -# TODO handle ambiguous DEFAULT_PLATFORM -# TODO handle if unknown DEFAULT_PLATFORM - -if [ -n "$VERSION" ]; then - - compare_version "$(echo "$LATEST" | head -n 1 | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")" "$VERSION" - if [ $? -eq 0 ]; then - nothing_to_do - exit - else - echo "Gotta update!" - fi -fi diff --git a/update_ungoogled_chromium-portable_linux_64.sh b/update_ungoogled_chromium-portable_linux_64.sh new file mode 100755 index 0000000..e8d7d32 --- /dev/null +++ b/update_ungoogled_chromium-portable_linux_64.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +# Shell script to update ungoogled-chromium Portable Linux 64-bit to the latest version +# $1 -> Wrapper symlink location +# $2 (optional) -> Install location + +# If first time installing: user must specify a symlink location and an installation directory +# If checking for updates: user must pass a symlink for ungoogled-chromium (this is typically just the command name if a symlink is part of the path) + # Use the symlink target to determine installation directory + +PLATFORM="Portable Linux 64-bit" + + +# Print help message +print_help() { + echo "Usage: $0 LINK [LOCATION]" + echo + echo "LINK is the path for a symlink pointing to the ungoogled-chromium executable" + echo "LOCATION is the desired install location for ungoogled-chromium. It does not need to be specified unless installing ungoogled-chromium for the first time" +} + +# Function to determine absolute path of helper scripts +# $1 -> script name +get_absolute_path() { + echo "$(dirname "$(which "$1")")/$1" +} + + +# Exit if $1 does not exist +if [ -z "$1" ]; then + echo "Error: too few arguments" + print_help + exit 0 +fi + +# Fetch info, break and store into variables +FULL_INFO=$($(get_absolute_path "fetch_info.sh") "$PLATFORM") + +if [ $? -eq 0 ]; then + echo "Error: Could not get latest version info" + exit 0 +fi + +NAME=$(echo "$FULL_INFO" | head -n 1 | cut -d ':' -f 1) +VERSION=$(echo "$FULL_INFO" | head -n 1 | cut -d ':' -f 2 | sed 's/^[ ]*//g' | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") +URL=$(echo "$FULL_INFO" | sed -n "2p") + +echo "$NAME" +echo "$VERSION" +echo "$URL" + +# Check installed version number (if exists) +if [ -h "$1" ]; then + MY_VERSION=$($1 --version | grep -E -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+") + echo "$MY_VERSION" + + # Compare versions to determine if an update is necessary +fi + |