Documentation
¶
Overview ¶
Package telemetry sends anonymous command-usage events to Segment.
Telemetry is opt-out: it fires unless disabled via a well-known opt-out environment variable or the persisted telemetry config preference (see internal/config.IsTelemetry). Only the command path, the names (never values) of flags the user set, and a per-install anonymous instance ID are ever collected — no flag values, argument values, file paths, or other PII.
Modeled on circleci-cli's internal/telemetry package.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func DisableTelemetry ¶
DisableTelemetry marks cmd so RecordForSubcommands skips wrapping it. Used for commands that should never report their own invocation, such as the hidden receive-telemetry command.
func IsTelemetryDisabled ¶
IsTelemetryDisabled reports whether DisableTelemetry was called on cmd.
func RecordForSubcommands ¶
RecordForSubcommands wraps every descendant command's RunE so it reports a chunk_command_invocation event after running, without requiring per-command changes.
func RecordNow ¶
RecordNow reports a chunk_command_invocation event immediately: the full command path and the sorted, comma-joined names (never values) of flags the user explicitly set.
The event name is prefixed with "chunk_" (rather than the more generic "command_invocation" that circleci-cli's own telemetry package uses) because both tools currently send to the same Segment write key/workspace; the prefix keeps chunk-cli's events unambiguous in the event stream without requiring anyone to inspect the nested Context.App.Name field.
Types ¶
type Config ¶
type Config struct {
// Send enables sending events to Segment via the delegate subprocess.
Send bool
// Log enables logging events to stderr for debugging.
Log bool
// Binary is re-exec'd with JSON-encoded events on stdin when Send is true.
Binary string
// WriteKey is the Segment write key used by the delegate subprocess.
WriteKey string
// Endpoint is the Segment endpoint. Optional; defaults to segment.io.
// Normally only set for testing.
Endpoint string
// TestDestination, when non-nil, is added as an event destination so
// tests can record events and assert on them synchronously without
// spawning a subprocess or hitting the network.
TestDestination destination
Metadata Meta
}
Config configures a Sender.
type Sender ¶
type Sender struct {
// contains filtered or unexported fields
}
Sender tracks anonymous command-usage events. A nil *Sender is valid and silently drops events, so callers never need to nil-check it.
func FromContext ¶
FromContext returns the Sender attached to ctx, or nil if none was attached.