|
36 | 36 |
|
37 | 37 | # --- Data Fetching and Formatting ------------------------------------------- |
38 | 38 |
|
| 39 | +# Helper function to safely get a value from jq |
| 40 | +get_json_value() { |
| 41 | + local json=$1 |
| 42 | + local key=$2 |
| 43 | + local value |
| 44 | + value=$(echo "$json" | jq -r "$key") |
| 45 | + if [ "$value" == "null" ] || [ -z "$value" ]; then |
| 46 | + echo "0" |
| 47 | + else |
| 48 | + echo "$value" |
| 49 | + fi |
| 50 | +} |
| 51 | + |
39 | 52 | fetch_repo_data() { |
40 | 53 | local repo_name=$1 |
41 | 54 | local api_url="https://api.github.com/repos/${GITHUB_USER}/${repo_name}" |
@@ -67,15 +80,20 @@ fetch_repo_data() { |
67 | 80 | local open_prs |
68 | 81 | local closed_prs |
69 | 82 |
|
70 | | - stars=$(echo "$api_response" | jq -r '.stargazers_count') |
71 | | - forks=$(echo "$api_response" | jq -r '.forks_count') |
72 | | - issues=$(echo "$api_response" | jq -r '.open_issues_count') |
73 | | - watchers=$(echo "$api_response" | jq -r '.subscribers_count') |
| 83 | + stars=$(get_json_value "$api_response" '.stargazers_count') |
| 84 | + forks=$(get_json_value "$api_response" '.forks_count') |
| 85 | + issues=$(get_json_value "$api_response" '.open_issues_count') |
| 86 | + watchers=$(get_json_value "$api_response" '.subscribers_count') |
74 | 87 |
|
75 | 88 | # Fetch PR counts using the search API to be more efficient |
76 | 89 | local search_api_url="https://api.github.com/search/issues?q=is:pr+repo:${GITHUB_USER}/${repo_name}" |
77 | | - open_prs=$(curl -s "${curl_headers[@]}" "${search_api_url}+is:open" | jq -r '.total_count') |
78 | | - closed_prs=$(curl -s "${curl_headers[@]}" "${search_api_url}+is:closed" | jq -r '.total_count') |
| 90 | + local open_prs_response |
| 91 | + local closed_prs_response |
| 92 | + open_prs_response=$(curl -s "${curl_headers[@]}" "${search_api_url}+is:open") |
| 93 | + closed_prs_response=$(curl -s "${curl_headers[@]}" "${search_api_url}+is:closed") |
| 94 | + |
| 95 | + open_prs=$(get_json_value "$open_prs_response" '.total_count') |
| 96 | + closed_prs=$(get_json_value "$closed_prs_response" '.total_count') |
79 | 97 |
|
80 | 98 | local now |
81 | 99 | now=$(date -u +%Y-%m-%dT%H:%M:%SZ) |
|
0 commit comments