mirror of
https://github.com/jamesmurdza/awesome-ai-devtools.git
synced 2026-07-26 05:50:52 +02:00
Remove commit date fetching scripts
Keep only the CSV results, remove the scripts that generated them. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,219 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Script to get the most recent commit date from each GitHub repository
|
|
||||||
# Uses GitHub API via curl
|
|
||||||
|
|
||||||
# Array of GitHub repos (owner/repo format)
|
|
||||||
repos=(
|
|
||||||
"stravu/crystal"
|
|
||||||
"mutableai/monitors4codegen"
|
|
||||||
"DeepMyst/Mysti"
|
|
||||||
"onllm-dev/onUI"
|
|
||||||
"cafeTechne/antigravity-link-extension"
|
|
||||||
"Pythagora-io/gpt-pilot"
|
|
||||||
"AntonOsika/gpt-engineer"
|
|
||||||
"smol-ai/developer"
|
|
||||||
"kill136/axon"
|
|
||||||
"arctic-cli/interface"
|
|
||||||
"JuliusBrussee/blueprint"
|
|
||||||
"manaflow-ai/cmux"
|
|
||||||
"modern-tooling/aloc"
|
|
||||||
"belingud/gptcomet"
|
|
||||||
"BrodaNoel/cmd-ai"
|
|
||||||
"baz-scm/baz-cli"
|
|
||||||
"arimxyer/models"
|
|
||||||
"Shashwat-Gupta57/Jctx"
|
|
||||||
"fengshao1227/ccg-workflow"
|
|
||||||
"yjcho9317/aiignore-cli"
|
|
||||||
"lasantosr/intelli-shell"
|
|
||||||
"iwe-org/iwe"
|
|
||||||
"inevolin/resume-cli"
|
|
||||||
"Houseofmvps/codesight"
|
|
||||||
"Lucas2944/prpack"
|
|
||||||
"oxgeneral/ORCH"
|
|
||||||
"muvon/octomind"
|
|
||||||
"stackblitz-labs/bolt.diy"
|
|
||||||
"kurtnebiev-elvis4/ai-vertical-saas-gen"
|
|
||||||
"melih-unsal/DemoGPT"
|
|
||||||
"maroondlabs/sourcebook"
|
|
||||||
"ashfordeOU/grasp"
|
|
||||||
"reflex-search/reflex"
|
|
||||||
"LeonardoCardoso/Poirot"
|
|
||||||
"btangonan/anima"
|
|
||||||
"agentfm-ai/agent-fm"
|
|
||||||
"Moresl/cchub"
|
|
||||||
"Charlie85270/Dorothy"
|
|
||||||
"johannesjo/parallel-code"
|
|
||||||
"im4codes/imcodes"
|
|
||||||
"larryxiao/openquack"
|
|
||||||
"qodo-ai/pr-agent"
|
|
||||||
"Nayjest/Gito"
|
|
||||||
"tarmojussila/zai-code-review"
|
|
||||||
"tarmojussila/minimax-code-review"
|
|
||||||
"indoor47/claude-pr-reviewer"
|
|
||||||
"Lucas2944/prpack-action"
|
|
||||||
"codeintegrity-ai/mutahunter"
|
|
||||||
"AnswerLayer/sniffbench"
|
|
||||||
"marcus/sidecar"
|
|
||||||
"pacificstudio/openase"
|
|
||||||
"mindfold-ai/Trellis"
|
|
||||||
"0xranx/golembot"
|
|
||||||
"shep-ai/cli"
|
|
||||||
"chernistry/bernstein"
|
|
||||||
"avelikiy/great_cto"
|
|
||||||
"kagan-sh/kagan"
|
|
||||||
"LucasDuys/forge"
|
|
||||||
"swarmclawai/swarmclaw"
|
|
||||||
"cueapi/cueapi-core"
|
|
||||||
"samfoy/pi-ralph"
|
|
||||||
"stacklok/brood-box"
|
|
||||||
"Th0rgal/openagent"
|
|
||||||
"metalbear-co/mirrord"
|
|
||||||
"metalbear-co/skills"
|
|
||||||
"agenttier/agenttier"
|
|
||||||
"nedcodes-ok/cursor-doctor"
|
|
||||||
"YawLabs/ctxlint"
|
|
||||||
"juyterman1000/entroly"
|
|
||||||
"rely-ai-org/caliber"
|
|
||||||
"adhenawer/claude-snapshot"
|
|
||||||
"mzmmoazam/claude-overlay"
|
|
||||||
"nicepkg/vsync"
|
|
||||||
"nedcodes-ok/rule-porter"
|
|
||||||
"GeiserX/LynxPrompt"
|
|
||||||
"conduit8/conduit8"
|
|
||||||
"henu-wang/tokrepo"
|
|
||||||
"Wolfe-Jam/faf-cli"
|
|
||||||
"1broseidon/promptext"
|
|
||||||
"sagarmk/beacon-plugin"
|
|
||||||
"nedcodes-ok/rule-gen"
|
|
||||||
"samfoy/pi-steering-hooks"
|
|
||||||
"dwgoldie/gestalt"
|
|
||||||
"spartan-stratos/spartan-ai-toolkit"
|
|
||||||
"nex-crm/nex-as-a-skill"
|
|
||||||
"koriyoshi2041/agentify"
|
|
||||||
"fastxyz/skill-optimizer"
|
|
||||||
"kubestellar/console"
|
|
||||||
"sisyphusse1-ops/claude-code-pro-pack"
|
|
||||||
"sisyphusse1-ops/cc-audit"
|
|
||||||
"Fr-e-d/GAAI-framework"
|
|
||||||
"junhoyeo/tokscale"
|
|
||||||
"melagiri/code-insights"
|
|
||||||
"luoyuctl/agenttrace"
|
|
||||||
"onllm-dev/onwatch"
|
|
||||||
"Astro-Han/claude-lens"
|
|
||||||
"O0000-code/cc-tempo"
|
|
||||||
"lunacompsia-oss/ai-coding-tools-pricing"
|
|
||||||
"jeongwookie/WhereMyTokens"
|
|
||||||
"dwylq/aicost"
|
|
||||||
"CodeShuX/tokenwise"
|
|
||||||
"HexmosTech/git-lrc"
|
|
||||||
"pmusolino/AI-Git-Narrator"
|
|
||||||
"eli64s/readme-ai"
|
|
||||||
"johnxie/awesome-code-docs"
|
|
||||||
"survivorforge/cursor-rules"
|
|
||||||
"dohko04/awesome-ai-prompts-for-devs"
|
|
||||||
"jnMetaCode/ai-coding-guide"
|
|
||||||
"nowork-studio/awesome-ai-startups"
|
|
||||||
"jamesmurdza/awesome-ai-devtools"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Output file
|
|
||||||
output_file="/home/daytona/project/repo_commit_dates.csv"
|
|
||||||
|
|
||||||
# Write CSV header
|
|
||||||
echo "Repository,Last Commit Date,Days Since Last Commit,Status" > "$output_file"
|
|
||||||
|
|
||||||
echo "Fetching commit dates for ${#repos[@]} repositories..."
|
|
||||||
echo "This may take a few minutes..."
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Counter for progress
|
|
||||||
count=0
|
|
||||||
total=${#repos[@]}
|
|
||||||
|
|
||||||
for repo in "${repos[@]}"; do
|
|
||||||
count=$((count + 1))
|
|
||||||
|
|
||||||
# Get the latest commit date using GitHub API via curl
|
|
||||||
response=$(curl -s -H "Accept: application/vnd.github.v3+json" \
|
|
||||||
"https://api.github.com/repos/$repo/commits?per_page=1" 2>&1)
|
|
||||||
|
|
||||||
# Check for rate limiting
|
|
||||||
if echo "$response" | grep -q "rate limit"; then
|
|
||||||
echo "$repo,RATE_LIMITED,N/A,Rate limited" >> "$output_file"
|
|
||||||
echo "[$count/$total] $repo: RATE LIMITED"
|
|
||||||
sleep 2
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for not found
|
|
||||||
if echo "$response" | grep -q '"message": "Not Found"'; then
|
|
||||||
echo "$repo,NOT_FOUND,N/A,Repository not found" >> "$output_file"
|
|
||||||
echo "[$count/$total] $repo: NOT FOUND"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for empty repo
|
|
||||||
if echo "$response" | grep -q '"message": "Git Repository is empty"'; then
|
|
||||||
echo "$repo,EMPTY,N/A,Empty repository" >> "$output_file"
|
|
||||||
echo "[$count/$total] $repo: EMPTY REPO"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Extract the commit date using jq
|
|
||||||
commit_date=$(echo "$response" | jq -r '.[0].commit.committer.date // empty' 2>/dev/null)
|
|
||||||
|
|
||||||
if [ -n "$commit_date" ] && [ "$commit_date" != "null" ]; then
|
|
||||||
# Format the date nicely (handle ISO 8601 format)
|
|
||||||
formatted_date=$(date -d "$commit_date" '+%Y-%m-%d %H:%M:%S' 2>/dev/null || echo "$commit_date")
|
|
||||||
|
|
||||||
# Calculate days since last commit
|
|
||||||
commit_timestamp=$(date -d "$commit_date" '+%s' 2>/dev/null)
|
|
||||||
current_timestamp=$(date '+%s')
|
|
||||||
if [ -n "$commit_timestamp" ]; then
|
|
||||||
days_ago=$(( (current_timestamp - commit_timestamp) / 86400 ))
|
|
||||||
else
|
|
||||||
days_ago="N/A"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$repo,$formatted_date,$days_ago,OK" >> "$output_file"
|
|
||||||
echo "[$count/$total] $repo: $formatted_date ($days_ago days ago)"
|
|
||||||
else
|
|
||||||
echo "$repo,NO_COMMITS,N/A,No commits found" >> "$output_file"
|
|
||||||
echo "[$count/$total] $repo: NO COMMITS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Small delay to avoid rate limiting (GitHub allows 60 requests/hour unauthenticated)
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "================================================"
|
|
||||||
echo "Results saved to: $output_file"
|
|
||||||
echo "================================================"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Print summary statistics
|
|
||||||
echo "Summary Statistics:"
|
|
||||||
echo "-------------------"
|
|
||||||
total_ok=$(grep -c ",OK$" "$output_file" 2>/dev/null || echo "0")
|
|
||||||
total_not_found=$(grep -c "NOT_FOUND" "$output_file" 2>/dev/null || echo "0")
|
|
||||||
total_rate_limited=$(grep -c "RATE_LIMITED" "$output_file" 2>/dev/null || echo "0")
|
|
||||||
echo "Successfully fetched: $total_ok"
|
|
||||||
echo "Not found: $total_not_found"
|
|
||||||
echo "Rate limited: $total_rate_limited"
|
|
||||||
|
|
||||||
# Show most recently updated repos
|
|
||||||
echo ""
|
|
||||||
echo "Top 10 Most Recently Updated Repos:"
|
|
||||||
echo "------------------------------------"
|
|
||||||
grep ",OK$" "$output_file" | sort -t',' -k2 -r | head -10 | while IFS=',' read -r repo date days status; do
|
|
||||||
echo "$date - $repo ($days days ago)"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Top 10 Least Recently Updated Repos:"
|
|
||||||
echo "-------------------------------------"
|
|
||||||
grep ",OK$" "$output_file" | sort -t',' -k3 -n -r | head -10 | while IFS=',' read -r repo date days status; do
|
|
||||||
echo "$date - $repo ($days days ago)"
|
|
||||||
done
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Script to get repos older than 30 days with their star counts
|
|
||||||
# Uses GitHub API via curl
|
|
||||||
|
|
||||||
# Read repos from CSV that are more than 30 days old
|
|
||||||
output_file="/home/daytona/project/old_repos_with_stars.csv"
|
|
||||||
|
|
||||||
echo "Repository,Last Commit Date,Days Since Last Commit,Stars" > "$output_file"
|
|
||||||
|
|
||||||
echo "Fetching star counts for repos with commits older than 30 days..."
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Get repos older than 30 days from the CSV
|
|
||||||
old_repos=$(awk -F',' 'NR>1 && $3 != "N/A" && $3 > 30 {print $1","$2","$3}' /home/daytona/project/repo_commit_dates.csv)
|
|
||||||
|
|
||||||
count=0
|
|
||||||
total=$(echo "$old_repos" | wc -l)
|
|
||||||
|
|
||||||
while IFS=',' read -r repo date days; do
|
|
||||||
if [ -z "$repo" ]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
|
|
||||||
count=$((count + 1))
|
|
||||||
|
|
||||||
# Get star count from GitHub API
|
|
||||||
response=$(curl -s -H "Accept: application/vnd.github.v3+json" \
|
|
||||||
"https://api.github.com/repos/$repo" 2>&1)
|
|
||||||
|
|
||||||
# Check for rate limiting
|
|
||||||
if echo "$response" | grep -q "rate limit"; then
|
|
||||||
stars="RATE_LIMITED"
|
|
||||||
echo "[$count/$total] $repo: RATE LIMITED"
|
|
||||||
sleep 2
|
|
||||||
elif echo "$response" | grep -q '"message": "Not Found"'; then
|
|
||||||
stars="NOT_FOUND"
|
|
||||||
echo "[$count/$total] $repo: NOT FOUND"
|
|
||||||
else
|
|
||||||
stars=$(echo "$response" | jq -r '.stargazers_count // "N/A"' 2>/dev/null)
|
|
||||||
echo "[$count/$total] $repo: $date ($days days ago) - ⭐ $stars stars"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "$repo,$date,$days,$stars" >> "$output_file"
|
|
||||||
|
|
||||||
# Small delay to avoid rate limiting
|
|
||||||
sleep 1
|
|
||||||
done <<< "$old_repos"
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "================================================"
|
|
||||||
echo "Results saved to: $output_file"
|
|
||||||
echo "================================================"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
# Sort and display results
|
|
||||||
echo "Repos older than 30 days, sorted by days since last commit:"
|
|
||||||
echo "============================================================"
|
|
||||||
printf "%-45s %-22s %8s %8s\n" "Repository" "Last Commit" "Days" "Stars"
|
|
||||||
echo "-------------------------------------------------------------------------------------------------------------"
|
|
||||||
|
|
||||||
sort -t',' -k3 -n -r "$output_file" | tail -n +2 | while IFS=',' read -r repo date days stars; do
|
|
||||||
printf "%-45s %-22s %8s %8s\n" "$repo" "$date" "$days" "$stars"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo "Same data sorted by star count (descending):"
|
|
||||||
echo "============================================="
|
|
||||||
printf "%-45s %-22s %8s %8s\n" "Repository" "Last Commit" "Days" "Stars"
|
|
||||||
echo "-------------------------------------------------------------------------------------------------------------"
|
|
||||||
|
|
||||||
sort -t',' -k4 -n -r "$output_file" | tail -n +2 | head -30 | while IFS=',' read -r repo date days stars; do
|
|
||||||
printf "%-45s %-22s %8s %8s\n" "$repo" "$date" "$days" "$stars"
|
|
||||||
done
|
|
||||||
Reference in New Issue
Block a user