leeloo 0.0.6 → 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 84991bbf18c91fcd4315bbae7576909d96d46691
4
- data.tar.gz: f4bb95c1331cb6581d2ca5676b399dc8a7659af6
3
+ metadata.gz: f56c229232c4e7550e3f52b73ea9ceacfaa83fb6
4
+ data.tar.gz: a219628daa29826121b2d7ae116d4b713ea1f7fc
5
5
  SHA512:
6
- metadata.gz: b0db2a72e089710177c0fc69fb96ce0e79b1a82a1afb43f0b58287d8b5296a7f553616373fc8015c9c10a4b76e55be73945e0ff96a2a75dbfa93a69b8ca36487
7
- data.tar.gz: e83a3052e5a78d840054d0020182568286ba98047c39c79fcd4b9fa56033892757d4b74d05164ed22b08f7dad59b70775707101c708f41fa8b0626e726b77460
6
+ metadata.gz: 3bef0f466d94ddf5f98770f006227d05b0d6fa98850ba2256877b841f7f65089e35645537746b40cefbde81ee871e8448b46ecd044507eab18f3962125ba50d9
7
+ data.tar.gz: 2f06ede48af128db71ad440565fe59908e5b236f4312bd4915af225b0b7c988446a3443e7cf18abf8af2ea85ffcea10ac43937c94a9c9ea84a5dd33fd59d7680
data/lib/leeloo.rb CHANGED
@@ -10,5 +10,3 @@ module Leeloo
10
10
  Command.new.run
11
11
  end
12
12
  end
13
-
14
- Leeloo.start
@@ -40,11 +40,11 @@ module Leeloo
40
40
 
41
41
  command :"list secret" do |c|
42
42
  c.syntax = 'leeloo list secret [options]'
43
- c.description = "Display secrets list of keystore (private by default)"
43
+ c.description = "Display secrets list of keystore"
44
44
  c.option '--keystore STRING', String, 'a selected keystore'
45
45
 
46
46
  c.action do |args, options|
47
- options.default :keystore => 'private'
47
+ options.default :keystore => Config.default['keystore']
48
48
  Secret::list Config.get_keystore(options.keystore)
49
49
  end
50
50
  end
@@ -68,11 +68,11 @@ module Leeloo
68
68
 
69
69
  command :"sync secret" do |c|
70
70
  c.syntax = 'leeloo recrypt secrets'
71
- c.description = "(re)sync all secrets from a given keystore (private by default)"
71
+ c.description = "(re)sync all secrets from a given keystore"
72
72
  c.option '--keystore STRING', String, 'a selected keystore'
73
73
 
74
74
  c.action do |args, options|
75
- options.default :keystore => 'private'
75
+ options.default :keystore => Config.default['keystore']
76
76
  Secret.sync_secrets Config.get_keystore(options.keystore)
77
77
  say "keystore synced successfully"
78
78
  end
@@ -81,7 +81,7 @@ module Leeloo
81
81
 
82
82
  command :"add secret" do |c|
83
83
  c.syntax = 'leeloo add secret <name>'
84
- c.description = "Add a new secret in a keystore (private by default)"
84
+ c.description = "Add a new secret in a keystore"
85
85
  c.option '--keystore STRING', String, 'a selected keystore'
86
86
  c.option '--generate INTEGER', Integer, 'a number of randomized characters'
87
87
  c.option '--stdin', nil, 'secret given by stdin pipe'
@@ -91,7 +91,7 @@ module Leeloo
91
91
  abort "name is missing" unless args.length == 1
92
92
  name = args.first
93
93
 
94
- options.default :keystore => 'private'
94
+ options.default :keystore => Config.default['keystore']
95
95
  keystore = Config.get_keystore(options.keystore)
96
96
 
97
97
  secret = nil
@@ -114,7 +114,7 @@ module Leeloo
114
114
 
115
115
  command :"read secret" do |c|
116
116
  c.syntax = 'leeloo read secret <name>'
117
- c.description = "Display a secret from a keystore (private by default)"
117
+ c.description = "Display a secret from a keystore"
118
118
  c.option '--keystore STRING', String, 'a selected keystore'
119
119
  c.option '--clipboard', nil, 'copy to clipboard'
120
120
 
@@ -122,7 +122,7 @@ module Leeloo
122
122
  abort "name is missing" unless args.length == 1
123
123
  name = args.first
124
124
 
125
- options.default :keystore => 'private'
125
+ options.default :keystore => Config.default['keystore']
126
126
  keystore = Config.get_keystore(options.keystore)
