Skip to content

Commit 6c7a288

Browse files
committed
fix: resolve support for Oh Dear CLI 5.x
1 parent 49810df commit 6c7a288

3 files changed

Lines changed: 67 additions & 3 deletions

File tree

plugins/ohdear/api_token.go

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package ohdear
22

33
import (
4+
"context"
5+
"encoding/json"
6+
47
"github.com/1Password/shell-plugins/sdk"
58
"github.com/1Password/shell-plugins/sdk/importer"
69
"github.com/1Password/shell-plugins/sdk/provision"
@@ -12,7 +15,7 @@ import (
1215
func APIToken() schema.CredentialType {
1316
return schema.CredentialType{
1417
Name: credname.APIToken,
15-
DocsURL: sdk.URL("https://ohdear.app/docs/integrations/the-oh-dear-api#get-your-api-token"),
18+
DocsURL: sdk.URL("https://ohdear.app/docs/api/introduction#get-your-api-token"),
1619
ManagementURL: sdk.URL("https://ohdear.app/user/api-tokens"),
1720
Fields: []schema.CredentialField{
1821
{
@@ -29,12 +32,53 @@ func APIToken() schema.CredentialType {
2932
},
3033
},
3134
},
32-
DefaultProvisioner: provision.EnvVars(defaultEnvVarMapping),
35+
DefaultProvisioner: provision.TempFile(configFile,
36+
provision.Filename("config.json"),
37+
provision.SetPathAsEnvVar("OHDEAR_CONFIG_FILE_PATH"),
38+
),
3339
Importer: importer.TryAll(
3440
importer.TryEnvVarPair(defaultEnvVarMapping),
41+
TryOhdearConfigFile(),
3542
)}
3643
}
3744

3845
var defaultEnvVarMapping = map[string]sdk.FieldName{
3946
"OHDEAR_API_TOKEN": fieldname.Token,
4047
}
48+
49+
func configFile(in sdk.ProvisionInput) ([]byte, error) {
50+
config := Config{
51+
Token: in.ItemFields[fieldname.Token],
52+
}
53+
54+
contents, err := json.Marshal(config)
55+
if err != nil {
56+
return nil, err
57+
}
58+
59+
return []byte(contents), nil
60+
}
61+
62+
func TryOhdearConfigFile() sdk.Importer {
63+
return importer.TryFile("~/.ohdear/config.json", func(ctx context.Context, contents importer.FileContents, in sdk.ImportInput, out *sdk.ImportAttempt) {
64+
var config Config
65+
if err := contents.ToJSON(&config); err != nil {
66+
out.AddError(err)
67+
return
68+
}
69+
70+
if config.Token == "" {
71+
return
72+
}
73+
74+
out.AddCandidate(sdk.ImportCandidate{
75+
Fields: map[sdk.FieldName]string{
76+
fieldname.Token: config.Token,
77+
},
78+
})
79+
})
80+
}
81+
82+
type Config struct {
83+
Token string `json:"token"`
84+
}

plugins/ohdear/api_token_test.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,33 @@ func TestAPITokenProvisioner(t *testing.T) {
1616
},
1717
ExpectedOutput: sdk.ProvisionOutput{
1818
Environment: map[string]string{
19-
"OHDEAR_API_TOKEN": "SZ5rluwzbtMyyQFQNoeqEFbpVbTL0ItsXEXAMPLE",
19+
"OHDEAR_CONFIG_FILE_PATH": "/tmp/config.json",
20+
},
21+
Files: map[string]sdk.OutputFile{
22+
"/tmp/config.json": {
23+
Contents: []byte(plugintest.LoadFixture(t, "import_or_provision")),
24+
},
2025
},
2126
},
2227
},
2328
})
2429
}
2530

2631
func TestAPITokenImporter(t *testing.T) {
32+
plugintest.TestImporter(t, APIToken().Importer, map[string]plugintest.ImportCase{
33+
"config file": {
34+
Files: map[string]string{
35+
"~/.ohdear/config.json": plugintest.LoadFixture(t, "import_or_provision"),
36+
},
37+
ExpectedCandidates: []sdk.ImportCandidate{
38+
{
39+
Fields: map[sdk.FieldName]string{
40+
fieldname.Token: "SZ5rluwzbtMyyQFQNoeqEFbpVbTL0ItsXEXAMPLE",
41+
},
42+
},
43+
},
44+
},
45+
})
2746
plugintest.TestImporter(t, APIToken().Importer, map[string]plugintest.ImportCase{
2847
"environment": {
2948
Environment: map[string]string{
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"token":"SZ5rluwzbtMyyQFQNoeqEFbpVbTL0ItsXEXAMPLE"}

0 commit comments

Comments
 (0)