| 10 | ) |
| 11 | |
| 12 | func RecordTelemetry(cmd *cobra.Command, telemetry ghtelemetry.EventRecorder) { |
| 13 | if isTelemetryDisabled(cmd) { |
| 14 | return |
| 15 | } |
| 16 | |
| 17 | if cmd.RunE == nil { |
| 18 | return |
| 19 | } |
| 20 | |
| 21 | currentRunE := cmd.RunE |
| 22 | cmd.RunE = func(cmd *cobra.Command, args []string) error { |
| 23 | runErr := currentRunE(cmd, args) |
| 24 | |
| 25 | var flags []string |
| 26 | cmd.Flags().Visit(func(f *pflag.Flag) { |
| 27 | flags = append(flags, f.Name) |
| 28 | }) |
| 29 | slices.Sort(flags) |
| 30 | |
| 31 | telemetry.Record(ghtelemetry.Event{ |
| 32 | Type: "command_invocation", |
| 33 | Dimensions: map[string]string{ |
| 34 | "command": cmd.CommandPath(), |
| 35 | "flags": strings.Join(flags, ","), |
| 36 | }, |
| 37 | }) |
| 38 | |
| 39 | return runErr |
| 40 | } |
| 41 | } |
| 42 | |
| 43 | func RecordTelemetryForSubcommands(cmd *cobra.Command, telemetry ghtelemetry.EventRecorder) { |
| 44 | for _, c := range cmd.Commands() { |