Class: AgentsControl::Secrets::Providers::SecretTool

Inherits:
Object
  • Object
show all
Defined in:
lib/agents_control/secrets.rb

Overview

Linux: libsecret on top of gnome-keyring or KWallet.

Instance Method Summary collapse

Constructor Details

#initialize(executor: Executor.new) ⇒ SecretTool

Returns a new instance of SecretTool.



153
154
155
# File 'lib/agents_control/secrets.rb', line 153

def initialize(executor: Executor.new)
  @executor = executor
end

Instance Method Details

#available?Boolean

Returns:

  • (Boolean)


159
# File 'lib/agents_control/secrets.rb', line 159

def available? = !binary.nil?

#delete(key) ⇒ Object



178
179
180
# File 'lib/agents_control/secrets.rb', line 178

def delete(key)
  @executor.run(binary, "clear", "service", SERVICE, "account", key).success?
end

#get(key) ⇒ Object



163
164
165
166
# File 'lib/agents_control/secrets.rb', line 163

def get(key)
  result = @executor.run(binary, "lookup", "service", SERVICE, "account", key)
  result.success? ? result.stdout.chomp : nil
end

#nameObject



157
# File 'lib/agents_control/secrets.rb', line 157

def name = "libsecret (Linux)"

#set(key, value) ⇒ Object

secret-tool reads the secret from stdin on its own — argv stays clean.



169
170
171
172
173
174
175
176
# File 'lib/agents_control/secrets.rb', line 169

def set(key, value)
  result = @executor.run(
    binary, "store", "--label=#{SERVICE} #{key}",
    "service", SERVICE, "account", key,
    stdin: value
  )
  result.success?
end

#writable?Boolean

Returns:

  • (Boolean)


161
# File 'lib/agents_control/secrets.rb', line 161

def writable? = true