mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-11-16 02:18:28 -07:00
Pull request: scripts: imp install, sup wget
Closes #3637. Squashed commit of the following: commit 453094d9a016b0d5a7b7f584b2b492244703064d Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Wed Feb 9 19:44:51 2022 +0300 scripts: fix wget commit d16f8d9ad4ac62ce0bc88bab7ceb24a4089e93c3 Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Wed Feb 9 19:17:22 2022 +0300 scripts: imp install, sup wget
This commit is contained in:
parent
6d0a43aad6
commit
b290eddc70
@ -46,33 +46,31 @@ is_little_endian() {
|
|||||||
# Function check_required checks if the required software is available on the
|
# Function check_required checks if the required software is available on the
|
||||||
# machine. The required software:
|
# machine. The required software:
|
||||||
#
|
#
|
||||||
# curl
|
|
||||||
# unzip (macOS) / tar (other unixes)
|
# unzip (macOS) / tar (other unixes)
|
||||||
#
|
#
|
||||||
|
# curl/wget are checked in function configure.
|
||||||
check_required() {
|
check_required() {
|
||||||
required_darwin="unzip"
|
required_darwin="unzip"
|
||||||
required_unix="tar"
|
required_unix="tar"
|
||||||
readonly required_darwin required_unix
|
readonly required_darwin required_unix
|
||||||
|
|
||||||
# Split with space.
|
|
||||||
required="curl"
|
|
||||||
case "$os"
|
case "$os"
|
||||||
in
|
in
|
||||||
('freebsd'|'linux'|'openbsd')
|
('freebsd'|'linux'|'openbsd')
|
||||||
required="$required $required_unix"
|
required="$required_unix"
|
||||||
;;
|
;;
|
||||||
('darwin')
|
('darwin')
|
||||||
required="$required $required_darwin"
|
required="$required_darwin"
|
||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
# Generally shouldn't happen, since the OS has already been
|
# Generally shouldn't happen, since the OS has already been validated.
|
||||||
# validated.
|
|
||||||
error_exit "unsupported operating system: '$os'"
|
error_exit "unsupported operating system: '$os'"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
readonly required
|
||||||
|
|
||||||
# Don't use quotes to get word splitting.
|
# Don't use quotes to get word splitting.
|
||||||
for cmd in ${required}
|
for cmd in $required
|
||||||
do
|
do
|
||||||
log "checking $cmd"
|
log "checking $cmd"
|
||||||
if ! is_command "$cmd"
|
if ! is_command "$cmd"
|
||||||
@ -189,6 +187,9 @@ set_os() {
|
|||||||
('OpenBSD')
|
('OpenBSD')
|
||||||
os='openbsd'
|
os='openbsd'
|
||||||
;;
|
;;
|
||||||
|
(*)
|
||||||
|
error_exit "unsupported operating system: '$os'"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -240,6 +241,9 @@ set_cpu() {
|
|||||||
fi
|
fi
|
||||||
cpu="${cpu}_softfloat"
|
cpu="${cpu}_softfloat"
|
||||||
;;
|
;;
|
||||||
|
(*)
|
||||||
|
error_exit "unsupported cpu type: $cpu"
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -297,6 +301,41 @@ fix_freebsd() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# download_curl uses curl(1) to download a file. The first argument is the URL.
|
||||||
|
# The second argument is optional and is the output file.
|
||||||
|
download_curl() {
|
||||||
|
curl_output="${2:-}"
|
||||||
|
if [ "$curl_output" = '' ]
|
||||||
|
then
|
||||||
|
curl -L -S -s "$1"
|
||||||
|
else
|
||||||
|
curl -L -S -o "$curl_output" -s "$1"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# download_wget uses wget(1) to download a file. The first argument is the URL.
|
||||||
|
# The second argument is optional and is the output file.
|
||||||
|
download_wget() {
|
||||||
|
wget_output="${2:--}"
|
||||||
|
|
||||||
|
wget --no-verbose -O "$wget_output" "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function set_download_func sets the appropriate function for downloading
|
||||||
|
# files.
|
||||||
|
set_download_func() {
|
||||||
|
if is_command 'curl'
|
||||||
|
then
|
||||||
|
# Go on and use the default, download_curl.
|
||||||
|
return 0
|
||||||
|
elif is_command 'wget'
|
||||||
|
then
|
||||||
|
download_func='download_wget'
|
||||||
|
else
|
||||||
|
error_exit "either curl or wget is required to install AdGuard Home via this script"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
# Function set_sudo_cmd sets the appropriate command to run a command under
|
# Function set_sudo_cmd sets the appropriate command to run a command under
|
||||||
# superuser privileges.
|
# superuser privileges.
|
||||||
set_sudo_cmd() {
|
set_sudo_cmd() {
|
||||||
@ -320,6 +359,7 @@ configure() {
|
|||||||
set_os
|
set_os
|
||||||
set_cpu
|
set_cpu
|
||||||
fix_darwin
|
fix_darwin
|
||||||
|
set_download_func
|
||||||
set_sudo_cmd
|
set_sudo_cmd
|
||||||
check_out_dir
|
check_out_dir
|
||||||
|
|
||||||
@ -384,11 +424,11 @@ rerun_with_root() {
|
|||||||
|
|
||||||
log 'restarting with root privileges'
|
log 'restarting with root privileges'
|
||||||
|
|
||||||
# Group curl together with an echo, so that if curl fails before producing
|
# Group curl/wget together with an echo, so that if the former fails before
|
||||||
# any output, the echo prints an exit command for the following shell to
|
# producing any output, the latter prints an exit command for the following
|
||||||
# execute to prevent it from getting an empty input and exiting with a zero
|
# shell to execute to prevent it from getting an empty input and exiting
|
||||||
# code in that case.
|
# with a zero code in that case.
|
||||||
{ curl -L -S -s "$script_url" || echo 'exit 1'; }\
|
{ "$download_func" "$script_url" || echo 'exit 1'; }\
|
||||||
| $sudo_cmd sh -s -- -c "$channel" -C "$cpu" -O "$os" -o "$out_dir" "$r" "$u" "$v"
|
| $sudo_cmd sh -s -- -c "$channel" -C "$cpu" -O "$os" -o "$out_dir" "$r" "$u" "$v"
|
||||||
|
|
||||||
# Exit the script. Since if the code of the previous pipeline is non-zero,
|
# Exit the script. Since if the code of the previous pipeline is non-zero,
|
||||||
@ -401,7 +441,7 @@ rerun_with_root() {
|
|||||||
download() {
|
download() {
|
||||||
log "downloading package from $url -> $pkg_name"
|
log "downloading package from $url -> $pkg_name"
|
||||||
|
|
||||||
if ! curl -s "$url" --output "$pkg_name"
|
if ! "$download_func" "$url" "$pkg_name"
|
||||||
then
|
then
|
||||||
error_exit "cannot download the package from $url into $pkg_name"
|
error_exit "cannot download the package from $url into $pkg_name"
|
||||||
fi
|
fi
|
||||||
@ -450,7 +490,7 @@ handle_existing() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$( ls -1 -A $agh_dir )" != '' ]
|
if [ "$( ls -1 -A "$agh_dir" )" != '' ]
|
||||||
then
|
then
|
||||||
log 'the existing AdGuard Home installation is detected'
|
log 'the existing AdGuard Home installation is detected'
|
||||||
|
|
||||||
@ -522,6 +562,7 @@ cpu=''
|
|||||||
os=''
|
os=''
|
||||||
out_dir='/opt'
|
out_dir='/opt'
|
||||||
pkg_ext='tar.gz'
|
pkg_ext='tar.gz'
|
||||||
|
download_func='download_curl'
|
||||||
sudo_cmd='sudo'
|
sudo_cmd='sudo'
|
||||||
|
|
||||||
parse_opts "$@"
|
parse_opts "$@"
|
||||||
|
Loading…
Reference in New Issue
Block a user