11package ohdear
22
33import (
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 (
1215func 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
3845var 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+ }
0 commit comments