|
|
|
@ -3,7 +3,7 @@
|
|
|
|
|
# Program name
|
|
|
|
|
PROGRAM_NAME="Octojpack"
|
|
|
|
|
PROGRAM_CODE="octojpack"
|
|
|
|
|
PROGRAM_VERSION="1.3.2"
|
|
|
|
|
PROGRAM_VERSION="1.3.4"
|
|
|
|
|
PROGRAM_V="1.3"
|
|
|
|
|
PROGRAM_URL="https://git.vdm.dev/octoleo/${PROGRAM_CODE}"
|
|
|
|
|
|
|
|
|
@ -680,12 +680,20 @@ function callGiteaAPI() {
|
|
|
|
|
local token="${5}"
|
|
|
|
|
local json_data
|
|
|
|
|
local message
|
|
|
|
|
local url
|
|
|
|
|
# each time reset
|
|
|
|
|
unset VDM_API_BUCKET
|
|
|
|
|
# give message
|
|
|
|
|
_echo "[info] Getting ${mode} information from ${owner}/${repo} repository."
|
|
|
|
|
# get the json data
|
|
|
|
|
json_data=$(curl -s -H "Authorization: token ${token}" -H 'accept: application/json' -X 'GET' "${api}/repos/${owner}/${repo}/${mode}")
|
|
|
|
|
# Check if mode is "tags"
|
|
|
|
|
if [ "${mode}" = "tags" ]; then
|
|
|
|
|
url="${api}/repos/${owner}/${repo}/${mode}?page=1"
|
|
|
|
|
else
|
|
|
|
|
url="${api}/repos/${owner}/${repo}/${mode}"
|
|
|
|
|
fi
|
|
|
|
|
# get the json data
|
|
|
|
|
json_data=$(curl -s -H "Authorization: token ${token}" -H 'accept: application/json' -X 'GET' "${url}")
|
|
|
|
|
# check for error
|
|
|
|
|
if [[ "${json_data}" =~ '"errors"' ]] && [[ "${json_data}" =~ '"message"' ]]; then
|
|
|
|
|
# get the message
|
|
|
|
@ -1004,8 +1012,6 @@ function setRepository() {
|
|
|
|
|
if $update_repo && [[ -z $(git status --porcelain) ]]; then
|
|
|
|
|
_echo "[info] No changes found in (${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}) repository"
|
|
|
|
|
else
|
|
|
|
|
# add user details
|
|
|
|
|
setUserDetails
|
|
|
|
|
# check if we must update or create repository
|
|
|
|
|
if $update_repo; then
|
|
|
|
|
# make API call
|
|
|
|
@ -1018,6 +1024,8 @@ function setRepository() {
|
|
|
|
|
else
|
|
|
|
|
message="Update"
|
|
|
|
|
fi
|
|
|
|
|
# add user details
|
|
|
|
|
setUserDetails
|
|
|
|
|
# get the repository last tag
|
|
|
|
|
makeGitCommit "${message}" "${VDM_PACKAGE_VERSION:-1.0.0}" "$VDM_TAG_EXIST" || return 28
|
|
|
|
|
# give little notice of progress
|
|
|
|
@ -1076,6 +1084,8 @@ function setGitRepository() {
|
|
|
|
|
_echo "[info] Initializing the (${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}) repository"
|
|
|
|
|
# initialize the repository
|
|
|
|
|
git init >/dev/null 2>&1 || return 29
|
|
|
|
|
# add user details
|
|
|
|
|
setUserDetails
|
|
|
|
|
# add the first commit
|
|
|
|
|
makeGitCommit "First Commit - ${VDM_PACKAGE_VERSION:-1.0.0}" "${VDM_PACKAGE_VERSION:-1.0.0}" >/dev/null 2>&1 || return 28
|
|
|
|
|
# little information of progress
|
|
|
|
@ -1173,56 +1183,46 @@ function getUniqueFileName() {
|
|
|
|
|
|
|
|
|
|
# get the version from the current directory
|
|
|
|
|
function _xml_version() {
|
|
|
|
|
local version
|
|
|
|
|
local len=100
|
|
|
|
|
local version=""
|
|
|
|
|
local shortest_depth=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.
|
|
|
|
|
local depth
|
|
|
|
|
|
|
|
|
|
# Find XML files excluding config.xml, access.xml, default.xml
|
|
|
|
|
while IFS= read -r file; do
|
|
|
|
|
# Ensure file does not match exclusions
|
|
|
|
|
case "$file" in
|
|
|
|
|
*config.xml|*access.xml|*default.xml) continue ;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
# Ensure it's an extension XML and not an update XML
|
|
|
|
|
grep -q '<extension' "$file" || 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
|
|
|
|
|
# Clear variables for each loop.
|
|
|
|
|
unset v
|
|
|
|
|
unset n
|
|
|
|
|
unset e
|
|
|
|
|
done < tmp
|
|
|
|
|
|
|
|
|
|
# Clear variables for each loop.
|
|
|
|
|
rm tmp
|
|
|
|
|
done < <(find . -type f -name '*.xml')
|
|
|
|
|
|
|
|
|
|
# If a version number was found and starts with v
|
|
|
|
|
if [ -z "$version" ]; then
|
|
|
|
|
# Return failure if no version is found
|
|
|
|
|
if [[ -z "$version" ]]; then
|
|
|
|
|
return 14
|
|
|
|
|
elif [[ $version != v* ]]; then
|
|
|
|
|
version="v${version}"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
VDM_ZIP_VERSION="$version"
|
|
|
|
|
export VDM_ZIP_VERSION
|
|
|
|
|
# Ensure version starts with 'v'
|
|
|
|
|
[[ $version != v* ]] && version="v${version}"
|
|
|
|
|
|
|
|
|
|
# Export version
|
|
|
|
|
export VDM_ZIP_VERSION="$version"
|
|
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
}
|
|
|
|
@ -1297,7 +1297,7 @@ function runUpdate() {
|
|
|
|
|
sudo mv "/usr/local/bin/${PROGRAM_CODE}" "/usr/local/bin/${PROGRAM_CODE}.bak"
|
|
|
|
|
fi
|
|
|
|
|
# pull the latest version. Master is always the latest
|
|
|
|
|
if sudo curl --fail -L "https://git.vdm.dev/api/v1/repos/octoleo/${PROGRAM_CODE}/raw/src/${PROGRAM_CODE}?ref=${branch:-master}" -o "/usr/local/bin/${PROGRAM_CODE}" 2>/dev/null; then
|
|
|
|
|
if sudo curl --fail -L "https://raw.githubusercontent.com/octoleo/${PROGRAM_CODE}/refs/heads/${branch:-master}/src/${PROGRAM_CODE}" -o "/usr/local/bin/${PROGRAM_CODE}" 2>/dev/null; then
|
|
|
|
|
# give success message
|
|
|
|
|
echo "[success] Update was successful."
|
|
|
|
|
# do we have a backup
|
|
|
|
|