#!/bin/bash # https://chat.openai.com/share/7469c7c3-aceb-4d80-aee5-62982e1f1538 # Output CSV Header echo '"Issue URL","Title","Days Since Creation","Days Since Last Update","Total Reactions","Assignee","Labels"' # Get the current date in YYYY-MM-DD format today=$(date +%Y-%m-%d) # Fetch only open issues (excluding PRs and closed issues) from the repository 'leanprover/lean4' issues=$(gh api repos/leanprover/lean4/issues --paginate --jq '.[] | select(.pull_request == null and .state == "open") | {url: .html_url, title: .title, created_at: (.created_at | split("T")[0]), updated_at: (.updated_at | split("T")[0]), number: .number, assignee: (.assignee.login // ""), labels: [.labels[].name] | join(",")}') # Process each JSON object echo "$issues" | while IFS= read -r issue; do # Extract fields from JSON url=$(echo "$issue" | jq -r '.url') title=$(echo "$issue" | jq -r '.title') created_at=$(echo "$issue" | jq -r '.created_at') updated_at=$(echo "$issue" | jq -r '.updated_at') issue_number=$(echo "$issue" | jq -r '.number') assignee=$(echo "$issue" | jq -r '.assignee') labels=$(echo "$issue" | jq -r '.labels') # Calculate days since creation and update using macOS compatible date calculation days_since_created=$(( ($(date -jf "%Y-%m-%d" "$today" +%s) - $(date -jf "%Y-%m-%d" "$created_at" +%s)) / 86400 )) days_since_updated=$(( ($(date -jf "%Y-%m-%d" "$today" +%s) - $(date -jf "%Y-%m-%d" "$updated_at" +%s)) / 86400 )) # Fetch the total number of reactions for each issue reaction_data=$(gh api repos/leanprover/lean4/issues/$issue_number/reactions --paginate --jq 'length' 2>&1) if [[ $reaction_data == *"Not Found"* ]]; then total_reactions="Error fetching reactions" else total_reactions=$reaction_data fi # Format output as CSV by escaping quotes and delimiting with commas echo "\"$url\",\"${title//\"/\"\"}\",\"$days_since_created\",\"$days_since_updated\",\"$total_reactions\",\"$assignee\",\"$labels\"" done