Files
ghstats/entrypoint.sh
T
tiennm99 2943db667c feat: seed-based repo scanning + fork/private visibility flags
Replace the top-10-starred sampling with a seed list built from
contributionsCollection.commitContributionsByRepository, unioned across
every active contributionYear. Commit-history probes now land only on
repos where the user actually committed, covering all owned repos plus
forks and repos owned by others when allowed.

New visibility knobs (default off — public-facing READMEs stay
safe):
- -include-forks / include_forks    : include forked repos
- -include-private / include_private: include private repos (requires
                                      PAT with repo scope)

Compatibility:
- -top-repos default changed 10 → 0 (unlimited); still usable as a cap
  for fast local runs.
- commitHistoryQuery now takes $owner so probes can target forks or
  repos outside the user's ownership.
- FetchProfile now accepts FetchOptions; PublicRepos counts only repos
  that pass the visibility filter.

Seed-list approach mirrors github-profile-summary-cards' own repo
sourcing but keeps our byte-weighted commit attribution.
2026-04-18 22:01:26 +07:00

63 lines
1.8 KiB
Bash

#!/bin/sh
# Entrypoint for the ghstats GitHub Action.
# Inputs are passed via INPUT_* environment variables (set by the Action runtime).
# This script translates them into ghstats CLI flags and optionally commits the
# generated SVGs back to the repository.
set -eu
user="${INPUT_USER:-}"
token="${INPUT_TOKEN:-${GITHUB_TOKEN:-}}"
out="${INPUT_OUT:-output}"
themes="${INPUT_THEMES:-dracula}"
tz="${INPUT_TZ:-UTC}"
top_repos="${INPUT_TOP_REPOS:-0}"
commits_per_repo="${INPUT_COMMITS_PER_REPO:-500}"
include_forks="${INPUT_INCLUDE_FORKS:-false}"
include_private="${INPUT_INCLUDE_PRIVATE:-false}"
commit_changes="${INPUT_COMMIT_CHANGES:-false}"
commit_message="${INPUT_COMMIT_MESSAGE:-chore: update ghstats cards}"
commit_branch="${INPUT_COMMIT_BRANCH:-}"
author_name="${INPUT_AUTHOR_NAME:-github-actions[bot]}"
author_email="${INPUT_AUTHOR_EMAIL:-41898282+github-actions[bot]@users.noreply.github.com}"
if [ -z "$user" ]; then
echo "::error::input 'user' is required" >&2
exit 2
fi
mkdir -p "$out"
echo "Running ghstats for user=$user themes=$themes out=$out"
ghstats \
-user "$user" \
-token "$token" \
-out "$out" \
-themes "$themes" \
-tz "$tz" \
-top-repos "$top_repos" \
-commits-per-repo "$commits_per_repo" \
-include-forks="$include_forks" \
-include-private="$include_private"
if [ "$commit_changes" = "true" ]; then
workspace="${GITHUB_WORKSPACE:-/github/workspace}"
cd "$workspace"
git config --global --add safe.directory "$workspace"
git config user.name "$author_name"
git config user.email "$author_email"
if [ -n "$commit_branch" ]; then
git fetch origin "$commit_branch" || true
git checkout -B "$commit_branch"
fi
git add "$out"
if git diff --cached --quiet; then
echo "No card changes to commit."
else
git commit -m "$commit_message"
git push origin HEAD
fi
fi