mirror of
https://github.com/inventree/InvenTree.git
synced 2025-10-30 20:55:42 +00:00
refactor(backend): switch to empty buildpack for package, extend supported OS versions (#10705)
* 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
This commit is contained in:
@@ -2,10 +2,8 @@ name: inventree
|
|||||||
description: Open Source Inventory Management System
|
description: Open Source Inventory Management System
|
||||||
homepage: https://inventree.org
|
homepage: https://inventree.org
|
||||||
notifications: true
|
notifications: true
|
||||||
buildpack: https://github.com/mjmair/heroku-buildpack-python#v216-mjmair
|
buildpack: https://github.com/matmair/null-buildpack#master
|
||||||
env:
|
env:
|
||||||
- STACK=heroku-20
|
|
||||||
- DISABLE_COLLECTSTATIC=1
|
|
||||||
- INVENTREE_DB_ENGINE=sqlite3
|
- INVENTREE_DB_ENGINE=sqlite3
|
||||||
- INVENTREE_DB_NAME=database.sqlite3
|
- INVENTREE_DB_NAME=database.sqlite3
|
||||||
- INVENTREE_PLUGINS_ENABLED
|
- INVENTREE_PLUGINS_ENABLED
|
||||||
@@ -38,4 +36,7 @@ dependencies:
|
|||||||
- "libffi7 | libffi8"
|
- "libffi7 | libffi8"
|
||||||
targets:
|
targets:
|
||||||
ubuntu-20.04: true
|
ubuntu-20.04: true
|
||||||
|
ubuntu-22.04: true
|
||||||
|
ubuntu-24.04: true
|
||||||
debian-11: true
|
debian-11: true
|
||||||
|
debian-12: true
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
3.9.2
|
|
||||||
@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||||||
- Adds UI elements to "check" and "uncheck" sales order shipments in [#10654](https://github.com/inventree/InvenTree/pull/10654)
|
- Adds UI elements to "check" and "uncheck" sales order shipments in [#10654](https://github.com/inventree/InvenTree/pull/10654)
|
||||||
- Allow assigning project codes to order line items in [#10657](https://github.com/inventree/InvenTree/pull/10657)
|
- Allow assigning project codes to order line items in [#10657](https://github.com/inventree/InvenTree/pull/10657)
|
||||||
- Added support for webauthn login for the frontend in [#9729](https://github.com/inventree/InvenTree/pull/9729)
|
- Added support for webauthn login for the frontend in [#9729](https://github.com/inventree/InvenTree/pull/9729)
|
||||||
|
- Added support for Debian 12, Ubuntu 22.04 and Ubuntu 24.04 in the installer and package in [#10705](https://github.com/inventree/InvenTree/pull/10705)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# This script was generated by bashly 1.1.1 (https://bashly.dannyb.co)
|
# This script was generated by bashly 1.3.3 (https://bashly.dev)
|
||||||
# Modifying it manually is not recommended
|
# Modifying it manually is not recommended
|
||||||
|
|
||||||
if [[ "${BASH_VERSINFO:-0}" -lt 4 ]]; then
|
if ((BASH_VERSINFO[0] < 4 || (BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] < 2))); then
|
||||||
printf "bash version 4 or higher is required\n" >&2
|
printf "bash version 4.2 or higher is required\n" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -56,17 +56,16 @@ root_command() {
|
|||||||
get_distribution
|
get_distribution
|
||||||
echo "### Detected distribution: $OS $VER"
|
echo "### Detected distribution: $OS $VER"
|
||||||
SUPPORTED=true # is this OS supported?
|
SUPPORTED=true # is this OS supported?
|
||||||
NEEDS_LIBSSL1_1=false # does this OS need libssl1.1?
|
|
||||||
|
|
||||||
DIST_OS=${OS,,}
|
DIST_OS=${OS,,}
|
||||||
DIST_VER=$VER
|
DIST_VER=$VER
|
||||||
|
|
||||||
case "$OS" in
|
case "$OS" in
|
||||||
Ubuntu)
|
Ubuntu)
|
||||||
|
if [[ $VER == "24.04" ]]; then
|
||||||
|
SUPPORTED=true
|
||||||
if [[ $VER == "22.04" ]]; then
|
if [[ $VER == "22.04" ]]; then
|
||||||
SUPPORTED=true
|
SUPPORTED=true
|
||||||
NEEDS_LIBSSL1_1=true
|
|
||||||
DIST_VER="20.04"
|
|
||||||
elif [[ $VER == "20.04" ]]; then
|
elif [[ $VER == "20.04" ]]; then
|
||||||
SUPPORTED=true
|
SUPPORTED=true
|
||||||
else
|
else
|
||||||
@@ -75,7 +74,6 @@ root_command() {
|
|||||||
;;
|
;;
|
||||||
"Debian GNU/Linux" | "debian gnu/linux" | Raspbian)
|
"Debian GNU/Linux" | "debian gnu/linux" | Raspbian)
|
||||||
if [[ $VER == "12" ]]; then
|
if [[ $VER == "12" ]]; then
|
||||||
DIST_VER="11"
|
|
||||||
SUPPORTED=true
|
SUPPORTED=true
|
||||||
elif [[ $VER == "11" ]]; then
|
elif [[ $VER == "11" ]]; then
|
||||||
SUPPORTED=true
|
SUPPORTED=true
|
||||||
@@ -111,15 +109,6 @@ root_command() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ $NEEDS_LIBSSL1_1 == "true" ]]; then
|
|
||||||
echo "### Installing libssl1.1"
|
|
||||||
|
|
||||||
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
|
|
||||||
do_call "sudo apt-get update"
|
|
||||||
do_call "sudo apt-get install libssl1.1"
|
|
||||||
sudo rm /etc/apt/sources.list.d/focal-security.list
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "### Getting and adding key"
|
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
|
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"
|
echo "### Adding package source"
|
||||||
@@ -146,15 +135,7 @@ version_command() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
install.sh_usage() {
|
install.sh_usage() {
|
||||||
if [[ -n $long_usage ]]; then
|
printf "install.sh - Interactive installer for InvenTree\n\n"
|
||||||
printf "install.sh - Interactive installer for InvenTree\n"
|
|
||||||
echo
|
|
||||||
|
|
||||||
else
|
|
||||||
printf "install.sh - Interactive installer for InvenTree\n"
|
|
||||||
echo
|
|
||||||
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "%s\n" "Usage:"
|
printf "%s\n" "Usage:"
|
||||||
printf " install.sh [SOURCE] [PUBLISHER] [OPTIONS]\n"
|
printf " install.sh [SOURCE] [PUBLISHER] [OPTIONS]\n"
|
||||||
@@ -162,7 +143,7 @@ install.sh_usage() {
|
|||||||
printf " install.sh --version | -v\n"
|
printf " install.sh --version | -v\n"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
if [[ -n $long_usage ]]; then
|
if [[ -n "$long_usage" ]]; then
|
||||||
printf "%s\n" "Options:"
|
printf "%s\n" "Options:"
|
||||||
|
|
||||||
printf " %s\n" "--no-call, -n"
|
printf " %s\n" "--no-call, -n"
|
||||||
@@ -184,13 +165,13 @@ install.sh_usage() {
|
|||||||
|
|
||||||
printf " %s\n" "SOURCE"
|
printf " %s\n" "SOURCE"
|
||||||
printf " Package source that should be used\n"
|
printf " Package source that should be used\n"
|
||||||
printf " Allowed: stable, master, main\n"
|
printf " %s\n" "Allowed: stable, master, main"
|
||||||
printf " Default: stable\n"
|
printf " %s\n" "Default: stable"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
printf " %s\n" "PUBLISHER"
|
printf " %s\n" "PUBLISHER"
|
||||||
printf " Publisher that should be used\n"
|
printf " Publisher that should be used\n"
|
||||||
printf " Default: inventree\n"
|
printf " %s\n" "Default: inventree"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
printf "%s\n" "Examples:"
|
printf "%s\n" "Examples:"
|
||||||
@@ -203,11 +184,14 @@ install.sh_usage() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
normalize_input() {
|
normalize_input() {
|
||||||
local arg flags
|
local arg passthru flags
|
||||||
|
passthru=false
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
arg="$1"
|
arg="$1"
|
||||||
if [[ $arg =~ ^(--[a-zA-Z0-9_\-]+)=(.+)$ ]]; then
|
if [[ $passthru == true ]]; then
|
||||||
|
input+=("$arg")
|
||||||
|
elif [[ $arg =~ ^(--[a-zA-Z0-9_\-]+)=(.+)$ ]]; then
|
||||||
input+=("${BASH_REMATCH[1]}")
|
input+=("${BASH_REMATCH[1]}")
|
||||||
input+=("${BASH_REMATCH[2]}")
|
input+=("${BASH_REMATCH[2]}")
|
||||||
elif [[ $arg =~ ^(-[a-zA-Z0-9])=(.+)$ ]]; then
|
elif [[ $arg =~ ^(-[a-zA-Z0-9])=(.+)$ ]]; then
|
||||||
@@ -218,6 +202,9 @@ normalize_input() {
|
|||||||
for ((i = 0; i < ${#flags}; i++)); do
|
for ((i = 0; i < ${#flags}; i++)); do
|
||||||
input+=("-${flags:i:1}")
|
input+=("-${flags:i:1}")
|
||||||
done
|
done
|
||||||
|
elif [[ "$arg" == "--" ]]; then
|
||||||
|
passthru=true
|
||||||
|
input+=("$arg")
|
||||||
else
|
else
|
||||||
input+=("$arg")
|
input+=("$arg")
|
||||||
fi
|
fi
|
||||||
@@ -226,37 +213,11 @@ normalize_input() {
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
inspect_args() {
|
|
||||||
if ((${#args[@]})); then
|
|
||||||
readarray -t sorted_keys < <(printf '%s\n' "${!args[@]}" | sort)
|
|
||||||
echo args:
|
|
||||||
for k in "${sorted_keys[@]}"; do echo "- \${args[$k]} = ${args[$k]}"; done
|
|
||||||
else
|
|
||||||
echo args: none
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ((${#other_args[@]})); then
|
|
||||||
echo
|
|
||||||
echo other_args:
|
|
||||||
echo "- \${other_args[*]} = ${other_args[*]}"
|
|
||||||
for i in "${!other_args[@]}"; do
|
|
||||||
echo "- \${other_args[$i]} = ${other_args[$i]}"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
|
|
||||||
if ((${#deps[@]})); then
|
|
||||||
readarray -t sorted_keys < <(printf '%s\n' "${!deps[@]}" | sort)
|
|
||||||
echo
|
|
||||||
echo deps:
|
|
||||||
for k in "${sorted_keys[@]}"; do echo "- \${deps[$k]} = ${deps[$k]}"; done
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
parse_requirements() {
|
parse_requirements() {
|
||||||
|
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case "${1:-}" in
|
key="$1"
|
||||||
|
case "$key" in
|
||||||
--version | -v)
|
--version | -v)
|
||||||
version_command
|
version_command
|
||||||
exit
|
exit
|
||||||
@@ -301,11 +262,10 @@ parse_requirements() {
|
|||||||
*)
|
*)
|
||||||
|
|
||||||
if [[ -z ${args['source']+x} ]]; then
|
if [[ -z ${args['source']+x} ]]; then
|
||||||
|
|
||||||
args['source']=$1
|
args['source']=$1
|
||||||
shift
|
shift
|
||||||
elif [[ -z ${args['publisher']+x} ]]; then
|
|
||||||
|
|
||||||
|
elif [[ -z ${args['publisher']+x} ]]; then
|
||||||
args['publisher']=$1
|
args['publisher']=$1
|
||||||
shift
|
shift
|
||||||
else
|
else
|
||||||
@@ -321,7 +281,7 @@ parse_requirements() {
|
|||||||
[[ -n ${args['source']:-} ]] || args['source']="stable"
|
[[ -n ${args['source']:-} ]] || args['source']="stable"
|
||||||
[[ -n ${args['publisher']:-} ]] || args['publisher']="inventree"
|
[[ -n ${args['publisher']:-} ]] || args['publisher']="inventree"
|
||||||
|
|
||||||
if [[ -n ${args['source']} ]] && [[ ! ${args['source']} =~ ^(stable|master|main)$ ]]; then
|
if [[ -n ${args['source']:-} ]] && [[ ! ${args['source']:-} =~ ^(stable|master|main)$ ]]; then
|
||||||
printf "%s\n" "source must be one of: stable, master, main" >&2
|
printf "%s\n" "source must be one of: stable, master, main" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -329,18 +289,19 @@ parse_requirements() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
initialize() {
|
initialize() {
|
||||||
version="2.0"
|
declare -g version="2.0"
|
||||||
long_usage=''
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
run() {
|
run() {
|
||||||
declare -A args=()
|
|
||||||
declare -A deps=()
|
declare -g long_usage=''
|
||||||
declare -a other_args=()
|
declare -g -A args=()
|
||||||
declare -a input=()
|
declare -g -A deps=()
|
||||||
|
declare -g -a env_var_names=()
|
||||||
|
declare -g -a input=()
|
||||||
|
|
||||||
normalize_input "$@"
|
normalize_input "$@"
|
||||||
parse_requirements "${input[@]}"
|
parse_requirements "${input[@]}"
|
||||||
|
|
||||||
@@ -349,5 +310,6 @@ run() {
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
command_line_args=("$@")
|
||||||
initialize
|
initialize
|
||||||
run "$@"
|
run "${command_line_args[@]}"
|
||||||
|
|||||||
@@ -46,17 +46,16 @@ echo "### Installer for InvenTree - source: $publisher/$source_url"
|
|||||||
get_distribution
|
get_distribution
|
||||||
echo "### Detected distribution: $OS $VER"
|
echo "### Detected distribution: $OS $VER"
|
||||||
SUPPORTED=true # is this OS supported?
|
SUPPORTED=true # is this OS supported?
|
||||||
NEEDS_LIBSSL1_1=false # does this OS need libssl1.1?
|
|
||||||
|
|
||||||
DIST_OS=${OS,,}
|
DIST_OS=${OS,,}
|
||||||
DIST_VER=$VER
|
DIST_VER=$VER
|
||||||
|
|
||||||
case "$OS" in
|
case "$OS" in
|
||||||
Ubuntu)
|
Ubuntu)
|
||||||
|
if [[ $VER == "24.04" ]]; then
|
||||||
|
SUPPORTED=true
|
||||||
if [[ $VER == "22.04" ]]; then
|
if [[ $VER == "22.04" ]]; then
|
||||||
SUPPORTED=true
|
SUPPORTED=true
|
||||||
NEEDS_LIBSSL1_1=true
|
|
||||||
DIST_VER="20.04"
|
|
||||||
elif [[ $VER == "20.04" ]]; then
|
elif [[ $VER == "20.04" ]]; then
|
||||||
SUPPORTED=true
|
SUPPORTED=true
|
||||||
else
|
else
|
||||||
@@ -100,15 +99,6 @@ for pkg in $REQS; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ $NEEDS_LIBSSL1_1 == "true" ]]; then
|
|
||||||
echo "### Installing libssl1.1"
|
|
||||||
|
|
||||||
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
|
|
||||||
do_call "sudo apt-get update"
|
|
||||||
do_call "sudo apt-get install libssl1.1"
|
|
||||||
sudo rm /etc/apt/sources.list.d/focal-security.list
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "### Getting and adding key"
|
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
|
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"
|
echo "### Adding package source"
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ function detect_envs() {
|
|||||||
export INVENTREE_DB_HOST=${INVENTREE_DB_HOST:-samplehost}
|
export INVENTREE_DB_HOST=${INVENTREE_DB_HOST:-samplehost}
|
||||||
export INVENTREE_DB_PORT=${INVENTREE_DB_PORT:-123456}
|
export INVENTREE_DB_PORT=${INVENTREE_DB_PORT:-123456}
|
||||||
|
|
||||||
export INVENTREE_SITE_URL=${INVENTREE_SITE_URL}
|
export INVENTREE_SITE_URL=${INVENTREE_SITE_URL:-http://${INVENTREE_IP}}
|
||||||
|
|
||||||
export SETUP_CONF_LOADED=true
|
export SETUP_CONF_LOADED=true
|
||||||
fi
|
fi
|
||||||
@@ -327,7 +327,7 @@ function update_or_install() {
|
|||||||
|
|
||||||
# Run update as app user
|
# Run update as app user
|
||||||
echo "# POI12| Updating InvenTree"
|
echo "# POI12| Updating InvenTree"
|
||||||
sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && pip install wheel"
|
sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && pip install wheel python-dotenv"
|
||||||
sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && set -e && invoke update | sed -e 's/^/# POI12| u | /;'"
|
sudo -u ${APP_USER} --preserve-env=$SETUP_ENVS bash -c "cd ${APP_HOME} && set -e && invoke update | sed -e 's/^/# POI12| u | /;'"
|
||||||
|
|
||||||
# Make sure permissions are correct again
|
# Make sure permissions are correct again
|
||||||
@@ -407,13 +407,13 @@ function final_message() {
|
|||||||
echo -e "${SETUP_NGINX_FILE}"
|
echo -e "${SETUP_NGINX_FILE}"
|
||||||
echo -e "Try opening InvenTree with any of \n${INVENTREE_SITE_URL} , http://localhost/ or http://${INVENTREE_IP}/ \n"
|
echo -e "Try opening InvenTree with any of \n${INVENTREE_SITE_URL} , http://localhost/ or http://${INVENTREE_IP}/ \n"
|
||||||
# Print admin user data only if set
|
# Print admin user data only if set
|
||||||
if ["${INVENTREE_ADMIN_USER}" ]; then
|
if [ -n "${INVENTREE_ADMIN_USER}" ]; then
|
||||||
echo -e "Admin user data:"
|
echo -e "Admin user data:"
|
||||||
echo -e " Email: ${INVENTREE_ADMIN_EMAIL}"
|
echo -e " Email: ${INVENTREE_ADMIN_EMAIL}"
|
||||||
echo -e " Username: ${INVENTREE_ADMIN_USER}"
|
echo -e " Username: ${INVENTREE_ADMIN_USER}"
|
||||||
echo -e " Password: ${INVENTREE_ADMIN_PASSWORD}"
|
echo -e " Password: ${INVENTREE_ADMIN_PASSWORD}"
|
||||||
else
|
else
|
||||||
echo -e "No admin set during this operation - depending on the deployment method a admin user might have been created with an initial password saved in `${SETUP_ADMIN_PASSWORD_FILE}`"
|
echo -e "No admin set during this operation - depending on the deployment method a admin user might have been created with an initial password saved in `$SETUP_ADMIN_PASSWORD_FILE`"
|
||||||
fi
|
fi
|
||||||
echo -e "####################################################################################"
|
echo -e "####################################################################################"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,10 +33,10 @@ export SETUP_ADMIN_NOCREATION=${SETUP_ADMIN_NOCREATION:-false}
|
|||||||
# SETUP_PYTHON can be set to use a different python version
|
# SETUP_PYTHON can be set to use a different python version
|
||||||
|
|
||||||
# get base info
|
# get base info
|
||||||
|
detect_ip
|
||||||
detect_envs
|
detect_envs
|
||||||
detect_docker
|
detect_docker
|
||||||
detect_initcmd
|
detect_initcmd
|
||||||
detect_ip
|
|
||||||
detect_python
|
detect_python
|
||||||
|
|
||||||
# Check if we are updating and need to alert
|
# Check if we are updating and need to alert
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ title: InvenTree Installer
|
|||||||
## Installer
|
## Installer
|
||||||
The InvenTree installer automates the installation procedure for a production InvenTree server.
|
The InvenTree installer automates the installation procedure for a production InvenTree server.
|
||||||
|
|
||||||
Supported OSs are Debian 11 and Ubuntu 20.04 LTS.
|
Supported OSs are Debian 10, 11, 12 and Ubuntu 20.04 LTS, 22.04 LTS, 24.04 LTS.
|
||||||
|
|
||||||
### Quick Script
|
### Quick Script
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
# Dummy requirements file to trigger the package pipeline
|
|
||||||
# The backend requirements file is located in src/backend/requirements.txt
|
|
||||||
#
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
python-3.10.7
|
|
||||||
3
tasks.py
3
tasks.py
@@ -1728,7 +1728,7 @@ def frontend_download(
|
|||||||
# if clean, delete static/web directory
|
# if clean, delete static/web directory
|
||||||
if clean:
|
if clean:
|
||||||
shutil.rmtree(dest_path, ignore_errors=True)
|
shutil.rmtree(dest_path, ignore_errors=True)
|
||||||
dest_path.mkdir()
|
dest_path.mkdir(parents=True, exist_ok=True)
|
||||||
info(f'Cleaned directory: {dest_path}')
|
info(f'Cleaned directory: {dest_path}')
|
||||||
|
|
||||||
# unzip build to static folder
|
# unzip build to static folder
|
||||||
@@ -1792,6 +1792,7 @@ def frontend_download(
|
|||||||
# if zip file is specified, try to extract it directly
|
# if zip file is specified, try to extract it directly
|
||||||
if file:
|
if file:
|
||||||
handle_extract(file)
|
handle_extract(file)
|
||||||
|
static(c, frontend=False, skip_plugins=True)
|
||||||
return
|
return
|
||||||
|
|
||||||
# check arguments
|
# check arguments
|
||||||
|
|||||||
Reference in New Issue
Block a user