mirror of
				https://github.com/AppFlowy-IO/AppFlowy.git
				synced 2025-11-04 12:03:28 +00:00 
			
		
		
		
	
		
			
	
	
		
			403 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			403 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/sh
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								set -e
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								usage() {
							 | 
						||
| 
								 | 
							
								  this=$1
							 | 
						||
| 
								 | 
							
								  cat <<EOF
							 | 
						||
| 
								 | 
							
								$this: download latest archive file for AppFlowy-IO/AppFlowy
							 | 
						||
| 
								 | 
							
								Usage: $this [-b] bindir [-d] [tag]
							 | 
						||
| 
								 | 
							
								  -b sets bindir or installation directory, Defaults to /opt
							 | 
						||
| 
								 | 
							
								  -d turns on debug logging
							 | 
						||
| 
								 | 
							
								   [tag] is a tag from
							 | 
						||
| 
								 | 
							
								   https://github.com/AppFlowy-IO/AppFlowy/releases
							 | 
						||
| 
								 | 
							
								   If tag is missing, then the latest will be used.
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								  exit 2
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								parse_args() {
							 | 
						||
| 
								 | 
							
								  #BINDIR is /opt unless set be ENV
							 | 
						||
| 
								 | 
							
								  # over-ridden by flag below
							 | 
						||
| 
								 | 
							
								  BINDIR=${BINDIR:-/opt}
							 | 
						||
| 
								 | 
							
								  while getopts "b:dh?" arg; do
							 | 
						||
| 
								 | 
							
								    case "$arg" in
							 | 
						||
| 
								 | 
							
								      b) BINDIR="$OPTARG" ;;
							 | 
						||
| 
								 | 
							
								      d) log_set_priority 10 ;;
							 | 
						||
| 
								 | 
							
								      h | \?) usage "$0" ;;
							 | 
						||
| 
								 | 
							
								    esac
							 | 
						||
| 
								 | 
							
								  done
							 | 
						||
| 
								 | 
							
								  shift $((OPTIND - 1))
							 | 
						||
| 
								 | 
							
								  TAG=$1
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# this function wraps all the destructive operations
							 | 
						||
| 
								 | 
							
								# if a curl|bash cuts off the end of the script due to
							 | 
						||
| 
								 | 
							
								# network, either nothing will happen or will syntax error
							 | 
						||
| 
								 | 
							
								# out preventing half-done work
							 | 
						||
| 
								 | 
							
								execute() {
							 | 
						||
| 
								 | 
							
								  tmpdir=$(mktmpdir)
							 | 
						||
| 
								 | 
							
								  log_debug "downloading files into ${tmpdir}"
							 | 
						||
| 
								 | 
							
								  http_download "${tmpdir}/${TARBALL}" "${TARBALL_URL}"
							 | 
						||
| 
								 | 
							
								  srcdir="${tmpdir}"
							 | 
						||
| 
								 | 
							
								  (cd "${tmpdir}" && tar -xzvf "${TARBALL}")
							 | 
						||
| 
								 | 
							
								  install -d "${BINDIR}"
							 | 
						||
| 
								 | 
							
								  sudo mv "${srcdir}/${PROJECT_NAME}" /opt
							 | 
						||
| 
								 | 
							
								  log_info "installed ${BINDIR}/${PROJECT_NAME}"
							 | 
						||
| 
								 | 
							
								  (cd "/opt/${PROJECT_NAME}" && ./AppFlowy)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								is_supported_platform() {
							 | 
						||
| 
								 | 
							
								  platform=$1
							 | 
						||
| 
								 | 
							
								  found=1
							 | 
						||
| 
								 | 
							
								  case "$platform" in
							 | 
						||
| 
								 | 
							
								    windows/amd64) found=0 ;;
							 | 
						||
| 
								 | 
							
								    darwin/amd64) found=0 ;;
							 | 
						||
