Add option to get version from package.
This commit is contained in:
parent
8edfe5dc27
commit
bb0405ac5b
123
src/octojpack
123
src/octojpack
@ -3,8 +3,8 @@
|
|||||||
# Program name
|
# Program name
|
||||||
PROGRAM_NAME="Octojpack"
|
PROGRAM_NAME="Octojpack"
|
||||||
PROGRAM_CODE="octojpack"
|
PROGRAM_CODE="octojpack"
|
||||||
PROGRAM_VERSION="1.2.0"
|
PROGRAM_VERSION="1.3.0"
|
||||||
PROGRAM_V="1.2"
|
PROGRAM_V="1.3"
|
||||||
PROGRAM_URL="https://git.vdm.dev/octoleo/${PROGRAM_CODE}"
|
PROGRAM_URL="https://git.vdm.dev/octoleo/${PROGRAM_CODE}"
|
||||||
|
|
||||||
# Do some prep work
|
# Do some prep work
|
||||||
@ -20,10 +20,14 @@ command -v jq >/dev/null 2>&1 || {
|
|||||||
echo >&2 "[error] We require jq for $PROGRAM_NAME v${PROGRAM_V} to work, but it's not installed. Aborting."
|
echo >&2 "[error] We require jq for $PROGRAM_NAME v${PROGRAM_V} to work, but it's not installed. Aborting."
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
command -v unzip >/dev/null 2>&1 || {
|
||||||
|
echo >&2 "[error] We require unzip for $PROGRAM_NAME v${PROGRAM_V} to work, but it's not installed. Aborting."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
# main function ˘Ô≈ôﺣ
|
# main function ˘Ô≈ôﺣ
|
||||||
function main() {
|
function main() {
|
||||||
# check if we have project overides for the environment variables
|
# check if we have project overrides for the environment variables
|
||||||
# shellcheck disable=SC2015
|
# shellcheck disable=SC2015
|
||||||
[ -f "$VDM_PACKAGE_CONF_FILE" ] && getProjectEnvironment || {
|
[ -f "$VDM_PACKAGE_CONF_FILE" ] && getProjectEnvironment || {
|
||||||
echo >&2 "[error] We require config file with correct packaging details for $PROGRAM_NAME v${PROGRAM_V} to work, but it's not found in/at $VDM_PACKAGE_CONF_FILE. Aborting."
|
echo >&2 "[error] We require config file with correct packaging details for $PROGRAM_NAME v${PROGRAM_V} to work, but it's not found in/at $VDM_PACKAGE_CONF_FILE. Aborting."
|
||||||
@ -575,30 +579,52 @@ function getFileByReleases() {
|
|||||||
|
|
||||||
# get the file by key
|
# get the file by key
|
||||||
function getFileByKey() {
|
function getFileByKey() {
|
||||||
|
# set some local values
|
||||||
|
local folder_path
|
||||||
|
local zip_name
|
||||||
# get the name
|
# get the name
|
||||||
VDM_ZIP_NAME="${VDM_MODE}"
|
VDM_ZIP_NAME="${VDM_MODE}"
|
||||||
# get the message
|
# get the message
|
||||||
VDM_ZIP_MESSAGE="${VDM_MODE}"
|
VDM_ZIP_MESSAGE="${VDM_MODE}"
|
||||||
# get the name
|
# set the zip name
|
||||||
setValueFromJson "VDM_ZIP_VERSION" ".[0].name" "${VDM_API_BUCKET}" || {
|
zip_name="${VDM_OWNER}__${VDM_REPO}__${VDM_ZIP_NAME}.zip"
|
||||||
_echo "[error] Tag name not found in VDM_API_BUCKET. (but ignored since we are getting file by key)"
|
# set the folder path
|
||||||
VDM_ZIP_VERSION="${VDM_MODE}"
|
folder_path="${VDM_OWNER}_${VDM_REPO}_${VDM_ZIP_NAME}"
|
||||||
}
|
|
||||||
# download the zip file if not already set
|
# download the zip file if not already set
|
||||||
if [ ! -f "${VDM_PACKAGE_SRC_DIR}/${VDM_OWNER}__${VDM_REPO}__${VDM_ZIP_NAME}.zip" ]; then
|
if [ ! -f "${VDM_PACKAGE_SRC_DIR}/${zip_name}" ]; then
|
||||||
# give message
|
# give message
|
||||||
_echo "[info] Downloading the (${VDM_OWNER}-${VDM_REPO}-${VDM_ZIP_NAME}.zip) package."
|
_echo "[info] Downloading the (${VDM_OWNER}-${VDM_REPO}-${VDM_ZIP_NAME}.zip) package."
|
||||||
# download the zip file
|
# download the zip file
|
||||||
curl -s -H "Authorization: token ${VDM_TOKEN}" -L "${VDM_API}/repos/${VDM_OWNER}/${VDM_REPO}/archive/${VDM_ZIP_NAME}.zip" -o "${VDM_PACKAGE_SRC_DIR}/${VDM_OWNER}__${VDM_REPO}__${VDM_ZIP_NAME}.zip"
|
curl -s -H "Authorization: token ${VDM_TOKEN}" -L "${VDM_API}/repos/${VDM_OWNER}/${VDM_REPO}/archive/${VDM_ZIP_NAME}.zip" -o "${VDM_PACKAGE_SRC_DIR}/${zip_name}"
|
||||||
else
|
else
|
||||||
# zip already set
|
# zip already set
|
||||||
_echo "[error] ${VDM_OWNER}__${VDM_REPO}__${VDM_ZIP_NAME}.zip already set."
|
_echo "[error] ${zip_name} already set."
|
||||||
return 12
|
return 12
|
||||||
fi
|
fi
|
||||||
|
# unzip this zip file
|
||||||
|
_unzip "${zip_name}" "${folder_path}" || {
|
||||||
|
_echo "[error] We encountered and error, we could not unzip (${VDM_PACKAGE_SRC_DIR}/${zip_name}) in to (${VDM_PACKAGE_GIT_DIR}/${folder_path})"
|
||||||
|
# so we skip this package
|
||||||
|
return 12
|
||||||
|
}
|
||||||
|
# check if we have a folder to access
|
||||||
|
if ! cd "${VDM_PACKAGE_GIT_DIR}/${folder_path}"; then
|
||||||
|
_echo "[error] We could not open the package folder."
|
||||||
|
exit 13
|
||||||
|
fi
|
||||||
|
# get the version from the current directory
|
||||||
|
_xml_version || {
|
||||||
|
_echo "[error] Version name not found in package. (but ignored since we are getting file by key)"
|
||||||
|
VDM_ZIP_VERSION="${VDM_MODE}"
|
||||||
|
export VDM_ZIP_VERSION
|
||||||
|
}
|
||||||
|
# move out of the directory
|
||||||
|
cd "${VDM_MAIN_DIR}" || exit 13
|
||||||
|
# always remove the package folder again
|
||||||
|
rm -fr "${VDM_PACKAGE_GIT_DIR:?}/${folder_path:?}"
|
||||||
# move the tag values to global scope
|
# move the tag values to global scope
|
||||||
export VDM_ZIP_NAME
|
export VDM_ZIP_NAME
|
||||||
export VDM_ZIP_MESSAGE
|
export VDM_ZIP_MESSAGE
|
||||||
export VDM_ZIP_VERSION
|
|
||||||
# add file to xml
|
# add file to xml
|
||||||
setFileToXML
|
setFileToXML
|
||||||
# update the readme
|
# update the readme
|
||||||
@ -1142,6 +1168,62 @@ function getUniqueFileName() {
|
|||||||
echo "${hash:0:10}"
|
echo "${hash:0:10}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# get the version from the current directory
|
||||||
|
function _xml_version() {
|
||||||
|
local version
|
||||||
|
local len=100
|
||||||
|
local file
|
||||||
|
local v
|
||||||
|
local e
|
||||||
|
local p
|
||||||
|
# Create a list of all XML files in the current directory.
|
||||||
|
find . -type f -name '*.xml' > tmp
|
||||||
|
# Loop through the list of XML files.
|
||||||
|
while IFS= read -r file
|
||||||
|
do
|
||||||
|
# Skip XML files named config.xml, access.xml, or default.xml.
|
||||||
|
if [[ "$file" == *"config.xml" ]] || [[ "$file" == *"access.xml" ]] || [[ "$file" == *"default.xml" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Retrieve the version number from the XML file.
|
||||||
|
v=$(grep -o -P '(?<=\<version>).*?(?=\</version>)' "$file")
|
||||||
|
# Check if the file is an update server file (which should not be used).
|
||||||
|
e=$(grep -o -P '\<extension' "$file")
|
||||||
|
# If a version number have been retrieved, and the file is not an update server file, continue processing.
|
||||||
|
if [ -n "$v" ] && [ -n "$e" ]; then
|
||||||
|
# Count the folder depth.
|
||||||
|
# shellcheck disable=SC2001
|
||||||
|
p=$(echo "$file" | sed 's|[^/]||g')
|
||||||
|
# Keep the value of the shortest path.
|
||||||
|
if [[ "${#p}" -lt $len ]]; then
|
||||||
|
# Update the length.
|
||||||
|
len="${#p}"
|
||||||
|
# Set the version.
|
||||||
|
version="$v"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# Clear variables for each loop.
|
||||||
|
unset v
|
||||||
|
unset n
|
||||||
|
unset e
|
||||||
|
done < tmp
|
||||||
|
|
||||||
|
# Clear variables for each loop.
|
||||||
|
rm tmp
|
||||||
|
|
||||||
|
# If a version number was found and starts with v
|
||||||
|
if [ -z "$version" ]; then
|
||||||
|
return 14
|
||||||
|
elif [[ $version != v* ]]; then
|
||||||
|
version="v${version}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
VDM_ZIP_VERSION="$version"
|
||||||
|
export VDM_ZIP_VERSION
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
# give the echo messages
|
# give the echo messages
|
||||||
# only if not set to be quiet
|
# only if not set to be quiet
|
||||||
function _echo() {
|
function _echo() {
|
||||||
@ -1150,6 +1232,23 @@ function _echo() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Unzip a zip file
|
||||||
|
function _unzip() {
|
||||||
|
# Set some locals.
|
||||||
|
local zip_name="${1}"
|
||||||
|
local folder_name="${2}"
|
||||||
|
|
||||||
|
# Unzip the contents of the `zip_name` file to the specified `folder_name`.
|
||||||
|
# Use process substitution to pass the output of `unzip` to `cat`.
|
||||||
|
if cat < <(unzip "${VDM_PACKAGE_SRC_DIR}/$zip_name" -d "${VDM_PACKAGE_GIT_DIR}/$folder_name") >/dev/null 2>&1; then
|
||||||
|
_echo "[info] Successfully unzipped the package ($zip_name)"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Return 1 if the unzip operation was unsuccessful.
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
# uninstalls the octojpack program.
|
# uninstalls the octojpack program.
|
||||||
function runUninstall() {
|
function runUninstall() {
|
||||||
# now remove the script
|
# now remove the script
|
||||||
|
Loading…
Reference in New Issue
Block a user