From 308eaeed115fda1acabb4734eb5d7d3fa0a7b518 Mon Sep 17 00:00:00 2001 From: Gustavo de Paula Avelar Date: Fri, 22 Mar 2024 16:48:45 +1100 Subject: [PATCH] add hacky support to v2 --- .../parameter_resolvers/one_password.rb | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/stack_master/parameter_resolvers/one_password.rb b/lib/stack_master/parameter_resolvers/one_password.rb index 45d1a808..5e933447 100644 --- a/lib/stack_master/parameter_resolvers/one_password.rb +++ b/lib/stack_master/parameter_resolvers/one_password.rb @@ -5,6 +5,7 @@ class OnePassword < Resolver OnePasswordNotAbleToAuthenticate = Class.new(StandardError) OnePasswordBinaryNotFound = Class.new(StandardError) OnePasswordInvalidResponse = Class.new(StandardError) + OnePasswordInvalidVersion = Class.new(StandardError) array_resolver @@ -49,8 +50,9 @@ def login_item(data) def op_get_item(item, vault) validate_op_installed? - item = %x(op get item --vault='#{vault}' '#{item}' 2>&1) - item if validate_response?(item) + + get_item(item, vault, get_version) + end def create_struct(title, vault) @@ -69,7 +71,13 @@ def get_password(title, vault) end def get_secure_note(title, vault) - create_struct(title, vault).details.notesPlain + version = get_version + if version.start_with?("1") + return create_struct(title, vault).details.notesPlain + end + if version.start_with?("2") + create_struct(title, vault).fields.first.value + end end def get_items(params) @@ -80,6 +88,21 @@ def get_items(params) return get_secure_note(params['title'], params['vault']) end end + + def get_version + %x(op --version).strip + end + + def get_item(item, vault, version) + case version + when version.start_with?("1") + %x(op get item --vault='#{vault}' '#{item}' 2>&1) + when version.start_with?("2") + %x(op item get --vault='#{vault}' '#{item}' --format json 2>&1) + else + raise OnePasswordInvalidVersion, "Unsupported version of 1Password: #{version}" + end + end end end end