| 
								 | 
							
								    darwin/arm64) found=0 ;;
							 | 
						||
| 
								 | 
							
								    linux/amd64) found=0 ;;
							 | 
						||
| 
								 | 
							
								    linux/arm64) found=0 ;;
							 | 
						||
| 
								 | 
							
								    linux/armv6) found=0 ;;
							 | 
						||
| 
								 | 
							
								    linux/armv7) found=0 ;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								  return $found
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								check_platform() {
							 | 
						||
| 
								 | 
							
								  if is_supported_platform "$PLATFORM"; then
							 | 
						||
| 
								 | 
							
								    # optional logging goes here
							 | 
						||
| 
								 | 
							
								    true
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    log_crit "platform $PLATFORM is not supported.  Make sure this script is up-to-date and file request at https://github.com/${PREFIX}/issues/new"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								tag_to_version() {
							 | 
						||
| 
								 | 
							
								  if [ -z "${TAG}" ]; then
							 | 
						||
| 
								 | 
							
								    log_info "checking GitHub for latest tag"
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    log_info "checking GitHub for tag '${TAG}'"
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  REALTAG=$(github_release "$OWNER/$REPO" "${TAG}") && true
							 | 
						||
| 
								 | 
							
								  if test -z "$REALTAG"; then
							 | 
						||
| 
								 | 
							
								    log_crit "unable to find '${TAG}' - use 'latest' or see https://github.com/${PREFIX}/releases for details"
							 | 
						||
| 
								 | 
							
								    exit 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  # if version starts with 'v', remove it
							 | 
						||
| 
								 | 
							
								  TAG="$REALTAG"
							 | 
						||
| 
								 | 
							
								  VERSION=${TAG#v}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								adjust_format() {
							 | 
						||
| 
								 | 
							
								  # change format (tar.gz or zip) based on ARCH
							 | 
						||
| 
								 | 
							
								  true
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								adjust_os() {
							 | 
						||
| 
								 | 
							
								  # adjust archive name based on OS
							 | 
						||
| 
								 | 
							
								  true
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								adjust_arch() {
							 | 
						||
| 
								 | 
							
								  # adjust archive name based on ARCH
							 | 
						||
| 
								 | 
							
								  true
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cat /dev/null <<EOF
							 | 
						||
| 
								 | 
							
								------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								https://github.com/client9/shlib - portable posix shell functions
							 | 
						||
| 
								 | 
							
								Public domain - http://unlicense.org
							 | 
						||
| 
								 | 
							
								https://github.com/client9/shlib/blob/master/LICENSE.md
							 | 
						||
| 
								 | 
							
								but credit (and pull requests) appreciated.
							 | 
						||
| 
								 | 
							
								------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								is_command() {
							 | 
						||
| 
								 | 
							
								  command -v "$1" >/dev/null
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								echoerr() {
							 | 
						||
| 
								 | 
							
								  echo "$@" 1>&2
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								log_prefix() {
							 | 
						||
| 
								 | 
							
								  echo "$0"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								_logp=6
							 | 
						||
| 
								 | 
							
								log_set_priority() {
							 | 
						||
| 
								 | 
							
								  _logp="$1"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								log_priority() {
							 | 
						||
| 
								 | 
							
								  if test -z "$1"; then
							 | 
						||
| 
								 | 
							
								    echo "$_logp"
							 | 
						||
| 
								 | 
							
								    return
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  [ "$1" -le "$_logp" ]
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								log_tag() {
							 | 
						||
| 
								 | 
							
								  case $1 in
							 | 
						||
| 
								 | 
							
								    0) echo "emerg" ;;
							 | 
						||
| 
								 | 
							
								    1) echo "alert" ;;
							 | 
						||
| 
								 | 
							
								    2) echo "crit" ;;
							 | 
						||
| 
								 | 
							
								    3) echo "err" ;;
							 | 
						||
| 
								 | 
							
								    4) echo "warning" ;;
							 | 
						||
| 
								 | 
							
								    5) echo "notice" ;;
							 | 
						||
| 
								 | 
							
								    6) echo "info" ;;
							 | 
						||
| 
								 | 
							
								    7) echo "debug" ;;
							 | 
						||
| 
								 | 
							
								    *) echo "$1" ;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								log_debug() {
							 | 
						||
| 
								 | 
							
								  log_priority 7 || return 0
							 | 
						||
| 
								 | 
							
								  echoerr "$(log_prefix)" "$(log_tag 7)" "$@"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								log_info() {
							 | 
						||
| 
								 | 
							
								  log_priority 6 || return 0
							 | 
						||
| 
								 | 
							
								  echoerr "$(log_prefix)" "$(log_tag 6)" "$@"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								log_err() {
							 | 
						||
| 
								 | 
							
								  log_priority 3 || return 0
							 | 
						||
| 
								 | 
							
								  echoerr "$(log_prefix)" "$(log_tag 3)" "$@"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								log_crit() {
							 | 
						||
| 
								 | 
							
								  log_priority 2 || return 0
							 | 
						||
| 
								 | 
							
								  echoerr "$(log_prefix)" "$(log_tag 2)" "$@"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								uname_os() {
							 | 
						||
| 
								 | 
							
								  os=$(uname -s | tr '[:upper:]' '[:lower:]')
							 | 
						||
| 
								 | 
							
								  case "$os" in
							 | 
						||
| 
								 | 
							
								    msys_nt) os="windows" ;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								  echo "$os"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								uname_arch() {
							 | 
						||
| 
								 | 
							
								  arch=$(uname -m)
							 | 
						||
| 
								 | 
							
								  case $arch in
							 | 
						||
| 
								 | 
							
								    x86_64) arch="amd64" ;;
							 | 
						||
| 
								 | 
							
								    x86) arch="386" ;;
							 | 
						||
| 
								 | 
							
								    i686) arch="386" ;;
							 | 
						||
| 
								 | 
							
								    i386) arch="386" ;;
							 | 
						||
| 
								 | 
							
								    aarch64) arch="arm64" ;;
							 | 
						||
| 
								 | 
							
								    armv5*) arch="armv5" ;;
							 | 
						||
| 
								 | 
							
								    armv6*) arch="armv6" ;;
							 | 
						||
