Skip to content

Commit e3f7b26

Browse files
leggetterclaude
andauthored
feat: Add CLI telemetry instrumentation and remove deprecated SDK (#233)
* feat: implement CLI and MCP telemetry instrumentation Extend the telemetry header with source, environment, command_path, invocation_id, and mcp_client fields so the API server can distinguish CLI from MCP requests and correlate multiple API calls to a single command invocation. Phase 1 - Telemetry struct & CLI wiring: - Add Source, Environment, InvocationID, MCPClient fields to CLITelemetry - Add NewInvocationID() generator (8 random bytes, hex-encoded) - Add initTelemetry() helper called from root PersistentPreRun - Fix Cobra PersistentPreRun chaining for connection command Phase 2 - MCP per-request telemetry: - Add Telemetry field + WithTelemetry() clone method on Client - Update PerformRequest to use per-request telemetry when set - Wrap MCP tool handlers to set per-invocation telemetry context - Extract MCP client info from ServerSession.InitializeParams() Phase 3 - SDK client: - Works automatically: PersistentPreRun populates singleton before GetClient() bakes headers at construction time Phase 5 - Config-based opt-out: - Add TelemetryDisabled to Config, read from config.toml - Update telemetryOptedOut() to accept config flag - Thread TelemetryDisabled through API and SDK client construction Phase 6 - CI detection: - Add DetectEnvironment() checking CI, GITHUB_ACTIONS, GITLAB_CI, JENKINS_URL, CODEBUILD_BUILD_ID, BUILDKITE, TF_BUILD env vars - Tag requests with environment: "ci" or "interactive" https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * test: add end-to-end MCP telemetry integration tests Add 6 integration tests that exercise the full pipeline: MCP tool call → wrapWithTelemetry → HTTP request → mock API server, verifying the Hookdeck-CLI-Telemetry header arrives with correct content. Tests cover: - Header sent with correct source/command_path/invocation_id/mcp_client - Each tool call gets a unique invocation ID - Command path reflects the action (hookdeck_sources/list vs /get) - Telemetry disabled by config (TelemetryDisabled=true) - Telemetry disabled by env var (HOOKDECK_CLI_TELEMETRY_OPTOUT=true) - Multiple API calls within one tool invocation share the same ID https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * feat: add `hookdeck telemetry enable/disable` CLI command Adds a telemetry subcommand with enable/disable actions so users can toggle anonymous telemetry without manually editing config.toml. https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * refactor: make enable/disable positional args of telemetry command Instead of separate subcommands, `hookdeck telemetry enable` and `hookdeck telemetry disable` now use a single command with a required positional argument. Also adds telemetry section to the README. https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * test: add singleton reset functions and CLI telemetry tests Add ResetTelemetryInstanceForTesting() and ResetAPIClientForTesting() to enable isolated testing of the CLI telemetry path. Add tests that verify the singleton reset → populate → HTTP request → header cycle, singleton isolation between sequential commands, and initTelemetry correctness including generated resource detection. https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * Extract telemetry header name to constant with RFC 6648 comment Add TelemetryHeaderName constant to avoid hardcoded header strings across the codebase. Include a comment explaining why we omit the "X-" prefix (deprecated by RFC 6648). https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * Remove deprecated hookdeck-go-sdk, migrate listen to direct API client The listen command was the only consumer of the hookdeck-go-sdk (pinned to API version 2024-03-01). This migrates it to use the direct hookdeck.Client which hits the current API version (2025-07-01) and reads telemetry from the singleton on every request — fixing the gap where the SDK client baked headers at creation time and never updated. - Replace all hookdecksdk types with hookdeck types (Source, Connection, Destination) across listen/, proxy/, and tui/ packages - Replace SDK client calls (Source.List, Connection.Create, etc.) with direct Client methods (ListSources, CreateConnection, etc.) - Use Destination.GetCLIPath()/SetCLIPath() instead of direct CliPath field - Delete pkg/hookdeck/sdkclient.go and pkg/config/sdkclient.go - Remove github.com/hookdeck/hookdeck-go-sdk from go.mod https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * Rename telemetry header to X-Hookdeck-CLI-Telemetry Add X- prefix for consistency with X-Hookdeck-Client-User-Agent. https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL * test: parallelize acceptance tests into three slices (#234) * docs: generate REFERENCE.md in-place, remove REFERENCE.template.md - Default input is REFERENCE.md; run with no args for in-place update - Update README generator instructions and --check example - Remove REFERENCE.template.md Made-with: Cursor * feat!: introduce Hookdeck config file and root --hookdeck-config flag - Rename root-level --config to --hookdeck-config to avoid conflict with source/destination --config (JSON body) and --config-file (JSON path). - Add HOOKDECK_CONFIG_FILE env var for config path; precedence is flag, then env, then .hookdeck/config.toml, then default location. - Document env var and flag in README (precedence list and Global Flags). - Update REFERENCE.md global options and acceptance tests. Made-with: Cursor * test: parallelize acceptance tests into three slices - Add feature build tags to all automated acceptance test files so tests can be split across parallel runs (CI and local). - CI: run three matrix jobs with tags split by estimated runtime; each job uses its own API key (HOOKDECK_CLI_TESTING_API_KEY, _2, _3). - Local: run_parallel.sh runs three slices in parallel, writing to test/acceptance/logs/slice0.log, slice1.log, slice2.log; add logs/ to .gitignore. - Helpers: support ACCEPTANCE_SLICE=2 and HOOKDECK_CLI_TESTING_API_KEY_3; per-slice config path and API key selection for isolated projects. - Rebalance slices for ~5–5.5 min wall time (slice 0: connection/source/ destination/gateway/etc.; slice 1: request, event; slice 2: attempt, metrics, issue, transformation). - Document three-slice setup, tags, and run commands in test/acceptance/README.md. Made-with: Cursor * Consolidate API client usage and fix telemetry opt-out for all clients Several places constructed hookdeck.Client directly, bypassing GetAPIClient(). These clients didn't carry TelemetryDisabled from config, so they'd send telemetry even when the user had opted out. Two-layer fix: 1. Safety net: Add Disabled flag to the telemetry singleton. PerformRequest now checks both the per-client TelemetryDisabled and the singleton's Disabled flag, so even stray clients respect the config-level opt-out. 2. Consistency: Route as many callers as possible through GetAPIClient(): - project.go: use config.GetAPIClient() instead of raw construction - whoami.go: use Config.GetAPIClient().ValidateAPIKey() - Login() validate path: use config.GetAPIClient().ValidateAPIKey() - proxy.go createSession: receive APIClient via proxy.Config - tui/model.go: receive APIClient via tui.Config - Remove login/validate.go (no longer called) For unauthenticated login clients (Login, GuestLogin, CILogin, InteractiveLogin, MCP tool_login), pass TelemetryDisabled from config. https://claude.ai/code/session_01TQFynqFrXsP38LuYmdERYL --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent 9f18ea1 commit e3f7b26

63 files changed

Lines changed: 1672 additions & 411 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/test-acceptance.yml

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,24 @@ on:
77
- main
88

99
jobs:
10-
test:
10+
acceptance:
11+
strategy:
12+
fail-fast: false
13+
matrix:
14+
include:
15+
- slice: "0"
16+
api_key_secret: HOOKDECK_CLI_TESTING_API_KEY
17+
tags: "basic connection source destination gateway mcp listen project_use connection_list connection_upsert connection_error_hints connection_oauth_aws connection_update"
18+
- slice: "1"
19+
api_key_secret: HOOKDECK_CLI_TESTING_API_KEY_2
20+
tags: "request event"
21+
- slice: "2"
22+
api_key_secret: HOOKDECK_CLI_TESTING_API_KEY_3
23+
tags: "attempt metrics issue transformation"
1124
runs-on: ubuntu-latest
1225
env:
13-
HOOKDECK_CLI_TESTING_API_KEY: ${{ secrets.HOOKDECK_CLI_TESTING_API_KEY }}
26+
ACCEPTANCE_SLICE: ${{ matrix.slice }}
27+
HOOKDECK_CLI_TESTING_API_KEY: ${{ secrets[matrix.api_key_secret] }}
1428
steps:
1529
- name: Check out code
1630
uses: actions/checkout@v3
@@ -20,5 +34,5 @@ jobs:
2034
with:
2135
go-version: "1.24.9"
2236

23-
- name: Run Go Acceptance Tests
24-
run: go test ./test/acceptance/... -v -timeout 20m
37+
- name: Run Go Acceptance Tests (slice ${{ matrix.slice }})
38+
run: go test -tags="${{ matrix.tags }}" ./test/acceptance/... -v -timeout 12m

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ default_cassette.yaml
1616
__debug_bin
1717
node_modules/
1818
.env
19+
test/acceptance/logs/
1920
test-scripts/.install-test/
2021

2122
# Temporary OpenAPI spec download (large; do not commit)

AGENTS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,9 @@ if apiErr, ok := err.(*hookdeck.APIError); ok {
354354
### Acceptance Test Setup
355355
Acceptance tests require a Hookdeck API key. See [`test/acceptance/README.md`](test/acceptance/README.md) for full details. Quick setup: create `test/acceptance/.env` with `HOOKDECK_CLI_TESTING_API_KEY=<key>`. The `.env` file is git-ignored and must never be committed.
356356
357+
### Acceptance tests and feature tags
358+
Acceptance tests in `test/acceptance/` are partitioned by **feature build tags** so they can run in parallel (two slices in CI and locally). Each test file must have exactly one feature tag (e.g. `//go:build connection`, `//go:build request`). The runner (CI workflow or `run_parallel.sh`) maps features to slices and passes the corresponding `-tags="..."`; see [test/acceptance/README.md](test/acceptance/README.md) for slice mapping and setup. **Every new acceptance test file must have a feature tag**; otherwise it is included in every build and runs in both slices (duplicated). Use tags to balance and parallelize; same commands and env for local and CI.
359+
357360
### Unit Testing
358361
- Test validation logic thoroughly
359362
- Mock API calls for command tests

README.md

Lines changed: 28 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ For a complete reference of all commands and flags, see [REFERENCE.md](REFERENCE
4040
- [Transformations](#transformations)
4141
- [Requests, events, and attempts](#requests-events-and-attempts)
4242
- [Manage active project](#manage-active-project)
43+
- [Telemetry](#telemetry)
4344
- [Configuration files](#configuration-files)
4445
- [Global Flags](#global-flags)
4546
- [Troubleshooting](#troubleshooting)
@@ -731,7 +732,7 @@ By default, `project use` saves your selection to the **global configuration** (
731732

732733
The CLI uses exactly one configuration file based on this precedence:
733734

734-
1. **Custom config** (via `--config` flag) - highest priority
735+
1. **Custom config** (via `--hookdeck-config` flag) - highest priority
735736
2. **Local config** - `${PWD}/.hookdeck/config.toml` (if exists)
736737
3. **Global config** - `~/.config/hookdeck/config.toml` (default)
737738

@@ -781,11 +782,11 @@ This ensures your directory-specific configuration is preserved when it exists.
781782
hookdeck project use my-org my-project
782783
hookdeck project use my-org my-project --local
783784

784-
# ❌ Invalid (cannot combine --config with --local)
785-
hookdeck --config custom.toml project use my-org my-project --local
786-
Error: --local and --config flags cannot be used together
785+
# ❌ Invalid (cannot combine --hookdeck-config with --local)
786+
hookdeck --hookdeck-config custom.toml project use my-org my-project --local
787+
Error: --local and --hookdeck-config flags cannot be used together
787788
--local creates config at: .hookdeck/config.toml
788-
--config uses custom path: custom.toml
789+
--hookdeck-config uses custom path: custom.toml
789790
```
790791

791792
#### Benefits of local project pinning
@@ -1094,6 +1095,20 @@ $ hookdeck gateway connection delete conn_123abc --force
10941095

10951096
For complete flag documentation and all examples, see [REFERENCE.md](REFERENCE.md).
10961097

1098+
### Telemetry
1099+
1100+
The Hookdeck CLI collects anonymous telemetry to help improve the tool. You can opt out at any time:
1101+
1102+
```sh
1103+
# Disable telemetry
1104+
hookdeck telemetry disable
1105+
1106+
# Re-enable telemetry
1107+
hookdeck telemetry enable
1108+
```
1109+
1110+
You can also disable telemetry by setting the `HOOKDECK_CLI_TELEMETRY_OPTOUT` environment variable to `1` or `true`.
1111+
10971112
## Configuration files
10981113

10991114
The Hookdeck CLI uses configuration files to store the your keys, project settings, profiles, and other configurations.
@@ -1102,9 +1117,10 @@ The Hookdeck CLI uses configuration files to store the your keys, project settin
11021117

11031118
The CLI will look for the configuration file in the following order:
11041119

1105-
1. The `--config` flag, which allows you to specify a custom configuration file name and path per command.
1106-
2. The local directory `.hookdeck/config.toml`.
1107-
3. The default global configuration file location.
1120+
1. The `--hookdeck-config` flag, which allows you to specify a custom configuration file path per command.
1121+
2. The `HOOKDECK_CONFIG_FILE` environment variable (path to the config file).
1122+
3. The local directory `.hookdeck/config.toml`.
1123+
4. The default global configuration file location.
11081124

11091125
### Default configuration Location
11101126

@@ -1179,7 +1195,7 @@ The following flags can be used with any command:
11791195

11801196
- `--api-key`: Your API key to use for the command.
11811197
- `--color`: Turn on/off color output (on, off, auto).
1182-
- `--config`: Path to a specific configuration file.
1198+
- `--hookdeck-config`: Path to the CLI configuration file. You can also set the `HOOKDECK_CONFIG_FILE` environment variable to the config file path.
11831199
- `--device-name`: A unique name for your device.
11841200
- `--insecure`: Allow invalid TLS certificates.
11851201
- `--log-level`: Set the logging level (debug, info, warn, error).
@@ -1221,16 +1237,16 @@ go run main.go
12211237

12221238
### Generating REFERENCE.md
12231239

1224-
The [REFERENCE.md](REFERENCE.md) file is generated from Cobra command metadata. After changing commands, flags, or help text, regenerate it:
1240+
The [REFERENCE.md](REFERENCE.md) file is generated from Cobra command metadata. After changing commands, flags, or help text, regenerate it in place:
12251241

12261242
```sh
1227-
go run ./tools/generate-reference --input REFERENCE.template.md --output REFERENCE.md
1243+
go run ./tools/generate-reference
12281244
```
12291245

12301246
To validate that REFERENCE.md is up to date (useful in CI):
12311247

12321248
```sh
1233-
go run ./tools/generate-reference --input REFERENCE.template.md --output REFERENCE.md --check
1249+
go run ./tools/generate-reference --check
12341250
```
12351251

12361252
Build from source by running:

REFERENCE.md

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ The Hookdeck CLI provides comprehensive webhook infrastructure management includ
1919
- [Events](#events)
2020
- [Requests](#requests)
2121
- [Attempts](#attempts)
22-
- [Metrics](#metrics)
2322
- [Utilities](#utilities)
2423
<!-- GENERATE_END -->
2524
## Global Options
@@ -30,8 +29,8 @@ All commands support these global options:
3029
| Flag | Type | Description |
3130
|------|------|-------------|
3231
| `--color` | `string` | turn on/off color output (on, off, auto) |
33-
| `--config` | `string` | config file (default is $HOME/.config/hookdeck/config.toml) |
3432
| `--device-name` | `string` | device name |
33+
| `--hookdeck-config` | `string` | path to CLI config file (default is $HOME/.config/hookdeck/config.toml) |
3534
| `--insecure` | `bool` | Allow invalid TLS certificates |
3635
| `--log-level` | `string` | log level (debug, info, warn, error) (default "info") |
3736
| `-p, --profile` | `string` | profile name (default "default") |
@@ -206,7 +205,7 @@ hookdeck listen [port or forwarding URL] [source] [connection] [flags]
206205
## Gateway
207206
208207
Commands for managing Event Gateway sources, destinations, connections,
209-
transformations, events, requests, and metrics.
208+
transformations, events, requests, metrics, and MCP server.
210209
211210
The gateway command group provides full access to all Event Gateway resources.
212211
@@ -227,6 +226,9 @@ hookdeck gateway source create --name my-source --type WEBHOOK
227226
228227
# Query event metrics
229228
hookdeck gateway metrics events --start 2026-01-01T00:00:00Z --end 2026-02-01T00:00:00Z
229+
230+
# Start the MCP server for AI agent access
231+
hookdeck gateway mcp
230232
```
231233
<!-- GENERATE_END -->
232234
## Connections
@@ -544,7 +546,7 @@ hookdeck gateway connection upsert <name> [flags]
544546
| `--destination-basic-auth-pass` | `string` | Password for destination Basic authentication |
545547
| `--destination-basic-auth-user` | `string` | Username for destination Basic authentication |
546548
| `--destination-bearer-token` | `string` | Bearer token for destination authentication |
547-
| `--destination-cli-path` | `string` | CLI path for CLI destinations (default: /) (default "/") |
549+
| `--destination-cli-path` | `string` | CLI path for CLI destinations (default: / for new connections) |
548550
| `--destination-custom-signature-key` | `string` | Key/header name for custom signature |
549551
| `--destination-custom-signature-secret` | `string` | Signing secret for custom signature |
550552
| `--destination-description` | `string` | Destination description |
@@ -725,6 +727,7 @@ hookdeck gateway source create [flags]
725727
| `--api-key` | `string` | API key for source authentication |
726728
| `--basic-auth-pass` | `string` | Password for Basic authentication |
727729
| `--basic-auth-user` | `string` | Username for Basic authentication |
730+
| `--config` | `string` | JSON object for source config (overrides individual flags if set) |
728731
| `--config-file` | `string` | Path to JSON file for source config (overrides individual flags if set) |
729732
| `--custom-response-body` | `string` | Custom response body (max 1000 chars) |
730733
| `--custom-response-content-type` | `string` | Custom response content type (json, text, xml) |
@@ -785,6 +788,7 @@ hookdeck gateway source update <source-id> [flags]
785788
| `--api-key` | `string` | API key for source authentication |
786789
| `--basic-auth-pass` | `string` | Password for Basic authentication |
787790
| `--basic-auth-user` | `string` | Username for Basic authentication |
791+
| `--config` | `string` | JSON object for source config (overrides individual flags if set) |
788792
| `--config-file` | `string` | Path to JSON file for source config (overrides individual flags if set) |
789793
| `--custom-response-body` | `string` | Custom response body (max 1000 chars) |
790794
| `--custom-response-content-type` | `string` | Custom response content type (json, text, xml) |
@@ -843,6 +847,7 @@ hookdeck gateway source upsert <name> [flags]
843847
| `--api-key` | `string` | API key for source authentication |
844848
| `--basic-auth-pass` | `string` | Password for Basic authentication |
845849
| `--basic-auth-user` | `string` | Username for Basic authentication |
850+
| `--config` | `string` | JSON object for source config (overrides individual flags if set) |
846851
| `--config-file` | `string` | Path to JSON file for source config (overrides individual flags if set) |
847852
| `--custom-response-body` | `string` | Custom response body (max 1000 chars) |
848853
| `--custom-response-content-type` | `string` | Custom response content type (json, text, xml) |
@@ -971,6 +976,7 @@ hookdeck gateway destination create [flags]
971976
| `--basic-auth-user` | `string` | Username for Basic auth |
972977
| `--bearer-token` | `string` | Bearer token for destination auth |
973978
| `--cli-path` | `string` | Path for CLI destinations (default "/") |
979+
| `--config` | `string` | JSON object for destination config (overrides individual flags if set) |
974980
| `--config-file` | `string` | Path to JSON file for destination config (overrides individual flags if set) |
975981
| `--custom-signature-key` | `string` | Key/header name for custom signature |
976982
| `--custom-signature-secret` | `string` | Signing secret for custom signature |
@@ -1037,6 +1043,7 @@ hookdeck gateway destination update <destination-id> [flags]
10371043
| `--basic-auth-user` | `string` | Username for Basic auth |
10381044
| `--bearer-token` | `string` | Bearer token for destination auth |
10391045
| `--cli-path` | `string` | Path for CLI destinations |
1046+
| `--config` | `string` | JSON object for destination config (overrides individual flags if set) |
10401047
| `--config-file` | `string` | Path to JSON file for destination config (overrides individual flags if set) |
10411048
| `--custom-signature-key` | `string` | Key/header name for custom signature |
10421049
| `--custom-signature-secret` | `string` | Signing secret for custom signature |
@@ -1100,6 +1107,7 @@ hookdeck gateway destination upsert <name> [flags]
11001107
| `--basic-auth-user` | `string` | Username for Basic auth |
11011108
| `--bearer-token` | `string` | Bearer token for destination auth |
11021109
| `--cli-path` | `string` | Path for CLI destinations |
1110+
| `--config` | `string` | JSON object for destination config (overrides individual flags if set) |
11031111
| `--config-file` | `string` | Path to JSON file for destination config (overrides individual flags if set) |
11041112
| `--custom-signature-key` | `string` | Key/header name for custom signature |
11051113
| `--custom-signature-secret` | `string` | Signing secret for custom signature |

REFERENCE.template.md

Lines changed: 0 additions & 77 deletions
This file was deleted.

go.mod

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ require (
1212
github.com/google/go-github/v28 v28.1.1
1313
github.com/gorilla/websocket v1.5.3
1414
github.com/gosimple/slug v1.15.0
15-
github.com/hookdeck/hookdeck-go-sdk v0.7.0
1615
github.com/logrusorgru/aurora v2.0.3+incompatible
1716
github.com/mitchellh/go-homedir v1.1.0
1817
github.com/modelcontextprotocol/go-sdk v1.4.0
@@ -43,7 +42,6 @@ require (
4342
github.com/go-viper/mapstructure/v2 v2.4.0 // indirect
4443
github.com/google/go-querystring v1.1.0 // indirect
4544
github.com/google/jsonschema-go v0.4.2 // indirect
46-
github.com/google/uuid v1.6.0 // indirect
4745
github.com/gosimple/unidecode v1.0.1 // indirect
4846
github.com/inconshreveable/mousetrap v1.1.0 // indirect
4947
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect

go.sum

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,6 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD
6868
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
6969
github.com/google/jsonschema-go v0.4.2 h1:tmrUohrwoLZZS/P3x7ex0WAVknEkBZM46iALbcqoRA8=
7070
github.com/google/jsonschema-go v0.4.2/go.mod h1:r5quNTdLOYEz95Ru18zA0ydNbBuYoo9tgaYcxEYhJVE=
71-
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
72-
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
7371
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
7472
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
7573
github.com/gosimple/slug v1.15.0 h1:wRZHsRrRcs6b0XnxMUBM6WK1U1Vg5B0R7VkIf1Xzobo=
@@ -78,8 +76,6 @@ github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6
7876
github.com/gosimple/unidecode v1.0.1/go.mod h1:CP0Cr1Y1kogOtx0bJblKzsVWrqYaqfNOnHzpgWw4Awc=
7977
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec h1:qv2VnGeEQHchGaZ/u7lxST/RaJw+cv273q79D81Xbog=
8078
github.com/hinshun/vt10x v0.0.0-20220119200601-820417d04eec/go.mod h1:Q48J4R4DvxnHolD5P8pOtXigYlRuPLGl6moFx3ulM68=
81-
github.com/hookdeck/hookdeck-go-sdk v0.7.0 h1:s+4gVXcoTwTcukdn6Fc2BydewmkK2QXyIZvAUQsIoVs=
82-
github.com/hookdeck/hookdeck-go-sdk v0.7.0/go.mod h1:fewtdP5f8hnU+x35l2s8F3SSiE94cGz+Q3bR4sI8zlk=
8379
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
8480
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
8581
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=

pkg/cmd/connection.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ A connection links a source to a destination and defines how webhooks are routed
2929
You can create connections with inline source and destination creation, or reference
3030
existing resources.`),
3131
PersistentPreRun: func(cmd *cobra.Command, args []string) {
32+
initTelemetry(cmd)
3233
if shouldShowConnectionDeprecation() {
3334
fmt.Fprint(os.Stderr, connectionDeprecationNotice)
3435
}

pkg/cmd/project_use.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Pinning project [Acme] Ecommerce Staging to current directory`,
4949
func (lc *projectUseCmd) runProjectUseCmd(cmd *cobra.Command, args []string) error {
5050
// Validate flag compatibility
5151
if lc.local && Config.ConfigFileFlag != "" {
52-
return fmt.Errorf("Error: --local and --config flags cannot be used together\n --local creates config at: .hookdeck/config.toml\n --config uses custom path: %s", Config.ConfigFileFlag)
52+
return fmt.Errorf("Error: --local and --hookdeck-config flags cannot be used together\n --local creates config at: .hookdeck/config.toml\n --hookdeck-config uses custom path: %s", Config.ConfigFileFlag)
5353
}
5454

5555
if err := Config.Profile.ValidateAPIKey(); err != nil {

0 commit comments

Comments
 (0)