3 Commits

Author SHA1 Message Date
288f45832c Update version to 1.3.5 and simplify Git URLs.
Bumped the program version to 1.3.5. Replaced [ssh://] prefix in Git URLs with a simplified [git@] format for consistency and cleaner usage. This ensures uniformity across Git operations.
2025-04-23 17:47:24 +02:00
3e0cdc9628 Update version to 1.3.4 and optimize XML version detection
Bumped the program version from 1.3.3 to 1.3.4. Simplified and improved the _xml_version function for better clarity, performance, and accuracy in finding the shortest depth XML version. Updated the URL structure for fetching the latest script during updates to align with GitHub's raw content.
2025-03-19 11:14:47 +02:00
ce947c5826 Add limit on data set returned when tags are used 2024-08-21 23:00:02 +02:00
2 changed files with 54 additions and 54 deletions

View File

@ -12,7 +12,7 @@ Linted by [#ShellCheck](https://github.com/koalaman/shellcheck)
---
# Install
```shell
$ sudo curl -L "https://git.vdm.dev/api/v1/repos/octoleo/octojpack/raw/src/octojpack" -o /usr/local/bin/octojpack
$ sudo curl -L "https://raw.githubusercontent.com/octoleo/octojpack/refs/heads/master/src/octojpack" -o /usr/local/bin/octojpack
$ sudo chmod +x /usr/local/bin/octojpack
```
---

View File

@ -3,7 +3,7 @@
# Program name
PROGRAM_NAME="Octojpack"
PROGRAM_CODE="octojpack"
PROGRAM_VERSION="1.3.2"
PROGRAM_VERSION="1.3.5"
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
@ -987,7 +995,7 @@ function setRepository() {
# check if the repository exist on our gitea instance
local update_repo
# shellcheck disable=SC2015
if git ls-remote "ssh://git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" -q >/dev/null 2>&1; then
if git ls-remote "git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" -q >/dev/null 2>&1; then
getExistingRepository || return 23
update_repo=true
else
@ -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
@ -1051,10 +1059,10 @@ function getExistingRepository() {
_echo "[info] Getting (${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}) repository"
if [[ "${VDM_PACKAGE_REPO_BRANCH}" == 'default' ]]; then
# clone the existing repository
git clone "ssh://git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" >/dev/null 2>&1 || return 23
git clone "git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" >/dev/null 2>&1 || return 23
else
# clone the existing repository
git clone -b "${VDM_PACKAGE_REPO_BRANCH:-master}" "ssh://git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" >/dev/null 2>&1 || return 23
git clone -b "${VDM_PACKAGE_REPO_BRANCH:-master}" "git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" >/dev/null 2>&1 || return 23
fi
# success
return 0
@ -1076,12 +1084,14 @@ 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
_echo "[info] Adding remote branch to (${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}) repository"
# add the remote branch
git remote add origin "ssh://git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" >/dev/null 2>&1 || return 29
git remote add origin "git@${VDM_PACKAGE_URL}/${VDM_PACKAGE_OWNER}/${VDM_PACKAGE_REPO}.git" >/dev/null 2>&1 || return 29
# Check if a specific branch is set and it is not 'default'
if [ "${VDM_PACKAGE_REPO_BRANCH}" != "default" ]; then
_echo "[info] Setting branch to ${VDM_PACKAGE_REPO_BRANCH}"
@ -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