| 
								 | 
							
								    armv7*) arch="armv7" ;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								  echo ${arch}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								uname_os_check() {
							 | 
						||
| 
								 | 
							
								  os=$(uname_os)
							 | 
						||
| 
								 | 
							
								  case "$os" in
							 | 
						||
| 
								 | 
							
								    darwin) return 0 ;;
							 | 
						||
| 
								 | 
							
								    dragonfly) return 0 ;;
							 | 
						||
| 
								 | 
							
								    freebsd) return 0 ;;
							 | 
						||
| 
								 | 
							
								    linux) return 0 ;;
							 | 
						||
| 
								 | 
							
								    android) return 0 ;;
							 | 
						||
| 
								 | 
							
								    nacl) return 0 ;;
							 | 
						||
| 
								 | 
							
								    netbsd) return 0 ;;
							 | 
						||
| 
								 | 
							
								    openbsd) return 0 ;;
							 | 
						||
| 
								 | 
							
								    plan9) return 0 ;;
							 | 
						||
| 
								 | 
							
								    solaris) return 0 ;;
							 | 
						||
| 
								 | 
							
								    windows) return 0 ;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								  log_crit "uname_os_check '$(uname -s)' got converted to '$os' which is not a GOOS value. Please file bug at https://github.com/client9/shlib"
							 | 
						||
| 
								 | 
							
								  return 1
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								uname_arch_check() {
							 | 
						||
| 
								 | 
							
								  arch=$(uname_arch)
							 | 
						||
| 
								 | 
							
								  case "$arch" in
							 | 
						||
| 
								 | 
							
								    386) return 0 ;;
							 | 
						||
