feat(toolbox): update Docker configuration and documentation
- Update ToolboxStack/output/toolbox-base/Dockerfile with latest container configurations - Update ToolboxStack/output/toolbox-base/PROMPT with enhanced AI collaboration instructions - Update ToolboxStack/output/toolbox-base/README.md with current documentation - Add ToolboxStack/collab/tool-additions/ directory for additional tool configurations - Update CloudronStack/output/master-control-script.sh with improved automation logic These changes enhance the developer workspace configuration and improve automation workflows across the project.
This commit is contained in:
		| @@ -5,6 +5,8 @@ | ||||
| # It runs three packaging projects in parallel and maintains status tracking | ||||
|  | ||||
| set -e  # Exit on any error | ||||
| set -u  # Exit on undefined variables | ||||
| set -o pipefail  # Exit on pipe failures | ||||
|  | ||||
| # Configuration | ||||
| SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" | ||||
| @@ -15,6 +17,7 @@ STATUS_FILE="$SCRIPT_DIR/collab/STATUS.md" | ||||
| GIT_URL_LIST="$SCRIPT_DIR/collab/GitUrlList.txt" | ||||
| HUMAN_HELP_DIR="$WORKSPACES_DIR/human-help-required" | ||||
| MAX_RETRIES=5 | ||||
| LOG_FILE="$WORKSPACES_DIR/packaging.log" | ||||
|  | ||||
| # Docker image prefix | ||||
| DOCKER_PREFIX="tsysdevstack-cloudron-buildtest-" | ||||
| @@ -25,6 +28,46 @@ source "$SCRIPT_DIR/package-functions.sh" | ||||
| # Create necessary directories | ||||
| mkdir -p "$ARTIFACTS_DIR" "$WORKSPACES_DIR" "$HUMAN_HELP_DIR" | ||||
|  | ||||
| # Function to log messages | ||||
| log_message() { | ||||
|     local level=$1 | ||||
|     local message=$2 | ||||
|     local timestamp=$(date '+%Y-%m-%d %H:%M:%S') | ||||
|     echo "[$timestamp] [$level] $message" >> "$LOG_FILE" | ||||
| } | ||||
|  | ||||
| # Function to perform audit of the packaging process | ||||
| perform_audit() { | ||||
|     log_message "INFO" "Starting audit process" | ||||
|      | ||||
|     # Count total, completed, failed, and in-progress applications | ||||
|     local total_count=$(grep -c "https://" "$GIT_URL_LIST" || echo 0) | ||||
|     local completed_count=$(grep -c "✅ COMPLETE" "$STATUS_FILE" || echo 0) | ||||
|     local failed_count=$(grep -c "🛑 FAILED" "$STATUS_FILE" || echo 0) | ||||
|     local in_progress_count=$(grep -c "🔄 IN PROGRESS" "$STATUS_FILE" || echo 0) | ||||
|     local pending_count=$((total_count - completed_count - failed_count - in_progress_count)) | ||||
|      | ||||
|     log_message "INFO" "Audit Summary - Total: $total_count, Completed: $completed_count, Failed: $failed_count, In Progress: $in_progress_count, Pending: $pending_count" | ||||
|      | ||||
|     # Check for artifacts directory health | ||||
|     local artifact_count=$(find "$ARTIFACTS_DIR" -mindepth 1 -maxdepth 1 -type d | wc -l) | ||||
|     log_message "INFO" "Found $artifact_count artifact directories in $ARTIFACTS_DIR" | ||||
|      | ||||
|     # Check for workspace directory health | ||||
|     local workspace_count=$(find "$WORKSPACES_DIR" -mindepth 1 -maxdepth 1 -type d | grep -v "human-help-required\|packaging.log" | wc -l) | ||||
|     log_message "INFO" "Found $workspace_count workspace directories in $WORKSPACES_DIR" | ||||
|      | ||||
|     # Check for human help requests | ||||
|     local help_requests=$(find "$HUMAN_HELP_DIR" -mindepth 1 -maxdepth 1 -name "STATUS-HumanHelp-*" | wc -l) | ||||
|     log_message "INFO" "Found $help_requests human help requests in $HUMAN_HELP_DIR" | ||||
|      | ||||
|     # Verify Docker images | ||||
|     local docker_images=$(docker images --format "table {{.Repository}}:{{.Tag}}" | grep "$DOCKER_PREFIX" | wc -l) | ||||
|     log_message "INFO" "Found $docker_images Docker images with prefix $DOCKER_PREFIX" | ||||
|      | ||||
|     log_message "INFO" "Audit process completed" | ||||
| } | ||||
|  | ||||
| # Function to update status in STATUS.md | ||||
| update_status() { | ||||
|     local app_name=$1 | ||||
| @@ -76,7 +119,6 @@ run_packaging_script() { | ||||
|     local username_repo=$(get_username_repo "$url") | ||||
|     local workspace_dir="$WORKSPACES_DIR/$repo_name" | ||||
|     local artifact_dir="$ARTIFACTS_DIR/$repo_name" | ||||
|     local packaging_script="$WORKSPACES_DIR/packaging-$repo_name.sh" | ||||
|      | ||||
|     echo "$(date): Starting packaging for $repo_name ($url)" >> "$WORKSPACES_DIR/packaging.log" | ||||
|      | ||||
| @@ -89,11 +131,25 @@ run_packaging_script() { | ||||
|     # Clone repository | ||||
|     if [ ! -d "$workspace_dir/repo" ] || [ -z "$(ls -A "$workspace_dir/repo")" ]; then | ||||
|         echo "Cloning $url to $workspace_dir/repo" | ||||
|         git clone "$url" "$workspace_dir/repo" | ||||
|         if ! git clone "$url" "$workspace_dir/repo"; then | ||||
|             echo "$(date): Failed to clone $url" >> "$WORKSPACES_DIR/packaging.log" | ||||
|             update_status "$repo_name" "🛑 FAILED" "Failed to clone repository" | ||||
|             return 1 | ||||
|         fi | ||||
|     else | ||||
|         # Update repository | ||||
|         echo "Updating $url in $workspace_dir/repo" | ||||
|         (cd "$workspace_dir/repo" && git fetch && git reset --hard origin/main 2>/dev/null || git reset --hard origin/master 2>/dev/null || git pull) | ||||
|         if ! (cd "$workspace_dir/repo" && git fetch && git reset --hard origin/main 2>/dev/null || git reset --hard origin/master 2>/dev/null || git pull); then | ||||
|             echo "$(date): Failed to update $url" >> "$WORKSPACES_DIR/packaging.log" | ||||
|             update_status "$repo_name" "🔄 IN PROGRESS" "Repo update failed, will retry with fresh clone" | ||||
|             # Remove the repo and try to clone again | ||||
|             rm -rf "$workspace_dir/repo" | ||||
|             if ! git clone "$url" "$workspace_dir/repo"; then | ||||
|                 echo "$(date): Failed to re-clone $url after update failure" >> "$WORKSPACES_DIR/packaging.log" | ||||
|                 update_status "$repo_name" "🛑 FAILED" "Failed to update or re-clone repository" | ||||
|                 return 1 | ||||
|             fi | ||||
|         fi | ||||
|     fi | ||||
|      | ||||
|     # Attempt packaging with retries | ||||
| @@ -103,21 +159,31 @@ run_packaging_script() { | ||||
|     while [ $attempt -le $MAX_RETRIES ] && [ $success -eq 0 ]; do | ||||
|         echo "$(date): Attempt $attempt/$MAX_RETRIES for $repo_name" >> "$WORKSPACES_DIR/packaging.log" | ||||
|          | ||||
|         # Run the packaging process (this would call the specific packaging function) | ||||
|         if package_application "$repo_name" "$username_repo" "$workspace_dir" "$artifact_dir"; then | ||||
|         # Capture the output and error of the packaging function | ||||
|         if package_application "$repo_name" "$username_repo" "$workspace_dir" "$artifact_dir" 2>"$workspace_dir/error.log"; then | ||||
|             success=1 | ||||
|             update_status "$repo_name" "✅ COMPLETE" "Packaged successfully on attempt $attempt" | ||||
|             echo "$(date): Successfully packaged $repo_name on attempt $attempt" >> "$WORKSPACES_DIR/packaging.log" | ||||
|         else | ||||
|             echo "$(date): Failed to package $repo_name on attempt $attempt" >> "$WORKSPACES_DIR/packaging.log" | ||||
|             cat "$workspace_dir/error.log" >> "$WORKSPACES_DIR/packaging.log" | ||||
|             ((attempt++)) | ||||
|         fi | ||||
|     done | ||||
|      | ||||
|     if [ $success -eq 0 ]; then | ||||
|         # Mark as failed and create human help request | ||||
|         update_status "$repo_name" "🛑 FAILED" "Failed after $MAX_RETRIES attempts" | ||||
|         touch "$HUMAN_HELP_DIR/STATUS-HumanHelp-$repo_name" | ||||
|         # Mark as failed and create human help request with more detailed information | ||||
|         local error_details=$(cat "$workspace_dir/error.log" | head -20 | sed 's/"/\\"/g' | tr '\n' ' ') | ||||
|         update_status "$repo_name" "🛑 FAILED" "Failed after $MAX_RETRIES attempts. Error: $error_details" | ||||
|         # Create a detailed human help file | ||||
|         cat > "$HUMAN_HELP_DIR/STATUS-HumanHelp-$repo_name" << EOF | ||||
| Application: $repo_name | ||||
| URL: $url | ||||
| Issue: Failed to package after $MAX_RETRIES attempts | ||||
| Date: $(date) | ||||
| Error Details: | ||||
| $(cat "$workspace_dir/error.log") | ||||
| EOF | ||||
|         echo "$(date): Marked $repo_name for human help after $MAX_RETRIES failed attempts" >> "$WORKSPACES_DIR/packaging.log" | ||||
|     fi | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user