2 Commits

Author SHA1 Message Date
54227596c2 Update version to 1.3.8 and improve XML version extraction logic.
Bump the program version number to 1.3.8. Refine the _xml_version function to handle case-insensitive checks for <extension> tags and ensure correct version extraction with enhanced depth evaluation for XML files. Simplify folder depth calculation and improve robustness of the logic.
2025-06-26 01:31:41 +02:00
f480b6f1f3 Update version to 1.3.7 and fix shell script logic handling
Incremented the program version to 1.3.7. Adjusted shell logic in repository handling for better compatibility and correctness by enforcing explicit boolean checks and improving syntax.
2025-04-23 20:22:24 +02:00

View File

@ -3,7 +3,7 @@
# Program name # Program name
PROGRAM_NAME="Octojpack" PROGRAM_NAME="Octojpack"
PROGRAM_CODE="octojpack" PROGRAM_CODE="octojpack"
PROGRAM_VERSION="1.3.6" PROGRAM_VERSION="1.3.8"
PROGRAM_V="1.3" PROGRAM_V="1.3"
PROGRAM_URL="https://git.vdm.dev/octoleo/${PROGRAM_CODE}" PROGRAM_URL="https://git.vdm.dev/octoleo/${PROGRAM_CODE}"
@ -995,7 +995,7 @@ function setRepository() {
# check if the repository exist on our gitea instance # check if the repository exist on our gitea instance
local update_repo local update_repo
# shellcheck disable=SC2015 # shellcheck disable=SC2015
if git ls-remote --exit-code --heads "git@${VDM_PACKAGE_URL}:${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" -q >/dev/null 2>&1; then if git ls-remote --exit-code --heads "git@${VDM_PACKAGE_URL}:${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" >/dev/null 2>&1; then
getExistingRepository || return 23 getExistingRepository || return 23
update_repo=true update_repo=true
else else
@ -1009,11 +1009,11 @@ function setRepository() {
# move all new files into repository # move all new files into repository
setRepositoryNewFiles || return 27 setRepositoryNewFiles || return 27
# check if we have changes # check if we have changes
if $update_repo && [[ -z $(git status --porcelain) ]]; then if [[ "${update_repo}" == true && -z $(git status --porcelain) ]]; then
_echo "[info] No changes found in (${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}) repository" _echo "[info] No changes found in (${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}) repository"
else else
# check if we must update or create repository # check if we must update or create repository
if $update_repo; then if [[ "${update_repo}" == true ]]; then
# make API call # make API call
callGiteaAPI "tags" "${VDM_PACKAGE_OWNER}" "${VDM_PACKAGE_REPO}" "${VDM_PACKAGE_API}" "${VDM_PACKAGE_TOKEN}" || return 28 callGiteaAPI "tags" "${VDM_PACKAGE_OWNER}" "${VDM_PACKAGE_REPO}" "${VDM_PACKAGE_API}" "${VDM_PACKAGE_TOKEN}" || return 28
# check if tag exists # check if tag exists
@ -1181,7 +1181,7 @@ function getUniqueFileName() {
echo "${hash:0:10}" echo "${hash:0:10}"
} }
# get the version from the current directory # Get the version from the current directory
function _xml_version() { function _xml_version() {
local version="" local version=""
local shortest_depth=100 local shortest_depth=100
@ -1196,22 +1196,31 @@ function _xml_version() {
*config.xml|*access.xml|*default.xml) continue ;; *config.xml|*access.xml|*default.xml) continue ;;
esac esac
# Ensure it's an extension XML and not an update XML # Ensure it's an extension XML (check if it has a <extension> root tag anywhere)
grep -q '<extension' "$file" || continue if ! grep -iq '^[[:space:]]*<extension[[:space:]>]' "$file"; then
continue
# Extract version if present in XML
v=$(sed -n 's|.*<version>\([^<]*\)</version>.*|\1|p' "$file")
# Determine folder depth (count slashes)
depth=$(awk -F'/' '{print NF}' <<< "$file")
# Choose the file with the shortest path (highest in folder stack)
if [[ -n "$v" && "$depth" -lt "$shortest_depth" ]]; then
shortest_depth="$depth"
version="$v"
fi fi
done < <(find . -type f -name '*.xml') # Extract version if present in XML
v=$(sed -n 's|.*<version>\(.*\)</version>.*|\1|p' "$file" | head -n1)
# Skip if no version found
[[ -z "$v" ]] && continue
# Determine folder depth (count slashes)
depth=$(tr -cd '/' <<< "$file" | wc -c)
# Choose the file with the shortest path (highest in folder stack)
if (( depth < shortest_depth )); then
shortest_depth=$depth
version=$v
# Since we want the highest-up file, and this is the shallowest so far,
# we can break early if it's at root level (depth 1)
(( depth <= 1 )) && break
fi
done < <(find . -type f -iname '*.xml')
# Return failure if no version is found # Return failure if no version is found
if [[ -z "$version" ]]; then if [[ -z "$version" ]]; then