| 
								 | 
							
								    amd64) return 0 ;;
							 | 
						||
| 
								 | 
							
								    arm64) return 0 ;;
							 | 
						||
| 
								 | 
							
								    armv5) return 0 ;;
							 | 
						||
| 
								 | 
							
								    armv6) return 0 ;;
							 | 
						||
| 
								 | 
							
								    armv7) return 0 ;;
							 | 
						||
| 
								 | 
							
								    ppc64) return 0 ;;
							 | 
						||
| 
								 | 
							
								    ppc64le) return 0 ;;
							 | 
						||
| 
								 | 
							
								    mips) return 0 ;;
							 | 
						||
| 
								 | 
							
								    mipsle) return 0 ;;
							 | 
						||
| 
								 | 
							
								    mips64) return 0 ;;
							 | 
						||
| 
								 | 
							
								    mips64le) return 0 ;;
							 | 
						||
| 
								 | 
							
								    s390x) return 0 ;;
							 | 
						||
| 
								 | 
							
								    amd64p32) return 0 ;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								  log_crit "uname_arch_check '$(uname -m)' got converted to '$arch' which is not a GOARCH value.  Please file bug report at https://github.com/client9/shlib"
							 | 
						||
| 
								 | 
							
								  return 1
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								untar() {
							 | 
						||
| 
								 | 
							
								  tarball=$1
							 | 
						||
| 
								 | 
							
								  case "${tarball}" in
							 | 
						||
| 
								 | 
							
								    *.tar.gz | *.tgz) tar -xzf "${tarball}" ;;
							 | 
						||
| 
								 | 
							
								    *.tar) tar -xf "${tarball}" ;;
							 | 
						||
| 
								 | 
							
								    *.zip) unzip "${tarball}" ;;
							 | 
						||
| 
								 | 
							
								    *)
							 | 
						||
| 
								 | 
							
								      log_err "untar unknown archive format for ${tarball}"
							 | 
						||
| 
								 | 
							
								      return 1
							 | 
						||
| 
								 | 
							
								      ;;
							 | 
						||
