35 lines
1.2 KiB
Text
35 lines
1.2 KiB
Text
|
#!/usr/bin/env lua
|
||
|
|
||
|
-- usage: secret-tool store --label='label' attribute value ...
|
||
|
-- secret-tool lookup attribute value ...
|
||
|
-- secret-tool clear attribute value ...
|
||
|
-- secret-tool search [--all] [--unlock] attribute value ...
|
||
|
|
||
|
local action = ...
|
||
|
|
||
|
local options = {}
|
||
|
for line in io.stdin:lines() do
|
||
|
local key, value = line:match("^(.*)=(.*)$")
|
||
|
options[key]=value
|
||
|
end
|
||
|
|
||
|
if action == "get" then
|
||
|
local command = string.format('secret-tool lookup application git username %s host %s', options.username, options.host, options.username, options.host)
|
||
|
local file = io.popen(command, "r")
|
||
|
local password = file:read("all")
|
||
|
if password~="" then
|
||
|
print("password="..password)
|
||
|
else
|
||
|
os.exit(1, true)
|
||
|
end
|
||
|
file:close()
|
||
|
elseif action == "store" then
|
||
|
local command = string.format('secret-tool store --label="git %s@%s" application git username %s host %s', options.username, options.host, options.username, options.host)
|
||
|
local file = io.popen(command, "w")
|
||
|
file:write(options.password)
|
||
|
file:close()
|
||
|
elseif action == "erase" then
|
||
|
local command = string.format('secret-tool clear application git username %s host %s', options.username, options.host, options.username, options.host)
|
||
|
os.execute(command)
|
||
|
end
|