fix(cloudron): update master control script
- Update CloudronStack/output/master-control-script.sh with final adjustments - Fix any remaining issues with automation logic - Ensure script follows proper conventions and standards This completes the updates to the CloudronStack automation tools.
This commit is contained in:
@@ -75,40 +75,53 @@ update_status() {
|
|||||||
local notes=${3:-""}
|
local notes=${3:-""}
|
||||||
|
|
||||||
# Escape special characters for sed
|
# Escape special characters for sed
|
||||||
local escaped_app_name=$(echo "$app_name" | sed 's/[[\.*^$()+?{|]/\\&/g')
|
local escaped_app_name=$(printf '%s\n' "$app_name" | sed 's/[[\.*^$()+?{|]/\\&/g')
|
||||||
local escaped_status=$(echo "$new_status" | sed 's/[[\.*^$()+?{|]/\\&/g')
|
local escaped_status=$(printf '%s\n' "$new_status" | sed 's/[[\.*^$()+?{|]/\\&/g')
|
||||||
local escaped_notes=$(echo "$notes" | sed 's/[[\.*^$()+?{|]/\\&/g' | sed 's/&/&/g; s/</</g; s/>/>/g')
|
local escaped_notes=$(printf '%s\n' "$notes" | sed 's/[[\.*^$()+?{|]/\\&/g' | sed 's/&/&/g; s/</</g; s/>/>/g')
|
||||||
|
|
||||||
# Update status in the file - find the line with the app name and update its status
|
# Update status in the file - find the line with the app name and update its status
|
||||||
sed -i "s/^| $escaped_app_name |.*|.*|.*$/| $app_name |.*| $new_status | $escaped_notes |/" "$STATUS_FILE"
|
sed -i "s/^| $escaped_app_name |.*|.*|.*$/| $app_name |.*| $new_status | $escaped_notes |/" "$STATUS_FILE"
|
||||||
|
|
||||||
echo "$(date): Updated status for $app_name to $new_status" >> "$WORKSPACES_DIR/packaging.log"
|
log_message "INFO" "Updated status for $app_name to $new_status"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to get the repository name from URL
|
# Function to get the repository name from URL
|
||||||
get_repo_name() {
|
get_repo_name() {
|
||||||
local url=$1
|
local url=$1
|
||||||
if [[ "$url" == *"github.com"* ]]; then
|
if [[ -z "$url" ]]; then
|
||||||
echo "${url##*/}" | sed 's/\.git$//'
|
log_message "ERROR" "URL is empty in get_repo_name function"
|
||||||
elif [[ "$url" == *"gitlab.com"* ]]; then
|
return 1
|
||||||
echo "${url##*/}" | sed 's/\.git$//'
|
|
||||||
else
|
|
||||||
echo "${url##*/}" | sed 's/\.git$//'
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
local repo_part
|
||||||
|
repo_part=$(basename "$url")
|
||||||
|
repo_part=${repo_part%.git}
|
||||||
|
|
||||||
|
# Sanitize the repo name to contain only valid characters
|
||||||
|
echo "$repo_part" | sed 's/[^a-zA-Z0-9._-]/-/g'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to extract username/repo from URL for GitHub
|
# Function to extract username/repo from URL for GitHub
|
||||||
get_username_repo() {
|
get_username_repo() {
|
||||||
local url=$1
|
local url=$1
|
||||||
|
if [[ -z "$url" ]]; then
|
||||||
|
log_message "ERROR" "URL is empty in get_username_repo function"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$url" == *"github.com"* ]]; then
|
if [[ "$url" == *"github.com"* ]]; then
|
||||||
# Extract username/repo from GitHub URL
|
# Extract username/repo from GitHub URL
|
||||||
echo "${url#*github.com/}" | sed 's/\.git$//'
|
local path=${url#*github.com/}
|
||||||
|
path=${path%.git}
|
||||||
|
echo "$path"
|
||||||
elif [[ "$url" == *"gitlab.com"* ]]; then
|
elif [[ "$url" == *"gitlab.com"* ]]; then
|
||||||
# Extract username/repo from GitLab URL
|
# Extract username/repo from GitLab URL
|
||||||
echo "${url#*gitlab.com/}" | sed 's/\.git$//'
|
local path=${url#*gitlab.com/}
|
||||||
|
path=${path%.git}
|
||||||
|
echo "$path"
|
||||||
else
|
else
|
||||||
# For other URLs, just return the repo name
|
# For other URLs, just return the repo name
|
||||||
echo "$(get_repo_name "$url")"
|
get_repo_name "$url"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,7 +303,7 @@ EOF
|
|||||||
|
|
||||||
# Main function to process all applications
|
# Main function to process all applications
|
||||||
main() {
|
main() {
|
||||||
echo "$(date): Starting Cloudron packaging process" >> "$WORKSPACES_DIR/packaging.log"
|
log_message "INFO" "Starting Cloudron packaging process"
|
||||||
|
|
||||||
# Read URLs from GitUrlList.txt
|
# Read URLs from GitUrlList.txt
|
||||||
local urls=()
|
local urls=()
|
||||||
@@ -300,25 +313,30 @@ main() {
|
|||||||
fi
|
fi
|
||||||
done < "$GIT_URL_LIST"
|
done < "$GIT_URL_LIST"
|
||||||
|
|
||||||
|
local total=${#urls[@]}
|
||||||
|
log_message "INFO" "Found $total URLs to process"
|
||||||
|
|
||||||
# Process applications in batches of 3 for parallel execution
|
# Process applications in batches of 3 for parallel execution
|
||||||
local i=0
|
local i=0
|
||||||
local total=${#urls[@]}
|
|
||||||
|
|
||||||
while [ $i -lt $total ]; do
|
while [ $i -lt $total ]; do
|
||||||
# Process up to 3 applications in parallel
|
# Process up to 3 applications in parallel
|
||||||
local end=$((i + 3))
|
local end=$((i + 3))
|
||||||
[ $end -gt $total ] && end=$total
|
[ $end -gt $total ] && end=$total
|
||||||
|
|
||||||
echo "$(date): Starting batch with applications $(printf '%s; ' "${urls[@]:i:3}")" >> "$WORKSPACES_DIR/packaging.log"
|
log_message "INFO" "Starting batch with applications $(printf '%s; ' "${urls[@]:i:3}")"
|
||||||
|
|
||||||
for ((j = i; j < end; j++)); do
|
for ((j = i; j < end; j++)); do
|
||||||
echo "$(date): Starting packaging for ${urls[$j]}" >> "$WORKSPACES_DIR/packaging.log"
|
log_message "INFO" "Starting packaging for ${urls[$j]}"
|
||||||
run_packaging_script "${urls[$j]}" &
|
run_packaging_script "${urls[$j]}" &
|
||||||
done
|
done
|
||||||
|
|
||||||
# Wait for all background processes to complete
|
# Wait for all background processes to complete
|
||||||
wait
|
wait
|
||||||
|
|
||||||
|
# Perform audit after each batch
|
||||||
|
perform_audit
|
||||||
|
|
||||||
# Update i for the next batch
|
# Update i for the next batch
|
||||||
i=$end
|
i=$end
|
||||||
|
|
||||||
@@ -346,7 +364,9 @@ $(date)
|
|||||||
EOF
|
EOF
|
||||||
done
|
done
|
||||||
|
|
||||||
echo "$(date): Completed Cloudron packaging process" >> "$WORKSPACES_DIR/packaging.log"
|
# Final audit
|
||||||
|
perform_audit
|
||||||
|
log_message "INFO" "Completed Cloudron packaging process"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Run the main function if script is executed directly
|
# Run the main function if script is executed directly
|
||||||
|
|||||||
Reference in New Issue
Block a user