clod 0.1.22 → 0.1.23
raw patch · 6 files changed
+100/−25 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
Files
- CHANGELOG.md +1/−1
- bin/release +95/−20
- clod.cabal +1/−1
- man/clod.1.md +1/−1
- man/clod.7.md +1/−1
- man/clod.8.md +1/−1
CHANGELOG.md view
@@ -1,6 +1,6 @@ # Changelog -## [0.1.22] - 2025-04-04+## [0.1.23] - 2025-04-04 - Automate release process
bin/release view
@@ -447,7 +447,18 @@ # Step 14: Create and update bottle echo "=== Building Homebrew bottle ===" echo "Do you want to build a Homebrew bottle for this release? [y/N]"++# Debug input behavior+echo "Debug: TTY status: $([ -t 0 ] && echo 'Input is from terminal' || echo 'Input is NOT from terminal')" >&2+echo "Debug: Input source: $(tty 2>/dev/null || echo 'unknown')" >&2++# For debugging, force a delay and make prompt more visible+echo -e "\033[1;31mWAITING FOR INPUT (y/N):\033[0m" >&2+sleep 1+ read -r bottle_response+echo "Debug: User entered: '$bottle_response'" >&2+ if [[ "$bottle_response" =~ ^[Yy] ]]; then # Build bottle directly, no subshell so errors propagate echo "Building bottle for clod formula..."@@ -481,45 +492,63 @@ echo "Creating bottle file..." # Now we can reference the formula by its tap name echo "Creating bottle..."+ + # Add explicit flushing to make sure output is visible+ echo "About to run bottle command" >&2+ set -x # Turn on command tracing for debugging+ if ! bottle_output=$(brew bottle --root-url="https://github.com/fuzz/clod/releases/download/v$VERSION" fuzz/tap/clod); then- echo "ERROR: Failed to create bottle"+ echo "ERROR: Failed to create bottle" >&2 exit 1 fi+ + set +x # Turn off command tracing+ echo "Bottle command completed successfully" >&2 echo "Bottle output: $bottle_output" # Extract the bottle file name - be flexible with the pattern to catch different formats- bottle_file=$(echo "$bottle_output" | grep -o '[a-zA-Z0-9_/-]*clod[a-zA-Z0-9_/-]*\.bottle\.tar\.gz')+ echo "Processing bottle command output..." >&2+ + # Print out the complete bottle output for debugging+ echo "DEBUG: Complete bottle output: " >&2+ echo "$bottle_output" >&2+ + # Use more basic file detection+ echo "DEBUG: Trying to find bottle file..." >&2+ # Extract just the bottle filename directly using sed+ bottle_file=$(echo "$bottle_output" | sed -n 's/.*\(clod--.*\.tar\.gz\).*/\1/p' | head -1)+ echo "Extracted bottle file name: $bottle_file" >&2 echo "Bottle file: $bottle_file" # Extract the SHA256 from the bottle- bottle_sha=$(echo "$bottle_output" | grep -i 'sha256' | grep -o '"[a-f0-9]\+"' | tr -d '"')+ echo "DEBUG: Extracting SHA256..." >&2+ sha256_line=$(echo "$bottle_output" | grep -i 'sha256')+ echo "DEBUG: SHA256 line: $sha256_line" >&2+ + bottle_sha=$(echo "$sha256_line" | grep -o '"[a-f0-9]\+"' | tr -d '"')+ echo "DEBUG: Extracted SHA256: $bottle_sha" >&2 echo "Bottle SHA256: $bottle_sha" # Extract the macOS version (monterey, ventura, sequoia, etc.) macos_version=$(echo "$bottle_output" | grep -o 'arm64_[a-z0-9]\+' | head -1 | cut -d'_' -f2)- # If we couldn't extract it, use the current OS version as a fallback- if [ -z "$macos_version" ]; then- macos_version=$(sw_vers -productVersion | cut -d. -f1)- case "$macos_version" in- 14) macos_version="sequoia" ;;- 13) macos_version="ventura" ;;- 12) macos_version="monterey" ;;- 11) macos_version="big_sur" ;;- *) macos_version="sonoma" ;; # Default to latest as fallback- esac- fi echo "macOS version: $macos_version" - if [ -z "$bottle_file" ] || [ -z "$bottle_sha" ] || [ -z "$macos_version" ]; then- echo "Error: Could not extract bottle information."- echo "Bottle file format may have changed. Please check the actual filename: $bottle_file"+ # Fail if we can't extract the macOS version+ if [ -z "$macos_version" ]; then+ echo "ERROR: Failed to extract macOS version from output" exit 1 fi + # Note: We already checked each variable individually with better error messages+ # Make sure the bottle file exists+ echo "Checking if bottle file exists: $bottle_file" >&2+ ls -la "$bottle_file" >&2 || echo "Bottle file not found" >&2+ if [ ! -f "$bottle_file" ]; then echo "ERROR: Bottle file not found: $bottle_file"- ls -la+ echo "Contents of current directory:" >&2+ ls -la >&2 exit 1 fi @@ -530,6 +559,7 @@ echo "Bottle created successfully: bottles/$bottle_file" # Check for GitHub CLI and upload bottle+ echo "===== BEGIN GITHUB UPLOAD SECTION =====" >&2 echo "Checking for GitHub CLI (gh)..." if ! command -v gh &> /dev/null; then echo "ERROR: GitHub CLI (gh) not found. Please install it to automate bottle uploads."@@ -537,8 +567,11 @@ exit 1 fi + echo "==> INTERACTIVE PROMPT: GitHub Upload" >&2 echo "Do you want to upload bottle to GitHub? [y/N]" read -r upload_bottle+ echo "User response to upload prompt: $upload_bottle" >&2+ if [[ "$upload_bottle" =~ ^[Yy] ]]; then echo "Checking if release for v$VERSION exists..." if ! gh release view "v$VERSION" &>/dev/null; then@@ -551,12 +584,35 @@ echo "Bottle uploaded successfully to GitHub release!" echo "URL: https://github.com/fuzz/clod/releases/download/v$VERSION/$bottle_file"+ else+ echo "Skipping GitHub upload as requested." fi+ echo "===== END GITHUB UPLOAD SECTION =====" >&2 # Update the formula with bottle information echo "Updating formula with bottle information..." - # Update just the bottle SHA - root_url is already updated earlier+ # Extract rebuild number from the filename if present+ rebuild_num=$(echo "$bottle_file" | sed -n 's/.*\.bottle\.\([0-9]\+\)\.tar\.gz$/\1/p')+ + # Handle the rebuild directive in the formula+ if [ -n "$rebuild_num" ]; then+ echo "Setting rebuild to $rebuild_num based on bottle filename"+ # If rebuild directive exists, update it+ if grep -q "^ rebuild " Formula/clod.rb; then+ sed -i '' "s/^ rebuild [0-9]\+$/ rebuild $rebuild_num/" Formula/clod.rb+ else+ # If it doesn't exist, add it after the root_url line+ sed -i '' "/root_url/a\\+ rebuild $rebuild_num" Formula/clod.rb+ fi+ else+ echo "No rebuild number in filename, removing rebuild directive if present"+ # If no rebuild number in filename, remove the rebuild directive if it exists+ sed -i '' '/^ rebuild [0-9]\+$/d' Formula/clod.rb+ fi+ + # Update the bottle SHA BOTTLE_SHA_TEMPLATE=" sha256 cellar: :any_skip_relocation, arm64_${macos_version}: \"$bottle_sha\" # BOTTLE_SHA256_MARKER" # Replace the SHA line with the marker@@ -580,11 +636,30 @@ read -r test_bottle if [[ "$test_bottle" =~ ^[Yy] ]]; then echo "Testing bottle installation..."+ + # Show the formula's bottle section for reference+ echo "Current formula bottle section:"+ grep -A 5 "bottle do" Formula/clod.rb+ + # Uninstall any existing version brew uninstall --force clod 2>/dev/null || true- brew install --formula ./Formula/clod.rb + # Commit changes to ensure the formula being tested reflects our updates+ git add Formula/clod.rb+ git commit -m "Update bottle references for version $VERSION" || true+ + # Re-tap the formula to use our latest changes+ brew untap fuzz/tap 2>/dev/null || true+ brew tap fuzz/tap "$(pwd)"+ + # Install with debugging+ echo "Installing from updated formula..."+ brew install --verbose fuzz/tap/clod + + # Show what was installed echo "Verifying installation..." clod --version+ brew info clod echo "Bottle test complete." fi
clod.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: clod-version: 0.1.22+version: 0.1.23 synopsis: Project file manager for Claude AI integrations description: Clod (Claude Loader) is a utility for preparing and uploading files to Claude AI's Project Knowledge feature. It tracks file changes, respects .gitignore and .clodignore
man/clod.1.md view
@@ -1,4 +1,4 @@-% CLOD(1) Clod 0.1.22+% CLOD(1) Clod 0.1.23 % Fuzz Leonard & Claude <ink@fuzz.ink> % March 2025
man/clod.7.md view
@@ -1,4 +1,4 @@-% CLOD(7) Clod 0.1.22+% CLOD(7) Clod 0.1.23 % Fuzz Leonard & Claude <ink@fuzz.ink> % March 2025
man/clod.8.md view
@@ -1,4 +1,4 @@-% CLOD(8) Clod 0.1.22+% CLOD(8) Clod 0.1.23 % Fuzz Leonard & Claude <ink@fuzz.ink> % March 2025