Skip to content

Commit 1bd0a11

Browse files
authored
feat: Add 1Password provider support (#15)
* feat: 1password provider * fix: ci missing env * fix: ci missing env * fix: missing top level field
1 parent 4a6b67a commit 1bd0a11

10 files changed

Lines changed: 1499 additions & 3 deletions

File tree

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ jobs:
5656
BW_PASSWORD: ${{ secrets.BW_PASSWORD }}
5757
BW_CLIENTSECRET: ${{ secrets.BW_CLIENTSECRET }}
5858
BW_CLIENTID: ${{ secrets.BW_CLIENTID }}
59+
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
60+
OP_TEST_VAULT_NAME: ${{ secrets.OP_TEST_VAULT_NAME }}
5961
run: go test -v ./tests/end2end/...
6062

6163
build:

.sstart.yml.example

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,9 @@ providers:
3333
id: dotenv-shared
3434
path: ${HOME}/.config/myapp/.env
3535

36+
# 1Password example - fetch a whole section
37+
# Requires OP_SERVICE_ACCOUNT_TOKEN environment variable
38+
- kind: 1password
39+
id: onepassword-prod
40+
ref: op://Production/MyApp/Database
41+

CONFIGURATION.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ providers:
2323

2424
| Provider | Status |
2525
|----------|--------|
26+
| `1password` | Stable |
2627
| `aws_secretsmanager` | Stable |
2728
| `azure_keyvault` | Stable |
2829
| `bitwarden` | Stable |
@@ -33,6 +34,125 @@ providers:
3334

3435
## Provider Configuration
3536

37+
### 1Password (`1password`)
38+
39+
Retrieves secrets from 1Password using the 1Password Connect SDK. Supports fetching individual fields, whole sections, or entire items from 1Password vaults.
40+
41+
**Dependencies:**
42+
- No CLI required. Uses the 1Password Go SDK directly.
43+
44+
**Configuration:**
45+
- `ref` (required): The 1Password secret reference in the format `op://<vault>/<item>/[section/]<field>`. sstart supports custom reference formats that allow fetching different scopes of secrets:
46+
- `op://VaultName/ItemName/fieldName` - Fetch a specific top-level field (not in any section)
47+
- `op://VaultName/ItemName/sectionName/fieldName` - Fetch a specific field from a section
48+
- `op://VaultName/ItemName/sectionName` - **Fetch all fields from a section** (custom sstart feature)
49+
- `op://VaultName/ItemName` - **Fetch all fields from an entire item** (custom sstart feature)
50+
- `use_section_prefix` (optional): When `true`, fields from sections will have keys prefixed with the section name (e.g., `SectionName_FieldName`). When `false` or not specified, fields use just the field name. Defaults to `false`.
51+
52+
**Reference Format Support:**
53+
sstart extends the standard 1Password reference format to support fetching multiple secrets at once:
54+
- **Single field references** (`op://vault/item/field` or `op://vault/item/section/field`): Fetch one specific field value
55+
- **Whole section references** (`op://vault/item/section`): Fetch all fields from a specific section in an item. All fields from that section will be loaded as environment variables.
56+
- **Whole item references** (`op://vault/item`): Fetch all fields from an entire item, including both top-level fields and fields from all sections. This is useful when you want to load all secrets from an item at once.
57+
58+
**Authentication:**
59+
1Password authentication must be provided via environment variable:
60+
- `OP_SERVICE_ACCOUNT_TOKEN` (required): Service account token for 1Password Connect API authentication
61+
62+
**Example - Fetch a specific field:**
63+
```yaml
64+
providers:
65+
- kind: 1password
66+
id: onepassword-prod
67+
ref: op://Production/MyApp/API_KEY
68+
```
69+
70+
**Example - Fetch a whole section:**
71+
```yaml
72+
providers:
73+
- kind: 1password
74+
id: onepassword-db
75+
ref: op://Production/MyApp/Database
76+
keys:
77+
HOST: DB_HOST
78+
PORT: DB_PORT
79+
USERNAME: DB_USER
80+
PASSWORD: DB_PASSWORD
81+
```
82+
83+
This example fetches all fields from the "Database" section. When using `keys`, only the specified fields will be mapped. If `keys` is omitted, all fields from the section will be loaded.
84+
85+
**Example - Fetch whole item with section prefixes:**
86+
```yaml
87+
providers:
88+
- kind: 1password
89+
id: onepassword-app
90+
ref: op://Production/MyApp
91+
use_section_prefix: true
92+
keys:
93+
API_KEY: ==
94+
Database_HOST: ==
95+
Database_PORT: ==
96+
Redis_HOST: ==
97+
```
98+
99+
This example fetches all fields from the entire item. With `use_section_prefix: true`, fields from sections are prefixed (e.g., `Database_HOST`), while top-level fields remain unprefixed (e.g., `API_KEY`).
100+
101+
**Example - Fetch whole item without section prefixes:**
102+
```yaml
103+
providers:
104+
- kind: 1password
105+
id: onepassword-app
106+
ref: op://Production/MyApp
107+
use_section_prefix: false
108+
```
109+
110+
This example fetches all fields from the entire item without section prefixes. Field names will be just the field names (e.g., `HOST`, `PORT`). Top-level fields take precedence over section fields with the same name (warnings are logged). If the same field name exists in multiple sections, an error will be raised to prevent collisions.
111+
112+
**Section Prefix Behavior:**
113+
- **Default (no prefix)**: When `use_section_prefix` is not specified or set to `false`, fields use just their field names (e.g., `HOST`, `PORT`). This works well when field names are unique across sections.
114+
- **With prefix**: When `use_section_prefix: true`, fields from sections are prefixed with the section name (e.g., `Database_HOST`, `Database_PORT`). This prevents collisions when the same field name exists in multiple sections.
115+
116+
**Collision Handling and Priority:**
117+
When fetching secrets without section prefixes, sstart handles collisions with a clear priority system:
118+
119+
1. **Top-level fields take precedence**: If a field name exists both as a top-level field and in a section, the top-level field value will be used. A warning will be logged suggesting how to access the section field instead.
120+
121+
2. **Ambiguous references**: When using a reference like `op://vault/item/DB` where both a top-level field "DB" and a section "DB" exist, sstart will:
122+
- Use the top-level field (priority)
123+
- Log a warning about the ambiguous reference
124+
- Suggest renaming either the top-level field or the section in 1Password to avoid ambiguity, or use `use_section_prefix: true` when fetching the whole item to access both
125+
126+
3. **Section-to-section collisions**: If the same field name exists in multiple sections (e.g., `HOST` in both "Database" and "Redis" sections), sstart will return an error. Use `use_section_prefix: true` to load both fields with distinct names.
127+
128+
**Examples of collision handling:**
129+
130+
- **Top-level field vs section field**: If item has top-level field `DB` and section `DB` with field `HOST`:
131+
- `op://vault/item/DB` → Uses top-level field `DB`, warns about section
132+
- `op://vault/item` → Uses top-level field `DB`, section field `HOST` is loaded (no collision)
133+
- If section `DB` also had a field named `DB`, the top-level field takes precedence, and a warning is logged
134+
135+
- **Multiple sections with same field name**: If item has `HOST` in both "Database" and "Redis" sections:
136+
- `op://vault/item` (without prefix) → Error: collision detected
137+
- `op://vault/item` with `use_section_prefix: true` → Loads both as `Database_HOST` and `Redis_HOST`
138+
139+
**How it works:**
140+
The provider uses the 1Password Connect SDK to authenticate with 1Password Connect (or 1Password Business/Enterprise) using a service account token. It resolves vault and item names to IDs, then retrieves the specified secrets.
141+
142+
sstart implements custom support for 1Password reference formats beyond single-field references:
143+
- **Section-level fetching** (`op://vault/item/section`): When a reference points to a section (without a field name), sstart fetches all fields within that section and makes them available as environment variables.
144+
- **Item-level fetching** (`op://vault/item`): When a reference points to just a vault and item (without section or field), sstart fetches all fields from the entire item, including top-level fields and fields from all sections.
145+
146+
This custom implementation allows you to efficiently load multiple secrets in a single provider configuration, rather than requiring separate provider entries for each field.
147+
148+
**1Password Connect Setup:**
149+
To use this provider, you need:
150+
1. 1Password Connect server running (or access to 1Password Business/Enterprise)
151+
2. A service account token created in your 1Password account
152+
3. The service account must have access to the vaults and items you want to retrieve
153+
154+
For more information on setting up 1Password Connect, see the [1Password Connect documentation](https://developer.1password.com/docs/connect).
155+
36156
### AWS Secrets Manager (`aws_secretsmanager`)
37157

38158
Retrieves secrets from AWS Secrets Manager. Supports both JSON secrets (parsed into multiple key-value pairs) and plain text secrets.

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# 🤫 sstart: Secure Start for Cloud-Native Secrets
2-
sstart is a minimalist, zero-persistence CLI tool that securely retrieves application secrets from multiple backend sources (Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager) and injects them as environment variables into any wrapped process.
2+
sstart is a minimalist, zero-persistence CLI tool that securely retrieves application secrets from multiple backend sources (1Password, Vault, AWS Secrets Manager, Azure Key Vault, GCP Secret Manager) and injects them as environment variables into any wrapped process.
33

44
It is the spiritual successor to the [Teller](https://github.com/tellerops/teller), modernized and rebuilt in Go for fast execution, reliability, and cross-platform simplicity.
55

66
## 🎯 Why sstart?
77

8-
Say goodbye to `.env` files. With sstart, we eliminate the need for static `.env` files that store secrets in your project directory. Instead, secrets are pulled at runtime from secure backends like AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, or GCP Secret Manager.
8+
Say goodbye to `.env` files. With sstart, we eliminate the need for static `.env` files that store secrets in your project directory. Instead, secrets are pulled at runtime from secure backends like 1Password, AWS Secrets Manager, Azure Key Vault, HashiCorp Vault, or GCP Secret Manager.
99

1010
This approach provides multiple security benefits:
1111

@@ -17,7 +17,7 @@ You define all your required secrets from all your sources in a single, declarat
1717

1818
## Features
1919

20-
- 🔐 **Multiple Secret Providers**: Support for AWS Secrets Manager, Azure Key Vault, Bitwarden, HashiCorp Vault, GCP Secret Manager, dotenv files, and more
20+
- 🔐 **Multiple Secret Providers**: Support for 1Password, AWS Secrets Manager, Azure Key Vault, Bitwarden, HashiCorp Vault, GCP Secret Manager, dotenv files, and more
2121
- 🔄 **Combine Secrets**: Merge secrets from multiple providers
2222
- 🚀 **Subprocess Execution**: Automatically inject secrets into subprocesses
2323
- 🔒 **Secure by Default**: Secrets never appear in shell history or logs

go.mod

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ require (
1818
cloud.google.com/go/iam v1.5.2 // indirect
1919
cloud.google.com/go/secretmanager v1.16.0 // indirect
2020
dario.cat/mergo v1.0.2 // indirect
21+
github.com/1password/onepassword-sdk-go v0.3.1 // indirect
2122
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 // indirect
2223
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 // indirect
2324
github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect
@@ -52,12 +53,15 @@ require (
5253
github.com/docker/docker v28.5.1+incompatible // indirect
5354
github.com/docker/go-connections v0.6.0 // indirect
5455
github.com/docker/go-units v0.5.0 // indirect
56+
github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a // indirect
5557
github.com/ebitengine/purego v0.8.4 // indirect
58+
github.com/extism/go-sdk v1.7.0 // indirect
5659
github.com/felixge/httpsnoop v1.0.4 // indirect
5760
github.com/go-jose/go-jose/v4 v4.1.3 // indirect
5861
github.com/go-logr/logr v1.4.3 // indirect
5962
github.com/go-logr/stdr v1.2.2 // indirect
6063
github.com/go-ole/go-ole v1.3.0 // indirect
64+
github.com/gobwas/glob v0.2.3 // indirect
6165
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
6266
github.com/google/s2a-go v0.1.9 // indirect
6367
github.com/google/uuid v1.6.0 // indirect
@@ -73,6 +77,7 @@ require (
7377
github.com/hashicorp/go-sockaddr v1.0.7 // indirect
7478
github.com/hashicorp/hcl v1.0.1-vault-7 // indirect
7579
github.com/hashicorp/vault/api v1.22.0 // indirect
80+
github.com/ianlancetaylor/demangle v0.0.0-20240805132620-81f5be970eca // indirect
7681
github.com/inconshreveable/mousetrap v1.1.0 // indirect
7782
github.com/klauspost/compress v1.18.0 // indirect
7883
github.com/kylelemons/godebug v1.1.0 // indirect
@@ -102,6 +107,8 @@ require (
102107
github.com/testcontainers/testcontainers-go v0.40.0 // indirect
103108
github.com/testcontainers/testcontainers-go/modules/localstack v0.40.0 // indirect
104109
github.com/testcontainers/testcontainers-go/modules/vault v0.40.0 // indirect
110+
github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834 // indirect
111+
github.com/tetratelabs/wazero v1.9.0 // indirect
105112
github.com/tklauser/go-sysconf v0.3.13 // indirect
106113
github.com/tklauser/numcpus v0.7.0 // indirect
107114
github.com/yusufpapurcu/wmi v1.2.4 // indirect
@@ -111,6 +118,7 @@ require (
111118
go.opentelemetry.io/otel v1.38.0 // indirect
112119
go.opentelemetry.io/otel/metric v1.38.0 // indirect
113120
go.opentelemetry.io/otel/trace v1.38.0 // indirect
121+
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
114122
golang.org/x/crypto v0.45.0 // indirect
115123
golang.org/x/mod v0.29.0 // indirect
116124
golang.org/x/net v0.47.0 // indirect

go.sum

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ cloud.google.com/go/secretmanager v1.16.0 h1:19QT7ZsLJ8FSP1k+4esQvuCD7npMJml6hYz
1010
cloud.google.com/go/secretmanager v1.16.0/go.mod h1://C/e4I8D26SDTz1f3TQcddhcmiC3rMEl0S1Cakvs3Q=
1111
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
1212
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
13+
github.com/1password/onepassword-sdk-go v0.3.1 h1:dz0LrYuIh/HrZ7rxr8NMymikNLBIXhyj4NBmo5Tdamc=
14+
github.com/1password/onepassword-sdk-go v0.3.1/go.mod h1:kssODrGGqHtniqPR91ZPoCMEo79mKulKat7RaD1bunk=
1315
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc=
1416
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw=
1517
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.13.1 h1:Hk5QBxZQC1jb2Fwj6mpzme37xbCDdNTxU7O9eb5+LB4=
@@ -86,8 +88,12 @@ github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pM
8688
github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE=
8789
github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
8890
github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
91+
github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a h1:UwSIFv5g5lIvbGgtf3tVwC7Ky9rmMFBp0RMs+6f6YqE=
92+
github.com/dylibso/observe-sdk/go v0.0.0-20240819160327-2d926c5d788a/go.mod h1:C8DzXehI4zAbrdlbtOByKX6pfivJTBiV9Jjqv56Yd9Q=
8993
github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw=
9094
github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
95+
github.com/extism/go-sdk v1.7.0 h1:yHbSa2JbcF60kjGsYiGEOcClfbknqCJchyh9TRibFWo=
96+
github.com/extism/go-sdk v1.7.0/go.mod h1:Dhuc1qcD0aqjdqJ3ZDyGdkZPEj/EHKVjbE4P+1XRMqc=
9197
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
9298
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
9399
github.com/go-jose/go-jose/v4 v4.1.1 h1:JYhSgy4mXXzAdF3nUx3ygx347LRXJRrpgyU3adRmkAI=
@@ -104,6 +110,8 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre
104110
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
105111
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
106112
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
113+
github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
114+
github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
107115
github.com/golang-jwt/jwt v3.2.1+incompatible h1:73Z+4BJcrTC+KczS6WvTPvRGOp1WmfEP4Q1lOd9Z/+c=
108116
github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9vvo=
109117
github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE=
@@ -137,6 +145,8 @@ github.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y
137145
github.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM=
138146
github.com/hashicorp/vault/api v1.22.0 h1:+HYFquE35/B74fHoIeXlZIP2YADVboaPjaSicHEZiH0=
139147
github.com/hashicorp/vault/api v1.22.0/go.mod h1:IUZA2cDvr4Ok3+NtK2Oq/r+lJeXkeCrHRmqdyWfpmGM=
148+
github.com/ianlancetaylor/demangle v0.0.0-20240805132620-81f5be970eca h1:T54Ema1DU8ngI+aef9ZhAhNGQhcRTrWxVeG07F+c/Rw=
149+
github.com/ianlancetaylor/demangle v0.0.0-20240805132620-81f5be970eca/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw=
140150
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
141151
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
142152
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
@@ -202,6 +212,10 @@ github.com/testcontainers/testcontainers-go/modules/localstack v0.40.0 h1:b+lN2C
202212
github.com/testcontainers/testcontainers-go/modules/localstack v0.40.0/go.mod h1:8LuTSboTo2MJKFKV5xH6z4ZH1s3jhRJWwvtPJzKogj4=
203213
github.com/testcontainers/testcontainers-go/modules/vault v0.40.0 h1:8mNnxEsbh+MT3PQMWgSmyCtyAUBx2RRK8ojgV7eqCQU=
204214
github.com/testcontainers/testcontainers-go/modules/vault v0.40.0/go.mod h1:p5HvonDtban/rtZrQ3uoXtl7XdX3bTJiZls7PShebfo=
215+
github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834 h1:ZF+QBjOI+tILZjBaFj3HgFonKXUcwgJ4djLb6i42S3Q=
216+
github.com/tetratelabs/wabin v0.0.0-20230304001439-f6f874872834/go.mod h1:m9ymHTgNSEjuxvw8E7WWe4Pl4hZQHXONY8wE6dMLaRk=
217+
github.com/tetratelabs/wazero v1.9.0 h1:IcZ56OuxrtaEz8UYNRHBrUa9bYeX9oVY93KspZZBf/I=
218+
github.com/tetratelabs/wazero v1.9.0/go.mod h1:TSbcXCfFP0L2FGkRPxHphadXPjo1T6W+CseNNY7EkjM=
205219
github.com/tklauser/go-sysconf v0.3.13 h1:GBUpcahXSpR2xN01jhkNAbTLRk2Yzgggk8IM08lq3r4=
206220
github.com/tklauser/go-sysconf v0.3.13/go.mod h1:zwleP4Q4OehZHGn4CYZDipCgg9usW5IJePewFCGVEa0=
207221
github.com/tklauser/numcpus v0.7.0 h1:yjuerZP127QG9m5Zh/mSO4wqurYil27tHrqwRoRjpr4=
@@ -230,6 +244,8 @@ go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt
230244
go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
231245
go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE=
232246
go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs=
247+
go.opentelemetry.io/proto/otlp v1.3.1 h1:TrMUixzpM0yuc/znrFTP9MMRh8trP93mkCiDVeXrui0=
248+
go.opentelemetry.io/proto/otlp v1.3.1/go.mod h1:0X1WI4de4ZsLrrJNLAQbFeLCm3T7yBkR0XqQ7niQU+8=
233249
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
234250
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
235251
golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=

internal/cli/root.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
_ "github.com/dirathea/sstart/internal/provider/bitwarden"
66
_ "github.com/dirathea/sstart/internal/provider/dotenv"
77
_ "github.com/dirathea/sstart/internal/provider/gcsm"
8+
_ "github.com/dirathea/sstart/internal/provider/onepassword"
89
_ "github.com/dirathea/sstart/internal/provider/vault"
910
"github.com/spf13/cobra"
1011
)

0 commit comments

Comments
 (0)