| 
								 | 
							
								  esac
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								mktmpdir() {
							 | 
						||
| 
								 | 
							
								  test -z "$TMPDIR" && TMPDIR="$(mktemp -d)"
							 | 
						||
| 
								 | 
							
								  mkdir -p "${TMPDIR}"
							 | 
						||
| 
								 | 
							
								  echo "${TMPDIR}"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								http_download_curl() {
							 | 
						||
| 
								 | 
							
								  local_file=$1
							 | 
						||
| 
								 | 
							
								  source_url=$2
							 | 
						||
| 
								 | 
							
								  header=$3
							 | 
						||
| 
								 | 
							
								  if [ -z "$header" ]; then
							 | 
						||
| 
								 | 
							
								    code=$(curl -w '%{http_code}' -sL -o "$local_file" "$source_url")
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    code=$(curl -w '%{http_code}' -sL -H "$header" -o "$local_file" "$source_url")
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  if [ "$code" != "200" ]; then
							 | 
						||
| 
								 | 
							
								    log_debug "http_download_curl received HTTP status $code"
							 | 
						||
| 
								 | 
							
								    return 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  return 0
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								http_download_wget() {
							 | 
						||
| 
								 | 
							
								  local_file=$1
							 | 
						||
| 
								 | 
							
								  source_url=$2
							 | 
						||
| 
								 | 
							
								  header=$3
							 | 
						||
| 
								 | 
							
								  if [ -z "$header" ]; then
							 | 
						||
| 
								 | 
							
								    wget -q -O "$local_file" "$source_url"
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    wget -q --header "$header" -O "$local_file" "$source_url"
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								http_download() {
							 | 
						||
| 
								 | 
							
								  log_debug "http_download $2"
							 | 
						||
| 
								 | 
							
								  if is_command curl; then
							 | 
						||
| 
								 | 
							
								    http_download_curl "$@"
							 | 
						||
| 
								 | 
							
								    return
							 | 
						||
| 
								 | 
							
								  elif is_command wget; then
							 | 
						||
| 
								 | 
							
								    http_download_wget "$@"
							 | 
						||
| 
								 | 
							
								    return
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  log_crit "http_download unable to find wget or curl"
							 | 
						||
| 
								 | 
							
								  return 1
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								http_copy() {
							 | 
						||
| 
								 | 
							
								  tmp=$(mktemp)
							 | 
						||
| 
								 | 
							
								  http_download "${tmp}" "$1" "$2" || return 1
							 | 
						||
| 
								 | 
							
								  body=$(cat "$tmp")
							 | 
						||
| 
								 | 
							
								  rm -f "${tmp}"
							 | 
						||
| 
								 | 
							
								  echo "$body"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								github_release() {
							 | 
						||
| 
								 | 
							
								  owner_repo=$1
							 | 
						||
| 
								 | 
							
								  version=$2
							 | 
						||
| 
								 | 
							
								  test -z "$version" && version="latest"
							 | 
						||
| 
								 | 
							
								  giturl="https://github.com/${owner_repo}/releases/${version}"
							 | 
						||
| 
								 | 
							
								  json=$(http_copy "$giturl" "Accept:application/json")
							 | 
						||
| 
								 | 
							
								  test -z "$json" && return 1
							 | 
						||
| 
								 | 
							
								  version=$(echo "$json" | tr -s '\n' ' ' | sed 's/.*"tag_name":"//' | sed 's/".*//')
							 | 
						||
| 
								 | 
							
								  test -z "$version" && return 1
							 | 
						||
| 
								 | 
							
								  echo "$version"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								hash_sha256() {
							 | 
						||
| 
								 | 
							
								  TARGET=${1:-/dev/stdin}
							 | 
						||
| 
								 | 
							
								  if is_command gsha256sum; then
							 | 
						||
| 
								 | 
							
								    hash=$(gsha256sum "$TARGET") || return 1
							 | 
						||
| 
								 | 
							
								    echo "$hash" | cut -d ' ' -f 1
							 | 
						||
| 
								 | 
							
								  elif is_command sha256sum; then
							 | 
						||
| 
								 | 
							
								    hash=$(sha256sum "$TARGET") || return 1
							 | 
						||
| 
								 | 
							
								    echo "$hash" | cut -d ' ' -f 1
							 | 
						||
| 
								 | 
							
								  elif is_command shasum; then
							 | 
						||
| 
								 | 
							
								    hash=$(shasum -a 256 "$TARGET" 2>/dev/null) || return 1
							 | 
						||
| 
								 | 
							
								    echo "$hash" | cut -d ' ' -f 1
							 | 
						||
| 
								 | 
							
								  elif is_command openssl; then
							 | 
						||
| 
								 | 
							
								    hash=$(openssl -dst openssl dgst -sha256 "$TARGET") || return 1
							 | 
						||
| 
								 | 
							
								    echo "$hash" | cut -d ' ' -f a
							 | 
						||
| 
								 | 
							
								  else
							 | 
						||
| 
								 | 
							
								    log_crit "hash_sha256 unable to find command to compute sha-256 hash"
							 | 
						||
| 
								 | 
							
								    return 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								hash_sha256_verify() {
							 | 
						||
| 
								 | 
							
								  TARGET=$1
							 | 
						||
| 
								 | 
							
								  checksums=$2
							 | 
						||
| 
								 | 
							
								  if [ -z "$checksums" ]; then
							 | 
						||
| 
								 | 
							
								    log_err "hash_sha256_verify checksum file not specified in arg2"
							 | 
						||
| 
								 | 
							
								    return 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  BASENAME=${TARGET##*/}
							 | 
						||
| 
								 | 
							
								  want=$(grep -i "${BASENAME}" "${checksums}" 2>/dev/null | tr '\t' ' ' | cut -d ' ' -f 1)
							 | 
						||
| 
								 | 
							
								  if [ -z "$want" ]; then
							 | 
						||
| 
								 | 
							
								    log_err "hash_sha256_verify unable to find checksum for '${TARGET}' in '${checksums}'"
							 | 
						||
| 
								 | 
							
								    return 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								  got=$(hash_sha256 "$TARGET")
							 | 
						||
| 
								 | 
							
								  if [ "$want" != "$got" ]; then
							 | 
						||
| 
								 | 
							
								    log_err "hash_sha256_verify checksum for '$TARGET' did not verify ${want} vs $got"
							 | 
						||
| 
								 | 
							
								    return 1
							 | 
						||
| 
								 | 
							
								  fi
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cat /dev/null <<EOF
							 | 
						||
| 
								 | 
							
								------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								End of functions from https://github.com/client9/shlib
							 | 
						||
| 
								 | 
							
								------------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								EOF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PROJECT_NAME="AppFlowy"
							 | 
						||
| 
								 | 
							
								SHORTHAND_PROJECT_NAME="AppFlowy"
							 | 
						||
| 
								 | 
							
								OWNER=AppFlowy-IO
							 | 
						||
| 
								 | 
							
								REPO="AppFlowy"
							 | 
						||
| 
								 | 
							
								BINARY=AppFlowy
							 | 
						||
| 
								 | 
							
								FORMAT=tar.gz
							 | 
						||
| 
								 | 
							
								OS=$(uname_os)
							 | 
						||
| 
								 | 
							
								ARCH=$(uname_arch)
							 | 
						||
| 
								 | 
							
								LIBC=$(ldd --version | head -n 1)
							 | 
						||
| 
								 | 
							
								PREFIX="$OWNER/$REPO"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								# use in logging routines
							 | 
						||
| 
								 | 
							
								log_prefix() {
							 | 
						||
| 
								 | 
							
									echo "$PREFIX"
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								PLATFORM="${OS}/${ARCH}"
							 | 
						||
| 
								 | 
							
								GITHUB_DOWNLOAD=https://github.com/${OWNER}/${REPO}/releases/download
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								uname_os_check "$OS"
							 | 
						||
| 
								 | 
							
								uname_arch_check "$ARCH"
							 | 
						||
| 
								 | 
							
								parse_args "$@"
							 | 
						||
| 
								 | 
							
								check_platform
							 | 
						||
| 
								 | 
							
								tag_to_version
							 | 
						||
| 
								 | 
							
								adjust_format
							 | 
						||
| 
								 | 
							
								adjust_os
							 | 
						||
| 
								 | 
							
								adjust_arch
							 | 
						||
| 
								 | 
							
								log_info "found version: ${VERSION} for ${TAG}/${OS}/${ARCH}"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NAME="${SHORTHAND_PROJECT_NAME}_v${VERSION}_${OS}_${ARCH}"
							 | 
						||
| 
								 | 
							
								TARBALL=${NAME}.${FORMAT}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if [ "$OS" = "linux" ]; then
							 | 
						||
| 
								 | 
							
								  OS="unknown-linux-gnu"
							 | 
						||
| 
								 | 
							
								  ARCH="x86_64"
							 | 
						||
| 
								 | 
							
								  DISTRO='ubuntu-20.04'
							 | 
						||
| 
								 | 
							
								  TARBALL="${SHORTHAND_PROJECT_NAME}_${ARCH}-${OS}_${DISTRO}."tar.gz""
							 | 
						||
| 
								 | 
							
								fi
							 | 
						||
| 
								 | 
							
								TARBALL_URL=${GITHUB_DOWNLOAD}/${TAG}/${TARBALL}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								execute # line: 38
							 |