mirror of
https://github.com/inventree/InvenTree.git
synced 2025-10-30 20:55:42 +00:00
* bump vers * fix ssl? Added build dependencies for libbz2, libffi, and libssl. * try empty buildpack * clean up * fix ref * remove things we now do not need anymore * add 22.04 as a target * cleanup installer * add changelog entry * add dotenv * update skript * make task more robust for package usage * ensure we have a site-url set * fix style * fix syntax
316 lines
7.3 KiB
Bash
Executable File
316 lines
7.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# This script was generated by bashly 1.3.3 (https://bashly.dev)
|
|
# Modifying it manually is not recommended
|
|
|
|
if ((BASH_VERSINFO[0] < 4 || (BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] < 2))); then
|
|
printf "bash version 4.2 or higher is required\n" >&2
|
|
exit 1
|
|
fi
|
|
|
|
root_command() {
|
|
# Settings
|
|
source_url=${args[source]}
|
|
publisher=${args[publisher]}
|
|
# Flags
|
|
no_call=${args[--no-call]}
|
|
dry_run=${args[--dry-run]}
|
|
|
|
REQS="wget apt-transport-https"
|
|
|
|
function do_call() {
|
|
if [[ $dry_run ]]; then
|
|
echo -e "### DRY RUN: \n$1"
|
|
else
|
|
$1
|
|
fi
|
|
}
|
|
|
|
function get_distribution {
|
|
if [ -f /etc/os-release ]; then
|
|
. /etc/os-release
|
|
OS=$NAME
|
|
VER=$VERSION_ID
|
|
elif type lsb_release >/dev/null 2>&1; then
|
|
OS=$(lsb_release -si)
|
|
VER=$(lsb_release -sr)
|
|
elif [ -f /etc/lsb-release ]; then
|
|
. /etc/lsb-release
|
|
OS=$DISTRIB_ID
|
|
VER=$DISTRIB_RELEASE
|
|
elif [ -f /etc/debian_version ]; then
|
|
OS=Debian
|
|
VER=$(cat /etc/debian_version)
|
|
elif [ -f /etc/SuSe-release ]; then
|
|
OS=SEL
|
|
elif [ -f /etc/redhat-release ]; then
|
|
OS=RedHat
|
|
else
|
|
OS=$(uname -s)
|
|
VER=$(uname -r)
|
|
fi
|
|
}
|
|
|
|
echo "### Installer for InvenTree - source: $publisher/$source_url"
|
|
|
|
# Check if os and version is supported
|
|
get_distribution
|
|
echo "### Detected distribution: $OS $VER"
|
|
SUPPORTED=true # is this OS supported?
|
|
|
|
DIST_OS=${OS,,}
|
|
DIST_VER=$VER
|
|
|
|
case "$OS" in
|
|
Ubuntu)
|
|
if [[ $VER == "24.04" ]]; then
|
|
SUPPORTED=true
|
|
if [[ $VER == "22.04" ]]; then
|
|
SUPPORTED=true
|
|
elif [[ $VER == "20.04" ]]; then
|
|
SUPPORTED=true
|
|
else
|
|
SUPPORTED=false
|
|
fi
|
|
;;
|
|
"Debian GNU/Linux" | "debian gnu/linux" | Raspbian)
|
|
if [[ $VER == "12" ]]; then
|
|
SUPPORTED=true
|
|
elif [[ $VER == "11" ]]; then
|
|
SUPPORTED=true
|
|
elif [[ $VER == "10" ]]; then
|
|
SUPPORTED=true
|
|
else
|
|
SUPPORTED=false
|
|
fi
|
|
DIST_OS=debian
|
|
;;
|
|
*)
|
|
echo "### Distribution not supported"
|
|
SUPPORTED=false
|
|
;;
|
|
esac
|
|
|
|
if [[ $SUPPORTED != "true" ]]; then
|
|
echo "This OS is currently not supported."
|
|
echo "Please install manually using https://docs.inventree.org/en/stable/start/install/"
|
|
echo "or check https://github.com/inventree/InvenTree/issues/3836 for packaging for your OS."
|
|
echo "If you think this is a bug please file an issue at"
|
|
echo "https://github.com/inventree/InvenTree/issues/new?template=install.yaml"
|
|
|
|
exit 1
|
|
fi
|
|
|
|
echo "### Installing required packages for download"
|
|
for pkg in $REQS; do
|
|
if dpkg-query -W -f'${Status}' "$pkg" 2>/dev/null | grep -q "ok installed"; then
|
|
true
|
|
else
|
|
do_call "sudo apt-get -yqq install $pkg"
|
|
fi
|
|
done
|
|
|
|
echo "### Getting and adding key"
|
|
curl -fsSL https://dl.packager.io/srv/$publisher/InvenTree/key | gpg --dearmor | tee /etc/apt/trusted.gpg.d/pkgr-inventree.gpg > /dev/null
|
|
echo "### Adding package source"
|
|
SOURCE_URL="deb [signed-by=/etc/apt/trusted.gpg.d/pkgr-inventree.gpg] https://dl.packager.io/srv/deb/$publisher/InvenTree/$source_url/$DIST_OS $DIST_VER main"
|
|
echo "$SOURCE_URL" | tee /etc/apt/sources.list.d/inventree.list > /dev/null
|
|
echo "### Updating package lists"
|
|
do_call "sudo apt-get update"
|
|
|
|
# Set up environment for install
|
|
echo "### Setting installer args"
|
|
if [[ $no_call ]]; then
|
|
do_call "export NO_CALL=true"
|
|
fi
|
|
|
|
echo "### Installing InvenTree"
|
|
do_call "sudo apt-get install inventree -y"
|
|
|
|
echo "### Install done!"
|
|
|
|
}
|
|
|
|
version_command() {
|
|
echo "$version"
|
|
}
|
|
|
|
install.sh_usage() {
|
|
printf "install.sh - Interactive installer for InvenTree\n\n"
|
|
|
|
printf "%s\n" "Usage:"
|
|
printf " install.sh [SOURCE] [PUBLISHER] [OPTIONS]\n"
|
|
printf " install.sh --help | -h\n"
|
|
printf " install.sh --version | -v\n"
|
|
echo
|
|
|
|
if [[ -n "$long_usage" ]]; then
|
|
printf "%s\n" "Options:"
|
|
|
|
printf " %s\n" "--no-call, -n"
|
|
printf " Do not call outside APIs (only functionally needed)\n"
|
|
echo
|
|
|
|
printf " %s\n" "--dry-run, -d"
|
|
printf " Dry run (do not install anything)\n"
|
|
echo
|
|
|
|
printf " %s\n" "--help, -h"
|
|
printf " Show this help\n"
|
|
echo
|
|
printf " %s\n" "--version, -v"
|
|
printf " Show version number\n"
|
|
echo
|
|
|
|
printf "%s\n" "Arguments:"
|
|
|
|
printf " %s\n" "SOURCE"
|
|
printf " Package source that should be used\n"
|
|
printf " %s\n" "Allowed: stable, master, main"
|
|
printf " %s\n" "Default: stable"
|
|
echo
|
|
|
|
printf " %s\n" "PUBLISHER"
|
|
printf " Publisher that should be used\n"
|
|
printf " %s\n" "Default: inventree"
|
|
echo
|
|
|
|
printf "%s\n" "Examples:"
|
|
printf " install\n"
|
|
printf " install master --no-call\n"
|
|
printf " install master matmair --dry-run\n"
|
|
echo
|
|
|
|
fi
|
|
}
|
|
|
|
normalize_input() {
|
|
local arg passthru flags
|
|
passthru=false
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
arg="$1"
|
|
if [[ $passthru == true ]]; then
|
|
input+=("$arg")
|
|
elif [[ $arg =~ ^(--[a-zA-Z0-9_\-]+)=(.+)$ ]]; then
|
|
input+=("${BASH_REMATCH[1]}")
|
|
input+=("${BASH_REMATCH[2]}")
|
|
elif [[ $arg =~ ^(-[a-zA-Z0-9])=(.+)$ ]]; then
|
|
input+=("${BASH_REMATCH[1]}")
|
|
input+=("${BASH_REMATCH[2]}")
|
|
elif [[ $arg =~ ^-([a-zA-Z0-9][a-zA-Z0-9]+)$ ]]; then
|
|
flags="${BASH_REMATCH[1]}"
|
|
for ((i = 0; i < ${#flags}; i++)); do
|
|
input+=("-${flags:i:1}")
|
|
done
|
|
elif [[ "$arg" == "--" ]]; then
|
|
passthru=true
|
|
input+=("$arg")
|
|
else
|
|
input+=("$arg")
|
|
fi
|
|
|
|
shift
|
|
done
|
|
}
|
|
|
|
parse_requirements() {
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
--version | -v)
|
|
version_command
|
|
exit
|
|
;;
|
|
|
|
--help | -h)
|
|
long_usage=yes
|
|
install.sh_usage
|
|
exit
|
|
;;
|
|
|
|
*)
|
|
break
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
action="root"
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
key="$1"
|
|
case "$key" in
|
|
|
|
--no-call | -n)
|
|
|
|
args['--no-call']=1
|
|
shift
|
|
;;
|
|
|
|
--dry-run | -d)
|
|
|
|
args['--dry-run']=1
|
|
shift
|
|
;;
|
|
|
|
-?*)
|
|
printf "invalid option: %s\n" "$key" >&2
|
|
exit 1
|
|
;;
|
|
|
|
*)
|
|
|
|
if [[ -z ${args['source']+x} ]]; then
|
|
args['source']=$1
|
|
shift
|
|
|
|
elif [[ -z ${args['publisher']+x} ]]; then
|
|
args['publisher']=$1
|
|
shift
|
|
else
|
|
printf "invalid argument: %s\n" "$key" >&2
|
|
exit 1
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
done
|
|
|
|
[[ -n ${args['source']:-} ]] || args['source']="stable"
|
|
[[ -n ${args['publisher']:-} ]] || args['publisher']="inventree"
|
|
|
|
if [[ -n ${args['source']:-} ]] && [[ ! ${args['source']:-} =~ ^(stable|master|main)$ ]]; then
|
|
printf "%s\n" "source must be one of: stable, master, main" >&2
|
|
exit 1
|
|
fi
|
|
|
|
}
|
|
|
|
initialize() {
|
|
declare -g version="2.0"
|
|
set -e
|
|
|
|
}
|
|
|
|
run() {
|
|
|
|
declare -g long_usage=''
|
|
declare -g -A args=()
|
|
declare -g -A deps=()
|
|
declare -g -a env_var_names=()
|
|
declare -g -a input=()
|
|
|
|
normalize_input "$@"
|
|
parse_requirements "${input[@]}"
|
|
|
|
case "$action" in
|
|
"root") root_command ;;
|
|
esac
|
|
}
|
|
|
|
command_line_args=("$@")
|
|
initialize
|
|
run "${command_line_args[@]}"
|