mirror of
https://github.com/tiennm99/ghglance.git
synced 2026-10-12 12:13:52 +00:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9e0387f307 |
No files matched your search
@@ -0,0 +1,52 @@
|
||||
# ghstats
|
||||
|
||||
Single-binary Go CLI that renders GitHub profile cards as SVG, wrapped by a
|
||||
published GitHub Action. `main.go` parses flags → `internal/github` fetches →
|
||||
`internal/card` renders → `internal/theme` supplies palettes.
|
||||
|
||||
## Adding or changing a config knob
|
||||
|
||||
A new flag, input, or default is not done when the code compiles. Every knob
|
||||
has a surface in five places, and a change that lands in some but not all of
|
||||
them ships a half-wired feature or a README that lies:
|
||||
|
||||
1. `main.go` — the CLI flag
|
||||
2. `action.yml` — the matching Action input and its default
|
||||
3. `entrypoint.sh` — the `INPUT_*` → flag translation
|
||||
4. `README.md` — **both** reference tables (Action inputs, CLI flags) **and
|
||||
the runnable examples**: the workflow YAML under "Use as a GitHub Action"
|
||||
and the `ghstats …` command under "Use as a CLI"
|
||||
5. `docs/system-architecture.md` — when the knob changes the fetch pipeline
|
||||
or its query cost
|
||||
|
||||
The examples are the step most often missed, and they are what people copy.
|
||||
Grep the flag name across the repo before calling the change complete; every
|
||||
hit that is a reference table or example should mention it.
|
||||
|
||||
## Behavior changes are user-visible
|
||||
|
||||
The Action is published to the Marketplace, so existing callers get whatever
|
||||
`@v1` points at. Default-off for anything that moves numbers on already-
|
||||
rendered cards, and say so in the input description. Releases are tag-driven:
|
||||
push `vX.Y.Z`, and `release.yml` tests, builds, and force-moves the floating
|
||||
`v1` tag.
|
||||
|
||||
## Cards and the demo gallery
|
||||
|
||||
Adding a card means updating `internal/card/card.go`, the card table in
|
||||
`README.md`, and the layout in `.github/workflows/demo.yml` — the demo
|
||||
generator embeds a hardcoded list of SVGs, so a new card renders into every
|
||||
theme directory but stays invisible in the gallery until it is added there.
|
||||
Per-theme pages mirror the table layout in the author's profile README at
|
||||
`tiennm99/tiennm99`.
|
||||
|
||||
## GitHub API constraints worth remembering
|
||||
|
||||
- `commitContributionsByRepository` caps at 100 repos per query and truncates
|
||||
silently. Contribution years are queried by quarter, and a saturated quarter
|
||||
is re-asked by month. Only widen windows with that ceiling in mind.
|
||||
- `contributionCalendar` is clipped to the exact `from`/`to`, with no
|
||||
week-boundary spillover, so disjoint windows never double-count days.
|
||||
- Test files named `*_windows_test.go` (or any GOOS/GOARCH suffix) are
|
||||
silently excluded from the build on other platforms — `go test` reports
|
||||
"ok" while running nothing.
|
||||
@@ -86,6 +86,7 @@ jobs:
|
||||
tz: Asia/Saigon
|
||||
include_forks: "true"
|
||||
include_private: "true"
|
||||
include_org_repos: "false" # "true" also counts org repos you administer (token needs read:org)
|
||||
commit_changes: "true"
|
||||
```
|
||||
|
||||
@@ -152,6 +153,12 @@ export GITHUB_TOKEN=ghp_xxx
|
||||
ghstats -user tiennm99 -themes dracula,github_dark -tz Asia/Saigon -out output
|
||||
```
|
||||
|
||||
Add `-include-org-repos` to also count org-owned repos you administer:
|
||||
|
||||
```sh
|
||||
ghstats -user tiennm99 -themes dracula -include-org-repos -out output
|
||||
```
|
||||
|
||||
| Flag | Default | Description |
|
||||
| ------------------- | --------------- | ---------------------------------------------------------------------- |
|
||||
| `-user` | *(required)* | GitHub username |
|
||||
|
||||
Reference in new issue
Block a user