diff options
author | Amin Vakil | 2020-09-23 15:07:30 +0330 |
---|---|---|
committer | Amin Vakil | 2020-09-23 15:07:30 +0330 |
commit | c4f366894c05ffa9d09bd4ccc94cc519ede89023 (patch) | |
tree | 5e797de55f34d7e523e566058a1bf3e5cbd36aaa /tor-browser.in | |
parent | 16039aa46ab8d60cbb8c6ede73ec24073e0903b4 (diff) | |
download | aur-c4f366894c05ffa9d09bd4ccc94cc519ede89023.tar.gz |
Various changes in PKGBUILD
Diffstat (limited to 'tor-browser.in')
-rwxr-xr-x | tor-browser.in | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/tor-browser.in b/tor-browser.in new file mode 100755 index 000000000000..9c3b0252ab17 --- /dev/null +++ b/tor-browser.in @@ -0,0 +1,195 @@ +#!/usr/bin/env bash + +# Copyright (C) 2009 Benjamin Drung <bdrung at ubuntu dot com> +# Copyright (C) 2012 Alessio Sergi <al3hex at gmail dot com> +# Copyright (C) 2017 grufo <madmurphy333 at gmail dot com> (Arch User Repository version) +# modified 2012 for tor-browser (Max Roder <maxroder at web dot de>) +# modified 2014 by Yardena Cohen <yardenack at gmail dot com> +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set -e + + +# CONSTANTS AND VARIABLES + +# filled by PKGBUILD +_TB_PKGNAME_='@PACKAGE_NAME@' +_TB_VERSION_='@PACKAGE_VERSION@' +_TB_RELEASE_='@PACKAGE_RELEASE@' +_TB_LANGUAGE_="@PACKAGE_LANGUAGE@" +_TB_ARCH_='@PACKAGE_ARCH@' + +# other constants and variables +_TB_HOME_DIR_=~/".${_TB_PKGNAME_}" +_TB_REFRESH_=0 + + +# FUNCTIONS + +# syntax: _notify_ "${TITLE}" "${MESSAGE}" +_notify_() { + + if [ $(which zenity 2>/dev/null) ]; then + zenity --info --title "${1}" --text "${2}" + elif [ $(which notify-send 2>/dev/null) ]; then + notify-send "${1}" "${2}" + elif [ $(which kdialog 2>/dev/null) ]; then + kdialog --title "${1}" --passivepopup "${2}" + else + echo -e "${0}: [${1}] ${2}" >&2 + fi + +} + + +# syntax: _compare_ver_ "${INSTALLED_VERSION}" "${LATEST_VERSION}" +_compare_ver_() { + + [[ "${1}" == "${2}" ]] && return 1 || [[ "${1}" == "`echo -e "${1}\n${2}" | sort -V | head -n1`" ]] + +} + + +_refresh_local_() { + + local KEEP_DIR="${_TB_APP_DIR_}/Browser/TorBrowser/Data/Browser" + local KEPT_DIR=~/".${_TB_PKGNAME_}-tmpdata" + local DIR_IS_KEPT=0 + + if [[ -d "${KEEP_DIR}" ]]; then + [[ -d "${KEPT_DIR}" ]] && rm -rf "${KEPT_DIR}" + mv "${KEEP_DIR}" "${KEPT_DIR}" + echo "${0}: Preserving files in ${KEPT_DIR}/." >> "${_TB_LOG_FILE_}" + DIR_IS_KEPT=1 + fi + + echo "${0}: Extracting files to ${_TB_APP_DIR_}." >> "${_TB_LOG_FILE_}" + rm -rf "${_TB_APP_DIR_}"/* + tar --strip-components=1 -xJf "/opt/${_TB_PKGNAME_}/tor-browser-${_TB_ARCH_}-${_TB_VERSION_}_${_TB_LANGUAGE_}.tar.xz" \ + -C "${_TB_APP_DIR_}" >> "${_TB_LOG_FILE_}" 2>&1 || _notify_ 'Error' \ + "The tor-browser archive could not be extracted to your home directory. \ + \nCheck permissions of ${_TB_APP_DIR_}. \ + \nThe error log can be found in ${_TB_LOG_FILE_}." + + if [[ ! ${DIR_IS_KEPT} -eq 0 ]]; then + rm -rf "${KEEP_DIR}" + mv "${KEPT_DIR}" "${KEEP_DIR}" + fi + + [[ -f "${_TB_APP_DIR_}/Browser/start-tor-browser" ]] && echo "${_TB_VERSION_}" > "${_TB_VER_FILE_}" + +} + + +_aur_update_() { + + if [[ "$(id -u)" == '0' ]]; then + echo 'It is not a good idea to do this as root. Abort.' 1>&2 + exit 1 + fi + + local DO_UPDATE=0 + local TMP_PKGBUILD="$(mktemp -d)" + + cd "${TMP_PKGBUILD}" + + if ! { curl --silent --fail "https://aur.archlinux.org/cgit/aur.git/snapshot/${_TB_PKGNAME_}.tar.gz" | tar xz ;} 2>/dev/null; then + echo 'Unable to retrieve the PKGBUILD. Abort.' 1>&2 + rm -rf "${TMP_PKGBUILD}" + exit 1 + fi + + cd "${TMP_PKGBUILD}/${_TB_PKGNAME_}" + + local AUR_VERSION="$(grep 'pkgver' '.SRCINFO' | cut -d = -f2 | sed -e 's/^[[:space:]]*//')" + local AUR_RELEASE="$(grep 'pkgrel' '.SRCINFO' | cut -d = -f2 | sed -e 's/^[[:space:]]*//')" + + if _compare_ver_ "${_TB_VERSION_}" "${AUR_VERSION}"; then + echo "Found new version (${_TB_VERSION_} -> ${AUR_VERSION})..." + DO_UPDATE=1 + elif [[ "${_TB_VERSION_}" == "${AUR_VERSION}" ]] && [[ "${_TB_RELEASE_}" != "${AUR_RELEASE}" ]] && [[ "${_TB_RELEASE_}" == "`echo -e "${_TB_RELEASE_}\n${AUR_RELEASE}" | sort | head -n1`" ]]; then + echo 'Found new PKGBUILD...' + DO_UPDATE=1 + else + echo "Everything is up to date (current version: ${_TB_VERSION_})." + fi + + [[ ! ${DO_UPDATE} -eq 0 ]] && makepkg -si + + rm -rf "${TMP_PKGBUILD}" + +} + + +_usage_() { + + cat <<EOF +Usage: ${0##*/} [option] + +Options: + -h|--help Show this help message and exit + -u|--update Search in AUR for a new release and install it + -r|--refresh Refresh the copy in your home directory and launch tor-browser + -e|--erase Erase the copy in your home directory + --dir=<directory> The Tor-Browser directory to use + + All unrecognized arguments will be passed to the browser. +EOF + +} + + +# SCRIPT BODY + +args=() +for arg; do + case "${arg}" in + -h|--help) _usage_; exit 0 ;; + -u|--update) _aur_update_; exit 0 ;; + -f|--refresh) _TB_REFRESH_=1 ;; + -e|--erase) rm -rf "${_TB_HOME_DIR_}"; exit 0 ;; + --dir=*) _TB_HOME_DIR_="${arg#*=}" ;; + *) args+=("$arg") ;; + esac +done + +_TB_VER_FILE_="${_TB_HOME_DIR_}/VERSION" +_TB_LOG_FILE_="${_TB_HOME_DIR_}/LOG" +_TB_APP_DIR_="${_TB_HOME_DIR_}/app" + +# create directory, if it is missing (e.g. first run) +[[ ! -d "${_TB_APP_DIR_}" ]] && mkdir -p "${_TB_APP_DIR_}" +cd "${_TB_HOME_DIR_}" + +# create version file if missing +[[ ! -f "${_TB_VER_FILE_}" ]] && echo 0 > "${_TB_VER_FILE_}" + +# get the installed version +while read _TB_VER_LINE_; do + _TB_INSTALLED_VERSION_="${_TB_VER_LINE_}" +done < "${_TB_VER_FILE_}" + +# start update if old or no tor-browser is installed +if [[ "${_TB_INSTALLED_VERSION_}" == "${_TB_VERSION_}" ]] && [[ ${_TB_REFRESH_} -eq 0 ]]; then + # clear log + > "${_TB_LOG_FILE_}" +else + echo "${0}: Your version in ${_TB_HOME_DIR_} is outdated or you do not have installed ${_TB_PKGNAME_} yet." > "${_TB_LOG_FILE_}" + _refresh_local_ +fi + +# start tor-browser +"${_TB_APP_DIR_}/Browser/start-tor-browser" "${args[@]}" + |