From 58bf684644a7c0b04a31adcfd8b966eaba04ef27 Mon Sep 17 00:00:00 2001 From: MABD Date: Sat, 18 Apr 2026 03:15:56 +0300 Subject: [PATCH 1/2] analytics: send sub-command used --- cmd/gh-oss-stats/main.go | 8 ++++---- internal/analytics/analytics.go | 8 +++++++- internal/telemetry/telemetry.go | 15 ++++++++++----- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/cmd/gh-oss-stats/main.go b/cmd/gh-oss-stats/main.go index 5ec3b27..16378da 100644 --- a/cmd/gh-oss-stats/main.go +++ b/cmd/gh-oss-stats/main.go @@ -13,7 +13,7 @@ func main() { args := os.Args[1:] if len(args) == 0 { - telemetry.Send(version) + telemetry.Send(version, "") runMainCmd(args) return } @@ -21,16 +21,16 @@ func main() { // Route to sub-commands, or fallback to main command switch args[0] { case "badge": - telemetry.Send(version) + telemetry.Send(version, "badge") runBadgeCmd(args[1:]) case "demo": - telemetry.Send(version) + telemetry.Send(version, "demo") runDemoCmd(args[1:]) case "version": fmt.Printf("gh-oss-stats v%s\n", version) os.Exit(0) default: - telemetry.Send(version) + telemetry.Send(version, "") runMainCmd(args) } } diff --git a/internal/analytics/analytics.go b/internal/analytics/analytics.go index 15fdbfe..6550fa2 100644 --- a/internal/analytics/analytics.go +++ b/internal/analytics/analytics.go @@ -28,12 +28,18 @@ func (analytics Analytics) Track(name string, params map[string]any) error { }) } -func (analytics Analytics) TrackToolUsage(os string, version string, ci bool) error { +func (analytics Analytics) TrackToolUsage( + os string, + version string, + ci bool, + command string, +) error { params := map[string]any{ "os": os, "tool-version": version, "ci": ci, "project": "gh-oss-stats", + "command": command, } return analytics.Track("usage", params) } diff --git a/internal/telemetry/telemetry.go b/internal/telemetry/telemetry.go index 69e9359..9d99290 100644 --- a/internal/telemetry/telemetry.go +++ b/internal/telemetry/telemetry.go @@ -23,7 +23,7 @@ type Telemetry struct { UserUUID string `json:"userUUID"` } -func Send(version string) { +func Send(version string, command string) { telemetryDisabled := os.Getenv("GH_OSS_STATS_TELEMETRY_DISABLED") if telemetryDisabled == "1" { return @@ -36,7 +36,7 @@ func Send(version string) { isCI := os.Getenv("CI") != "" || os.Getenv("GITHUB_ACTIONS") != "" if isCI { - sendTrackUsageEvent(telemetry.UserUUID, version, true) + sendTrackUsageEvent(telemetry.UserUUID, version, true, command) return } @@ -47,7 +47,7 @@ func Send(version string) { storeTelemetry(*telemetry) } - sendTrackUsageEvent(telemetry.UserUUID, version, false) + sendTrackUsageEvent(telemetry.UserUUID, version, false, command) } func readOrCreateTelemetry() (*Telemetry, error) { @@ -129,7 +129,12 @@ func printNotice() { fmt.Println("More info: https://github.com/mabd-dev/gh-oss-stats#telemetry") } -func sendTrackUsageEvent(userUUID string, version string, isCI bool) error { +func sendTrackUsageEvent( + userUUID string, + version string, + isCI bool, + command string, +) error { analytics := analytics.CreateAnalytics(userUUID) - return analytics.TrackToolUsage(runtime.GOOS, version, isCI) + return analytics.TrackToolUsage(runtime.GOOS, version, isCI, command) } From 028eb25e2f9f52c8c6bfb6130c7afe4e709194c8 Mon Sep 17 00:00:00 2001 From: MABD Date: Sat, 18 Apr 2026 03:16:01 +0300 Subject: [PATCH 2/2] docs: updated readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5fbeeee..ea5f483 100644 --- a/README.md +++ b/README.md @@ -143,6 +143,7 @@ first run. - `os` — operating system (linux, windows, darwin) - `version` — tool version being used - `ci` — whether the tool is running in a CI environment +- `command` — subommand used ("", "badge", "demo", etc...) Nothing personal is collected — no usernames, tokens, or file paths. Events are sent to a [mixpanel](https://mixpanel.com/home/) (a third-party analytics service) and visible only to the maintainer.