secretada_1.0.0_6f859734/examples/src/secret-tool.adb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
-----------------------------------------------------------------------
--  secret-tool -- Example of usage for the Secret service API
--  Copyright (C) 2017 Stephane Carrez
--  Written by Stephane Carrez (Stephane.Carrez@gmail.com)
--
--  Licensed under the Apache License, Version 2.0 (the "License");
--  you may not use this file except in compliance with the License.
--  You may obtain a copy of the License at
--
--      http://www.apache.org/licenses/LICENSE-2.0
--
--  Unless required by applicable law or agreed to in writing, software
--  distributed under the License is distributed on an "AS IS" BASIS,
--  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
--  See the License for the specific language governing permissions and
--  limitations under the License.
-----------------------------------------------------------------------
with Ada.Command_Line;
with Ada.Text_IO;
with Secret.Services;
with Secret.Attributes;
with Secret.Values;
procedure Secret.Tool is
   Count   : constant Natural := Ada.Command_Line.Argument_Count;
   Service : Secret.Services.Service_Type;
   List    : Secret.Attributes.Map;
   Value   : Secret.Values.Secret_Type;
begin
   Service.Initialize;
   List.Insert ("secret-tool", "key-password");
   List.Insert ("user", "joe");
   List.Insert ("email", "joe@gmail.com");
   if Count = 1 and then Ada.Command_Line.Argument (1) = "get" then
      Value := Service.Lookup (List);
      if Value.Is_Null then
         Ada.Text_IO.Put_Line ("The secret value is not found");
      else
         Ada.Text_IO.Put_Line ("Secret value is: " & Value.Get_Value);
      end if;
   elsif Count = 2 and then Ada.Command_Line.Argument (1) = "set" then
      Value := Secret.Values.Create (Ada.Command_Line.Argument (2));
      Service.Store (List, "Secret tool password", Value);

   elsif Count = 1 and then Ada.Command_Line.Argument (1) = "del" then
      Service.Remove (List);
   else
      Ada.Text_IO.Put_Line ("Usage: secret-tool [get|del]");
      Ada.Text_IO.Put_Line ("       secret-tool set value");
      Ada.Text_IO.Put_Line ("set  set the secret value");
      Ada.Text_IO.Put_Line ("get  get the secret value");
      Ada.Text_IO.Put_Line ("del  delete the secret value");
   end if;
end Secret.Tool;