mirror of
https://github.com/tiennm99/ghstats.git
synced 2026-05-18 07:25:21 +00:00
643a15862b
- Add GraphQL client fetching profile, stats, language aggregation, and per-repo commit histograms for the productive-time heatmap. - Render real SVG cards (profile details, top languages, stats grid, weekday×hour heatmap) with XML escaping and thousands-formatted numbers. - Expand theme palette to 30 built-ins ported from github-readme-stats; add -list-themes, multi-theme rendering, and 'all' shortcut. - Package as Docker-based GitHub Action (action.yml, Dockerfile, entrypoint.sh) with optional auto-commit of generated cards. - Release workflow publishes GHCR image and cross-platform binaries on v* tags. - Unit tests cover rendering, XML escape, number formatting, language sort.
78 lines
2.0 KiB
Go
78 lines
2.0 KiB
Go
package github
|
|
|
|
// profileQuery pulls everything needed for the profile, stats and languages
|
|
// cards in one round trip. Repo pagination is handled by the caller if the
|
|
// user owns more than 100 repos.
|
|
const profileQuery = `
|
|
query($login: String!, $after: String) {
|
|
user(login: $login) {
|
|
id
|
|
login
|
|
name
|
|
bio
|
|
avatarUrl
|
|
company
|
|
location
|
|
websiteUrl
|
|
createdAt
|
|
followers { totalCount }
|
|
following { totalCount }
|
|
pullRequests { totalCount }
|
|
issues { totalCount }
|
|
repositoriesContributedTo(
|
|
first: 1
|
|
contributionTypes: [COMMIT, PULL_REQUEST, ISSUE, PULL_REQUEST_REVIEW]
|
|
) { totalCount }
|
|
contributionsCollection {
|
|
totalCommitContributions
|
|
totalIssueContributions
|
|
totalPullRequestContributions
|
|
totalPullRequestReviewContributions
|
|
totalRepositoryContributions
|
|
restrictedContributionsCount
|
|
contributionCalendar { totalContributions }
|
|
}
|
|
repositories(
|
|
first: 100
|
|
after: $after
|
|
ownerAffiliations: OWNER
|
|
isFork: false
|
|
orderBy: { field: STARGAZERS, direction: DESC }
|
|
) {
|
|
totalCount
|
|
pageInfo { hasNextPage endCursor }
|
|
nodes {
|
|
name
|
|
stargazerCount
|
|
forkCount
|
|
primaryLanguage { name color }
|
|
languages(first: 20, orderBy: { field: SIZE, direction: DESC }) {
|
|
edges {
|
|
size
|
|
node { name color }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}`
|
|
|
|
// commitHistoryQuery fetches commit timestamps in the default branch of one
|
|
// repo, filtered to commits authored by the target user. Used to build the
|
|
// productive-time heatmap.
|
|
const commitHistoryQuery = `
|
|
query($login: String!, $repo: String!, $userId: ID!, $since: GitTimestamp!, $after: String) {
|
|
repository(owner: $login, name: $repo) {
|
|
defaultBranchRef {
|
|
target {
|
|
... on Commit {
|
|
history(first: 100, after: $after, author: { id: $userId }, since: $since) {
|
|
pageInfo { hasNextPage endCursor }
|
|
nodes { committedDate }
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}`
|