Class: Browserctl::SecretResolvers::OnePassword

Inherits:
Base
  • Object
show all
Defined in:
lib/browserctl/secret_resolvers/one_password.rb

Constant Summary collapse

SAFE_REFERENCE =
%r{\A[a-zA-Z0-9._\-/]+\z}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.schemeObject



8
# File 'lib/browserctl/secret_resolvers/one_password.rb', line 8

def self.scheme = "op"

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/browserctl/secret_resolvers/one_password.rb', line 10

def available?
  system("which", "op", out: File::NULL, err: File::NULL)
end

#resolve(reference) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/browserctl/secret_resolvers/one_password.rb', line 16

def resolve(reference)
  unless SAFE_REFERENCE.match?(reference)
    raise SecretResolverError, "invalid 1Password reference format: #{reference.inspect}"
  end

  result, status = Open3.capture2("op", "read", "op://#{reference}")
  raise SecretResolverError, "1Password item not found: op://#{reference}" unless status.success?

  result.chomp
end