127
127
 
128
128
  secret = Secret.read_secret keystore, name
@@ -132,6 +132,25 @@ module Leeloo
132
132
  alias_command :read, :"read secret"
133
133
  alias_command :get, :"read secret"
134
134
  end
135
+
136
+ command :"remove secret" do |c|
137
+ c.syntax = 'leeloo remove secret <name>'
138
+ c.description = "Remove a secret from a keystore"
139
+ c.option '--keystore STRING', String, 'a selected keystore'
140
+
141
+ c.action do |args, options|
142
+ abort "name is missing" unless args.length == 1
143
+ name = args.first
144
+
145
+ options.default :keystore => Config.default['keystore']
146
+ keystore = Config.get_keystore(options.keystore)
147
+
148
+ Secret.remove_secret keystore, name
149
+ say "#{name} removed successfully"
150
+ end
151
+ alias_command :delete, :"remove secret"
152
+ alias_command :erase, :"remove secret"
153
+ end
135
154
  end
136
155
  end
137
156
  end
data/lib/leeloo/config.rb CHANGED
@@ -8,6 +8,12 @@ module Leeloo
8
8
 
9
9
  @@keystores = []
10
10
 
11
+ @@default = { "keystore" => "private" }
12
+
13
+ def self.default
14
+ @@default
15
+ end
16
+
11
17
  def self.init
12
18
  Keystore::add_keystore "private", "#{PATH}/private"
13
19
  Config::add_keystore "private", "#{PATH}/private"
@@ -15,8 +21,11 @@ module Leeloo
15
21
 
16
22
  def self.list_keystores
17
23
  rows = []
18
- @@keystores.each { |keystore| rows << [keystore['name'], keystore['path']] }
19
- say Terminal::Table.new :headings => ['Name', 'Path'], :rows => rows
24
+ @@keystores.each do |keystore|
25
+ is_default = '*' if keystore['name'] == @@default['keystore']
26
+ rows << [keystore['name'], keystore['path'], is_default ]
27
+ end
28
+ say Terminal::Table.new :headings => ['Name', 'Path', 'Default'], :rows => rows
20
29
  end
21
30
 
22
31
  def self.load
@@ -24,6 +33,9 @@ module Leeloo
24
33
  if File.exist? "#{PATH}/keystores"
25
34
  @@keystores = YAML.load_file "#{PATH}/keystores"
26
35
  end
36
+ if File.exist? "#{PATH}/config"
37
+ @@default = YAML.load_file "#{PATH}/config"
38
+ end
27
39
  end
28
40
 
29
41
  def self.add_keystore name, path
data/lib/leeloo/secret.rb CHANGED
@@ -7,7 +7,7 @@ module Leeloo
7
7
  class Secret
8
8
 
9
9
  def self.list(keystore)
10
- puts TTY::Tree.new("#{keystore}/secrets").render
10
+ puts TTY::Tree.new("#{keystore}/secrets").render.gsub("\.gpg","")
11
11
  end
12
12
 
13
13
  def self.add_secret(keystore, name, secret)
@@ -18,7 +18,7 @@ module Leeloo
18
18
 
19
19
  crypto = GPGME::Crypto.new :always_trust => true
20
20
  crypto.encrypt secret,
21
- :output => File.open("#{keystore}/secrets/#{name}","w+"),
21
+ :output => File.open("#{keystore}/secrets/#{name}.gpg","w+"),
22
22
  :recipients => recipients
23
23
 
24
24
  g = Git.open keystore
@@ -28,7 +28,13 @@ module Leeloo
28
28
 
29
29
  def self.read_secret(keystore, name)
30
30
  crypto = GPGME::Crypto.new
31
- crypto.decrypt File.open("#{keystore}/secrets/#{name}")
31
+ crypto.decrypt File.open("#{keystore}/secrets/#{name}.gpg")
32
+ end
33
+
34
+ def self.delete_secret(keystore, name)
35
+ g = Git.open keystore
36
+ g.remove "#{keystore}/secrets/#{name}.gpg"
37
+ g.commit "secret #{name} removed"
32
38
  end
33
39
 
34
40
  def self.sync_secrets keystore
@@ -1,4 +1,4 @@
1
1
  module Leeloo
2
- VERSION = '0.0.6'.freeze
2
+ VERSION = '0.0.7'.freeze
3
3
  DESCRIPTION = "The easiest way to share securely your secrets".freeze
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leeloo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sylvek
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-24 00:00:00.000000000 Z
11
+ date: 2017-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander