From 9f17a2c75e02d8188e6f0a3489fd8e24859bf5dc Mon Sep 17 00:00:00 2001 From: pandemicsyn Date: Wed, 25 Sep 2024 11:56:19 -0500 Subject: [PATCH 1/2] update items --- onepassword/main.go | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/onepassword/main.go b/onepassword/main.go index 88e0eb4..e452bc2 100644 --- a/onepassword/main.go +++ b/onepassword/main.go @@ -4,7 +4,6 @@ import ( "context" "dagger/onepassword/internal/dagger" "errors" - "fmt" onepassword "github.com/1password/onepassword-sdk-go" ) @@ -134,7 +133,21 @@ func (m *Onepassword) PutSecret( itemOverview = io } - fmt.Printf("itemOverview: %+v\n", itemOverview) + item, err := client.Items.Get(ctx, vault.ID, itemOverview.ID) + if err != nil { + return err + } + + for i, field := range item.Fields { + if field.Title == fieldName { + item.Fields[i].Value = value + } + } + + _, err = client.Items.Put(ctx, item) + if err != nil { + return err + } return nil } From 4340b8c04628f2ed6f9e645bd64ab75efbf1c341 Mon Sep 17 00:00:00 2001 From: pandemicsyn Date: Wed, 25 Sep 2024 13:24:58 -0500 Subject: [PATCH 2/2] Support updating items --- onepassword/main.go | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/onepassword/main.go b/onepassword/main.go index e452bc2..990d825 100644 --- a/onepassword/main.go +++ b/onepassword/main.go @@ -88,14 +88,14 @@ func (m *Onepassword) PutSecret( // Name of the vault to search vaultName string, - // Name of the item to find + // Name of the item to update or create itemName string, - // Name of the field to find + // Name of the field to update or create fieldName string, // Value to set - value string, + value *dagger.Secret, ) error { serviceAccountPlaintext, err := serviceAccount.Plaintext(ctx) if err != nil { @@ -138,13 +138,7 @@ func (m *Onepassword) PutSecret( return err } - for i, field := range item.Fields { - if field.Title == fieldName { - item.Fields[i].Value = value - } - } - - _, err = client.Items.Put(ctx, item) + _, err = upsertField(ctx, client, item, fieldName, value) if err != nil { return err } @@ -208,3 +202,24 @@ func findSectionID(item onepassword.Item, sectionName string) (string, error) { } return "", ErrSectionNotFound } + +func upsertField(ctx context.Context, client *onepassword.Client, item onepassword.Item, fieldName string, value *dagger.Secret) (onepassword.Item, error) { + plainValue, err := value.Plaintext(ctx) + if err != nil { + return item, err + } + + for i, field := range item.Fields { + if field.Title == fieldName { + item.Fields[i].Value = plainValue + return client.Items.Put(ctx, item) + } + } + + item.Fields = append(item.Fields, onepassword.ItemField{ + Title: fieldName, + Value: plainValue, + }) + + return client.Items.Put(ctx, item) +}