Skip to content
Merged
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ commands.nu
/gh-oss-stats
scripts/
local/

dist/
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Track and display your merged PRs, commits, and contributions to external reposi
- 🔍 **External Contribution Tracking** - Discovers all your merged PRs to repos you don't own
- 📊 **Comprehensive Stats** - Total PRs, commits, lines of code, and repository stars
- ⭐ **Smart Filtering** - Filter by minimum stars, exclude organizations
- 🎭 6 **Color Themes** - Match your profile's aesthetic
- 🎭 18 **Color Themes** - Match your profile's aesthetic
- 📦 **Developer-Friendly** - Use as a Go library or standalone CLI, outputs JSON


Expand Down Expand Up @@ -101,7 +101,7 @@ Customize your badge by passing inputs to the action:
github-token: ${{ secrets.GITHUB_TOKEN }}
badge-path: 'images/oss-badge.svg'
badge-style: 'detailed' # summary, compact, or detailed
badge-theme: 'nord' # dark, light, nord, dracula, gruvbox-light, gruvbox-dark
badge-theme: 'nord' # dark, light, nord, dracula, gruvbox-light, gruvbox-dark, etc...
badge-variant: 'text-based' # default or text-based
min-stars: '100' # Filter repos by minimum stars
exclude-orgs: 'my-org,acme' # Exclude specific organizations
Expand Down
4 changes: 2 additions & 2 deletions cmd/gh-oss-stats/badgeCmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func runBadgeCmd(args []string) {

err = generateBadgeFromJSONString(string(content), *badgeConfig)
if err != nil {
fmt.Fprintln(os.Stderr, "Error: failed to parse json data")
fmt.Fprintf(os.Stderr, "Error: failed to parse json data, error=%v\n", err.Error())
os.Exit(1)
}
os.Exit(0)
Expand All @@ -66,7 +66,7 @@ func runBadgeCmd(args []string) {
if *badgeData != "" {
err := generateBadgeFromJSONString(*badgeData, *badgeConfig)
if err != nil {
fmt.Fprintln(os.Stderr, "Error: failed to parse json data")
fmt.Fprintf(os.Stderr, "Error: failed to parse json data, error=%v\n", err.Error())
os.Exit(1)
}
os.Exit(0)
Expand Down
2 changes: 1 addition & 1 deletion docs/TECHNICAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ These flags control badge generation and styling. Used by the main command (with
| --badge | boolean | false | Generate SVG Badge (main command only) |
| --badge-style | string | summary | Badge style: `summary`, `compact`, `detailed` |
| --badge-variant | string | default | Badge variant: `default`, `text-based` |
| --badge-theme | string | dark | Color theme: `dark`, `light`, `nord`, `dracula`, `gruvbox-light`, `gruvbox-dark` |
| --badge-theme | string | dark | Color theme: `dark`, `light`, `nord`, `dracula`, `gruvbox-light`, `gruvbox-dark`, etc... |
| --badge-output | string | ./badge.svg | Output file path for generated badge |
| --badge-sort | string | prs | Sort contributions by: `prs`, `stars`, `commits` |
| --badge-limit | int | 5 | Number of contributions to display in detailed badge |
Expand Down
27 changes: 24 additions & 3 deletions docs/badges/BADGE_THEMES.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,6 @@

All available combinations of **Variants × Themes × Styles**.

> **Note:** Text-Based variant currently only supports the Detailed style.
> Summary and Compact styles are planned for future releases.

## How to Use This Guide

Each row shows:
Expand All @@ -30,11 +27,35 @@
| default | nord | ![Detailed Nord](default-detailed-nord.svg) | ![Summary Dracula](default-summary-nord.svg) | ![Compact Dark](default-compact-nord.svg) |
| default | gruvbox-dark | ![Detailed Gruvbox Dark](default-detailed-gruvbox-dark.svg) | ![Summary Druvbox Dark](default-summary-gruvbox-dark.svg) | ![Compact Dark](default-compact-gruvbox-dark.svg) |
| default | gruvbox-light | ![Detailed Gruvbox Light](default-detailed-gruvbox-light.svg) | ![Summary Druvbox Light](default-summary-gruvbox-light.svg) | ![Compact Dark](default-compact-light.svg) |
| default | monokai | ![Detailed Monokai](default-detailed-monokai.svg) | ![Summary Monokai](default-summary-monokai.svg) | ![Compact Monokai](default-compact-monokai.svg) |
| default | solarized-dark | ![Detailed Solarized Dark](default-detailed-solarized-dark.svg) | ![Summary Solarized Dark](default-summary-solarized-dark.svg) | ![Compact Solarized Dark](default-compact-solarized-dark.svg) |
| default | solarized-light | ![Detailed Solarized Light](default-detailed-solarized-light.svg) | ![Summary Solarized Light](default-summary-solarized-light.svg) | ![Compact Solarized Light](default-compact-solarized-light.svg) |
| default | tokyo-night | ![Detailed Tokyo Night](default-detailed-tokyo-night.svg) | ![Summary Tokyo Night](default-summary-tokyo-night.svg) | ![Compact Tokyo Night](default-compact-tokyo-night.svg) |
| default | tokyo-night-storm | ![Detailed Tokyo Night Storm](default-detailed-tokyo-night-storm.svg) | ![Summary Tokyo Night Storm](default-summary-tokyo-night-storm.svg) | ![Compact Tokyo Night Storm](default-compact-tokyo-night-storm.svg) |
| default | tokyo-night-light | ![Detailed Tokyo Night Light](default-detailed-tokyo-night-light.svg) | ![Summary Tokyo Night Light](default-summary-tokyo-night-light.svg) | ![Compact Tokyo Night Light](default-compact-tokyo-night-light.svg) |
| default | one-dark | ![Detailed One Dark](default-detailed-one-dark.svg) | ![Summary One Dark](default-summary-one-dark.svg) | ![Compact One Dark](default-compact-one-dark.svg) |
| default | one-dark-vivid | ![Detailed One Dark Vivid](default-detailed-one-dark-vivid.svg) | ![Summary One Dark Vivid](default-summary-one-dark-vivid.svg) | ![Compact One Dark Vivid](default-compact-one-dark-vivid.svg) |
| default | catppuccin-mocha | ![Detailed Catppuccin Mocha](default-detailed-catppuccin-mocha.svg) | ![Summary Catppuccin Mocha](default-summary-catppuccin-mocha.svg) | ![Compact Catppuccin Mocha](default-compact-catppuccin-mocha.svg) |
| default | catppuccin-macchiato | ![Detailed Catppuccin Macchiato](default-detailed-catppuccin-macchiato.svg) | ![Summary Catppuccin Macchiato](default-summary-catppuccin-macchiato.svg) | ![Compact Catppuccin Macchiato](default-compact-catppuccin-macchiato.svg) |
| default | catppuccin-frappe | ![Detailed Catppuccin Frappe](default-detailed-catppuccin-frappe.svg) | ![Summary Catppuccin Frappe](default-summary-catppuccin-frappe.svg) | ![Compact Catppuccin Frappe](default-compact-catppuccin-frappe.svg) |
| default | catppuccin-latte | ![Detailed Catppuccin Latte](default-detailed-catppuccin-latte.svg) | ![Summary Catppuccin Latte](default-summary-catppuccin-latte.svg) | ![Compact Catppuccin Latte](default-compact-catppuccin-latte.svg) |
| text-based | dark | ![Detailed Dark](text-based-detailed-dark.svg) | ![Summary Dark](text-based-summary-dark.svg) | ![Compact Dark](text-based-compact-dark.svg) |
| text-based | light | ![Detailed Light](text-based-detailed-light.svg) | ![Summary Light](text-based-summary-light.svg) | ![Compact Light](text-based-compact-light.svg) |
| text-based | dracula | ![Detailed Dracula](text-based-detailed-dracula.svg) | ![Summary Dracula](text-based-summary-dracula.svg) | ![Compact Dracula](text-based-compact-dracula.svg) |
| text-based | nord | ![Detailed Nord](text-based-detailed-nord.svg) | ![Summary Nord](text-based-summary-nord.svg) | ![Compact Nord](text-based-compact-nord.svg) |
| text-based | gruvbox-dark | ![Detailed Gruvbox Dark](text-based-detailed-gruvbox-dark.svg) | ![Summary Gruvbox Dark](text-based-summary-gruvbox-dark.svg) | ![Compact Gruvbox Dark](text-based-compact-gruvbox-dark.svg) |
| text-based | gruvbox-light | ![Detailed Gruvbox Light](text-based-detailed-gruvbox-light.svg) | ![Summary Gruvbox Light](text-based-summary-gruvbox-light.svg) | ![Compact Gruvbox Light](text-based-compact-gruvbox-light.svg) |
| text-based | monokai | ![Detailed Monokai](text-based-detailed-monokai.svg) | ![Summary Monokai](text-based-summary-monokai.svg) | ![Compact Monokai](text-based-compact-monokai.svg) |
| text-based | solarized-dark | ![Detailed Solarized Dark](text-based-detailed-solarized-dark.svg) | ![Summary Solarized Dark](text-based-summary-solarized-dark.svg) | ![Compact Solarized Dark](text-based-compact-solarized-dark.svg) |
| text-based | solarized-light | ![Detailed Solarized Light](text-based-detailed-solarized-light.svg) | ![Summary Solarized Light](text-based-summary-solarized-light.svg) | ![Compact Solarized Light](text-based-compact-solarized-light.svg) |
| text-based | tokyo-night | ![Detailed Tokyo Night](text-based-detailed-tokyo-night.svg) | ![Summary Tokyo Night](text-based-summary-tokyo-night.svg) | ![Compact Tokyo Night](text-based-compact-tokyo-night.svg) |
| text-based | tokyo-night-storm | ![Detailed Tokyo Night Storm](text-based-detailed-tokyo-night-storm.svg) | ![Summary Tokyo Night Storm](text-based-summary-tokyo-night-storm.svg) | ![Compact Tokyo Night Storm](text-based-compact-tokyo-night-storm.svg) |
| text-based | tokyo-night-light | ![Detailed Tokyo Night Light](text-based-detailed-tokyo-night-light.svg) | ![Summary Tokyo Night Light](text-based-summary-tokyo-night-light.svg) | ![Compact Tokyo Night Light](text-based-compact-tokyo-night-light.svg) |
| text-based | one-dark | ![Detailed One Dark](text-based-detailed-one-dark.svg) | ![Summary One Dark](text-based-summary-one-dark.svg) | ![Compact One Dark](text-based-compact-one-dark.svg) |
| text-based | one-dark-vivid | ![Detailed One Dark Vivid](text-based-detailed-one-dark-vivid.svg) | ![Summary One Dark Vivid](text-based-summary-one-dark-vivid.svg) | ![Compact One Dark Vivid](text-based-compact-one-dark-vivid.svg) |
| text-based | catppuccin-mocha | ![Detailed Catppuccin Mocha](text-based-detailed-catppuccin-mocha.svg) | ![Summary Catppuccin Mocha](text-based-summary-catppuccin-mocha.svg) | ![Compact Catppuccin Mocha](text-based-compact-catppuccin-mocha.svg) |
| text-based | catppuccin-macchiato | ![Detailed Catppuccin Macchiato](text-based-detailed-catppuccin-macchiato.svg) | ![Summary Catppuccin Macchiato](text-based-summary-catppuccin-macchiato.svg) | ![Compact Catppuccin Macchiato](text-based-compact-catppuccin-macchiato.svg) |
| text-based | catppuccin-frappe | ![Detailed Catppuccin Frappe](text-based-detailed-catppuccin-frappe.svg) | ![Summary Catppuccin Frappe](text-based-summary-catppuccin-frappe.svg) | ![Compact Catppuccin Frappe](text-based-compact-catppuccin-frappe.svg) |
| text-based | catppuccin-latte | ![Detailed Catppuccin Latte](text-based-detailed-catppuccin-latte.svg) | ![Summary Catppuccin Latte](text-based-summary-catppuccin-latte.svg) | ![Compact Catppuccin Latte](text-based-compact-catppuccin-latte.svg) |
Comment thread
coderabbitai[bot] marked this conversation as resolved.


40 changes: 40 additions & 0 deletions docs/badges/default-compact-catppuccin-frappe.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/badges/default-compact-catppuccin-latte.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/badges/default-compact-catppuccin-macchiato.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/badges/default-compact-catppuccin-mocha.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/badges/default-compact-dark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/badges/default-compact-monaki.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/badges/default-compact-monokai.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 40 additions & 0 deletions docs/badges/default-compact-one-dark-vivid.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading