yaml_vault 0.6.0 → 1.0.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d513c736945058b14e097674eb7f2a4743718a0b
4
- data.tar.gz: 417af775003ec2105570ef50ce819303a2561d88
3
+ metadata.gz: 83380246e15ea67f6eb6dc297a36213af8bf79d2
4
+ data.tar.gz: c70bf3337dad0f1e1e2b79093028f2e59ee4b7b1
5
5
  SHA512:
6
- metadata.gz: fce2b4f85b47332badef4c03882d86fb83cfac33ee9da92b376512de571272b5bf4580dfccee0bcbe42e359c98356a282197c1b0466e9bee1fdb39a358ba2b35
7
- data.tar.gz: 8e8abd2ec36cb12797f110d95043f5a8947f1ebf74246da0b967779252ccfb781aa80128a9a91716f6455f26fa2debb4acfe176cfe874955c8e5f09942089016
6
+ metadata.gz: 516adae2c3ab2decc1770ccaf697ce85573a5105d866a52c7a48aee459fb234438e16c71e5bdc5024fa4d9d9a75dea56f135abeff42187d158beb71069d2567b
7
+ data.tar.gz: 96cd43b5bcaf4502cf22068a562a62925a1193fcaa85978c49fd0ea7633cacc919e14b90eb858624b61514fc9947c865cade3bd4a615bc00b11d1dc7e390f307
data/.dockerignore ADDED
@@ -0,0 +1,2 @@
1
+ .bundle
2
+ .git
data/Gemfile CHANGED
@@ -2,3 +2,6 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in yaml_vault.gemspec
4
4
  gemspec
5
+
6
+ gem "aws-sdk"
7
+ gem "google-api-client"
data/README.md CHANGED
@@ -3,6 +3,11 @@
3
3
 
4
4
  Yaml file encryption/decryption helper.
5
5
 
6
+ ## Breaking Change from 0.x to 1.0
7
+ - Output YAML file keeps alias & anchor syntax & tag info. (But empty line is trimmed)
8
+ - `--key` format is changed. (Need `$` as root document at first)
9
+ - `--key` supports new formats. (Root Doc, Wildcard, Regexp, Quote)
10
+
6
11
  ## Encryption Algorithm
7
12
 
8
13
  yaml_vault uses ActiveSupport::MessageEncryptor.
@@ -32,22 +37,48 @@ Or install it yourself as:
32
37
 
33
38
  ```yml
34
39
  # secrets.yml
40
+
41
+ default: &default
42
+ hoge: fuga
43
+ aaa: true
44
+ bbb: 2
45
+
35
46
  foo: bar
36
47
 
48
+ complicated:
49
+ - 1
50
+ - ["hoge", "fuga"]
51
+ - [{key1: val1, key2: val2}, {key3: val3}]
52
+ - a:
53
+ b:
54
+ c: d
55
+ e: !ruby/range 1..10
56
+
57
+ test:
58
+ <<: *default
59
+ hoge:
60
+ - 1
61
+ - 2
62
+ - 3
63
+
37
64
  vault:
38
65
  secret_data: "hogehoge"
39
66
  secrets:
67
+ - 0
40
68
  - 1
41
- - 2
42
- - "three"
69
+ - "two"
43
70
  - true
44
71
  - four: 4
72
+ - :five
73
+ - :a:
74
+ b: !ruby/range 1..10
75
+ - [{key1: val1, key2: val2}, {key3: val3}]
45
76
  ```
46
77
 
47
78
  yaml_vault encrypts values under `vault` key.
48
79
 
49
80
  ```
50
- % yaml_vault encrypt secrets.yml -o encrypted_secrets.yml
81
+ % yaml_vault encrypt secrets.yml -o encrypted_secrets.yml"
51
82
  Enter passphrase: <enter your passphrase>
52
83
  ```
53
84
 
@@ -55,16 +86,43 @@ output is ...
55
86
 
56
87
  ```yml
57
88
  # encrypted_secrets.yml
58
- ---
59
- foo: bar
89
+
90
+ default: &default
91
+ hoge: cTlEZkloUDlBS0F3VGdzL25PcXZRUT09LS1QdEFSZklJRlpGTWNVLzU5RC9IT2VnPT0=--f68324e76662ee92be4ff11faabf963bcba9b464d2a0af8cb505611755cf698c
92
+ aaa: RUNneXhXYnBVVVRod0o1aTN2ZkRRZz09LS1BYjBYQXp3OGI2dE9TMERKNVZGbzd3PT0=--81ca6f9320426bfb52e4318c209ebe9e1e0f7ff54567aed4dd6a0ae9d7dce22b
93
+ bbb: c2ExRXFpUXZKN1ltanRRUHpxMGduQT09LS1jWjVpbG9tTk9BRFdRc0QvbTBSVFBBPT0=--c63c47a104032b6aa4169ec58df5d2c4e0c5f38febbfb8f2167ae034fb93f488
94
+ foo: cWs4SmFVN3NXMGNra2tMUS9Ucmx5Zz09LS1meElVMXp0MSs0UGtrbW1tcnFKTnBnPT0=--ce755376767167c71a389637080465884295be1094e203a5c5ef396c2f13b7a8
95
+ complicated:
96
+ - ejBlc09wejFITmRpOUVBWVduQmZiQT09LS12YzdZN1hselkzQWNIOWpYd3QrR0dRPT0=--1fa11f7719fb0ffc7ce50eda52b8813d8ca547c341e710c044f8282767a22cfb
97
+ - ["ZHFlWjN3cUdMdFdFTDQwM2w0WW8xUT09LS1aOTNwU2NtQ0IvWHNYU1dJZGFCMUl3PT0=--b1ac20a6388d46e2e36bb50553cf89af673fbb4ff7ab83e96f0a315e806f5cd0",
98
+ "L0pBVHVMSXdlMEVQbTRKTGJKb2pOZz09LS1xTjRRbEs3SFpDK2szRlpDYTFuYlV3PT0=--d65702ec4880c52dfe074a12af02498e16b84452231ca2390205a752b19b4986"]
99
+ - [{key1: dmNxVjI3c242YngwcHY4cGhJTmRZUT09LS1jYXh1LzdyTy9FK1VwVjVidkU1aUNBPT0=--b04624c5b3a7c5dfbdc5a69811cb5a194fbbd6da0d2266231d25d0bee9da3bf6,
100
+ key2: eHBOM0xlRmczRFl1UERRdCtzbGF3dz09LS1TTjdWdHlqVlIreUhtekE0VGpsVEt3PT0=--ccd53fcfc3d3f51f5b4a97f5b1508e77e9149b0100995e0588b289fde920aba7},
101
+ {key3: VHg2V2VHWjZCcHhHRWJZTHFXZGhUZz09LS1kTisvY3FZaDlaTEFjODNXeFQwTjFBPT0=--e6f809a272f4a7b347f4fcf28241cd51b1293310a1e7d372f19488c2c7a726e2}]
102
+ - a:
103
+ b:
104
+ c: d254QmFnRFprMUJldDBkRjlVWUpMQT09LS1CTFhQUUQzWUw3K3FUQnJVWkFLRzdnPT0=--85522ae049be7808ae77b586c9e9e1af225b08c44becbe60ec1995f2f4b31668
105
+ e: enBYUkYrMkt1ZkdHd2JHbzAyNFo3czBpVmZRU0psaDNMalcyU2lKbEQvUT0tLVF5QSt6RXd2L0ptbHp0UVZCcm9LdXc9PQ==--06e9fa609a5a8f9f81997b314e54a91959088819b8a0f05fede68769d841ee3b
106
+ test:
107
+ <<: *default
108
+ hoge:
109
+ - eERDbWVSeFhZNkJzNVFvSkRVMWFaZz09LS02WVFSamRDbmxEbXF4WExkSTFvUzl3PT0=--05bf3dcd005b32455409c70212d64452b0af3ec78471fa69760ad85dcd6147d4
110
+ - Y1BPRGZIQys0bTBJdFJuV21WSWJBUT09LS1xZFdQcmVpd3ltWnVSWEttcVZ1Z3VRPT0=--6c57387b420bc569494a0308e896d8426ec7b6a649a6a1f890e779bc792fc9a0
111
+ - anVLa2dXTWo1ckVVTlhQZG0vdVRHZz09LS04K3FIV2lsSUI5V01pR1ljS3lCWDVnPT0=--545a128c08152415ff27c35c89cb0ab1b5625530716ac8f8daf5f2e61fbe450c
60
112
  vault:
61
- secret_data: SzZoOGlpcSs4UlBaQnhTYWx0YlN3NHk2QXhiZGYvVmpsc0c3ckllSlh1TT0tLU13ZERzRWsxaGc0Y090blNIdXVVMmc9PQ==--24b2af56d2563776ca316dbfa243333dd053fea1
113
+ secret_data: "NUR1aFdaMjMrSkI2MyswRC84UXJzWUprVXgvZnBmRXhBM0dqUWdpOTBMaz0tLUJ4NmtpeUQ3dG0rN080cDZMWmlwc1E9PQ==--7e812eabdc22af8e46db8a7b8f361deb6484d3aa8568d4bc95d6e73c00149c28"
62
114
  secrets:
63
- - d3hHQVBMZXNsZVJxekdyQ3BjaVBmQT09LS1NQ0Nhckh2MmNraTB0M0U2czhoS1hBPT0=--9b0260204b381a85ba937ee2c056d841c8b85bae
64
- - dnQzVHJxZ1FXNmFuOE5rQ3p5WFZtdz09LS12ZzlsMWhVNU5aMGdEVCtsK1Y5OWN3PT0=--d9dccae2b49e88331b32ffed072513aee7ffbc22
65
- - VW5DSnA0a3hCSFJlVktVQUZFQkloQT09LS1qQndVOEt2WCtiRm9zeUN3Qm95NUJnPT0=--b4459fe0f110d8a4d64a704c5bebe4e8dc3b566f
66
- - OENucHV3K2ZjSzlHTmdESEFJSHhVdz09LS15OUlRaCtlVHVmTDVFMFl2a2pXZkZBPT0=--00f630b1732e73678ebe918a386dd4152c5e9e99
67
- - four: SXBLZjc0Y2YzRnNBR0FaVzU5SkF0QT09LS1YN3FseWZYcTJ4cEVzSUJmSExOdnNBPT0=--c8dda633ddaba2853161655ab807926f23ea8e59
115
+ - emExNlNIQ2tiNTliU1ZhU1FzUXBtQT09LS1pajcyYUU0bnlYSlorTEtFOEZyZVRRPT0=--c8483428c33401e99e55e7634ba468bcba219ab02034bb4ad80c89d639f52323
116
+ - NXJ4c2JId0xLWUk0dHY2NHJyVzNIdz09LS0vUnlpWGptaitmYUZ0bk4zY1I0YWVnPT0=--18f9764a068ba555c5261be70de469e0460ef14b8a1636f418bddcb0b7b4ffcf
117
+ - "WUFwWTEzK1lpOHJseGEwbGFmTEs4dz09LS1EK2xwNUFsSExQT2Zwa0p5QjFGbWJnPT0=--3f66ca21b4f1bae17d03233afc0ee80a1a42371244ac38ce71f284266bec3a95"
118
+ - dGd2d1k4MTFSMHp3cy9xZE9NaGpIUT09LS1GcWNKdisxMlRGTzBLV2Zjam9PRmZ3PT0=--1f19086e9908d4c5313c3abfab8f6c8697785273c14ab0a2f39634a57ac57e72
119
+ - four: QXlGUGsyYnB6dEtNWk9ia3MvR2duZz09LS1DWGprWVVIS2VkbjJrYnl0MkVmcUlBPT0=--0e426924db2fa7e577e4e4d7d62ce8f7e9390f14e72f90aca59be88df252b110
120
+ - dDAvZzdNampwUmsrY1Q3ME5VaWNkQT09LS13YUJQVm9kZXpFMlpxVTVPRDJ3RG1RPT0=--c53ab9535f06eef08e41dbf9fd1641421760309f381c37016ce27d17d6910f11
121
+ - :a:
122
+ b: NHgycERIaXlQaTR2V09weWFUbG9DZE1aQ3pTZ1h0OWo0VzJ4NkRMaDk5WT0tLWhMc21MUHJOQnowTHlnSnhxUkluNVE9PQ==--081f7b5f9bc982f7270454a8453b5fcf860bea9ed6f8454a0f8509b0cc2a8638
123
+ - [{key1: WHkwOEc5NVcvNm5IMTVNc24xWUtYdz09LS1GZGc0K2J2V3F5bW5iS29Vb1grcFNRPT0=--c453f9e814e4d62294d1d5d20b71db8825e8f94933ad8af157ca7860407e39c5,
124
+ key2: eUZlQlgzVTFFRjVKUjF3dTZ6RlRidz09LS1rUzRtN2VlS2ZmRDFuR3JCMkRMRTNRPT0=--d30ebbf61e5393d3502e71486379215c4ea95d3f4697faa209214dd23d64e1fd},
125
+ {key3: YStlVTBFZjZQQlVDWHhjMS85L052Zz09LS0rL2JtbUI2eFY2QVZsbG92OGM4Z2lnPT0=--ffc85954e68fdde7e03fdbaa715c43d624c2825e28439de3ce2d2fa0e9debe0b}]
68
126
  ```
69
127
 
70
128
  If use `--key` option.
@@ -90,12 +148,20 @@ vault:
90
148
  - four: 4
91
149
  ```
92
150
 
93
- `--key` option supports Symbol and Array.
151
+ `--key` option supports following format.
152
+
153
+ - `$` as root document
154
+ - `*` as wildcard for array or map key
155
+ - `/str/` as regexp to map key
156
+ - `:<key_name>` as Symbol.
157
+ - `[0]` as array key.
158
+ - `'str'` as map key (inner single quote string).
159
+ - `"str"` as map key (inner double quote string).
160
+ - `other_string` as map key
94
161
 
95
- `:<key_name>` is symbol key.
96
- `[0]` is array key.
162
+ `--key` must start with `$`.
97
163
 
98
- ex. `production.:slaves.[0].:password`
164
+ ex. `$.production.:slaves.[0].*.:password`
99
165
 
100
166
  #### AWS KMS Encryption
101
167
 
data/exe/yaml_vault CHANGED
@@ -7,7 +7,7 @@ require 'thor'
7
7
  class YamlVault::Cli < Thor
8
8
  include Thor::Actions
9
9
 
10
- class_option :key, aliases: "-k", type: :string, banner: "KEYNAME (format: \"KEY1.INNER_KEY,KEY2\")", desc: "target key", default: "vault"
10
+ class_option :key, aliases: "-k", type: :string, banner: "KEYNAME (format: \"KEY1.INNER_KEY,KEY2\")", desc: "target key", default: "$"
11
11
  class_option :cryptor, type: :string, enum: %w(simple aws-kms gcp-kms), default: "simple"
12
12
 
13
13
  class_option :salt, aliases: "-s", type: :string
@@ -94,19 +94,10 @@ class YamlVault::Cli < Thor
94
94
  def target_keys
95
95
  if options[:key]
96
96
  options[:key].split(/,\s?/).map do |k|
97
- k.split(".").map do |part|
98
- case part
99
- when /\A:(.*)\z/
100
- $1.to_sym
101
- when /\A\[(\d+)\]\z/
102
- $1.to_i
103
- else
104
- part
105
- end
106
- end
97
+ YamlVault::KeyParser.parse(k)
107
98
  end
108
99
  else
109
- ["vault"]
100
+ [["$"]]
110
101
  end
111
102
  end
112
103
  end
@@ -0,0 +1,35 @@
1
+ require 'strscan'
2
+
3
+ module YamlVault
4
+ class KeyParser
5
+ class InvalidPathFormat < StandardError; end
6
+
7
+ def self.parse(str)
8
+ new.parse(str)
9
+ end
10
+
11
+ def parse(str)
12
+ s = StringScanner.new(str)
13
+ path = []
14
+ until s.eos?
15
+ if token = s.scan(/'(.*?)'/)
16
+ path << s[1]
17
+ elsif token = s.scan(/"(.*?)"/)
18
+ path << s[1]
19
+ elsif token = s.scan(%r{/(.*?)/})
20
+ path << Regexp.new(s[1])
21
+ elsif token = s.scan(/\[(\d+)\]/)
22
+ path << s[1].to_i
23
+ elsif token = s.scan(/\./)
24
+ # noop
25
+ elsif token = s.scan(/[^\.]*/)
26
+ path << token
27
+ end
28
+ end
29
+
30
+ raise InvalidPathFormat.new("`$` must be at first") unless path.first == "$"
31
+
32
+ path
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module YamlVault
2
- VERSION = "0.6.0"
2
+ VERSION = "1.0.0.beta"
3
3
  end
@@ -0,0 +1,117 @@
1
+ # frozen_string_literal: false
2
+ require 'yaml'
3
+
4
+ module YamlVault
5
+ class YAMLTreeBuilder < YAML::TreeBuilder
6
+ def initialize(target_paths, cryptor, mode)
7
+ super()
8
+
9
+ @path_stack = []
10
+ @target_paths = target_paths
11
+ @cryptor = cryptor
12
+ @mode = mode
13
+ end
14
+
15
+ def start_document(*)
16
+ result = super
17
+ @path_stack.push "$"
18
+ result
19
+ end
20
+
21
+ def end_document(*)
22
+ @path_stack.pop
23
+ super
24
+ end
25
+
26
+ def start_mapping(*)
27
+ if YAML::Nodes::Sequence === @last
28
+ current_path = @last.children.size
29
+ @path_stack << current_path
30
+ end
31
+
32
+ super
33
+ end
34
+
35
+ def end_mapping(*)
36
+ @path_stack.pop
37
+ super
38
+ end
39
+
40
+ def start_sequence(*)
41
+ if YAML::Nodes::Sequence === @last
42
+ current_path = @last.children.size
43
+ @path_stack << current_path
44
+ end
45
+
46
+ super
47
+ end
48
+
49
+ def end_sequence(*)
50
+ @path_stack.pop
51
+ super
52
+ end
53
+
54
+ def scalar(value, anchor, tag, plain, quoted, style)
55
+ result = super
56
+
57
+ case @last
58
+ when YAML::Nodes::Sequence
59
+ current_path = @last.children.size - 1
60
+ @path_stack << current_path
61
+ when YAML::Nodes::Mapping
62
+ if @last.children.size.odd?
63
+ @path_stack << value
64
+ return result
65
+ end
66
+ end
67
+
68
+ if match_path?
69
+ if @mode == :encrypt
70
+ if tag
71
+ result.value = @cryptor.encrypt("#{tag} #{value}")
72
+ result.tag = nil
73
+ result.plain = true
74
+ else
75
+ result.value = @cryptor.encrypt(value)
76
+ end
77
+ else
78
+ decrypted_value = @cryptor.decrypt(value)
79
+ if decrypted_value =~ /\A(!.*?)\s+(.*)\z/
80
+ result.tag = $1
81
+ result.plain = false
82
+ result.value = $2
83
+ else
84
+ result.value = decrypted_value
85
+ end
86
+ end
87
+ end
88
+
89
+ @path_stack.pop
90
+
91
+ result
92
+ end
93
+
94
+ def alias(anchor)
95
+ @path_stack.pop
96
+ super
97
+ end
98
+
99
+ private
100
+
101
+ def match_path?
102
+ @target_paths.any? do |target_path|
103
+ target_path.each_with_index.all? do |path, i|
104
+ if path == "*"
105
+ true
106
+ else
107
+ if path.is_a?(Regexp)
108
+ path.match(@path_stack[i])
109
+ else
110
+ path == @path_stack[i]
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
data/lib/yaml_vault.rb CHANGED
@@ -3,6 +3,10 @@ require 'yaml'
3
3
  require 'base64'
4
4
  require 'erb'
5
5
  require 'active_support'
6
+ require 'pp'
7
+
8
+ require 'yaml_vault/key_parser'
9
+ require 'yaml_vault/yaml_tree_builder'
6
10
 
7
11
  module YamlVault
8
12
  class Main
@@ -21,7 +25,7 @@ module YamlVault
21
25
  aws_kms_key_id: nil, aws_region: nil, aws_access_key_id: nil, aws_secret_access_key: nil,
22
26
  gcp_kms_resource_id: nil, gcp_credential_file: nil
23
27
  )
24
- @data = YAML.load(yaml_content)
28
+ @yaml = yaml_content
25
29
  @keys = keys
26
30
 
27
31
  @passphrase = passphrase
@@ -44,15 +48,21 @@ module YamlVault
44
48
  end
45
49
 
46
50
  def encrypt
47
- process_yaml do |data|
48
- do_process(data, :encrypt)
49
- end
51
+ parser = YAML::Parser.new(YamlVault::YAMLTreeBuilder.new(@keys, @cryptor, :encrypt))
52
+ parser.parse(@yaml).handler.root
50
53
  end
51
54
 
52
55
  def decrypt
53
- process_yaml do |data|
54
- do_process(data, :decrypt)
55
- end
56
+ parser = YAML::Parser.new(YamlVault::YAMLTreeBuilder.new(@keys, @cryptor, :decrypt))
57
+ parser.parse(@yaml).handler.root
58
+ end
59
+
60
+ def encrypt_hash
61
+ encrypt.to_ruby[0]
62
+ end
63
+
64
+ def decrypt_hash
65
+ decrypt.to_ruby[0]
56
66
  end
57
67
 
58
68
  def encrypt_yaml
@@ -78,45 +88,6 @@ module YamlVault
78
88
  end
79
89
  end
80
90
 
81
- def process_yaml
82
- @keys.each do |key|
83
- target = key.inject(@data) do |t, part|
84
- t[part]
85
- end
86
-
87
- vault_data = yield target
88
-
89
- target_parent = key[0..-2].inject(@data) do |t, part|
90
- t[part]
91
- end
92
- target_parent[key[-1]] = vault_data
93
- end
94
- @data
95
- end
96
-
97
- def do_process(data, method)
98
- case data
99
- when Hash
100
- data.each do |k, v|
101
- if v.is_a?(Hash) || v.is_a?(Array)
102
- do_process(v, method)
103
- else
104
- data[k] = @cryptor.send(method, v)
105
- end
106
- end
107
- when Array
108
- data.each_with_index do |v, i|
109
- if v.is_a?(Hash) || v.is_a?(Array)
110
- do_process(v, method)
111
- else
112
- data[i] = @cryptor.send(method, v)
113
- end
114
- end
115
- else
116
- @cryptor.send(method, data)
117
- end
118
- end
119
-
120
91
  module ValueCryptor
121
92
  class Simple
122
93
  def initialize(passphrase, sign_passphrase, salt, cipher, digest, key_size = 32, signature_key_size = 64)
@@ -141,7 +112,12 @@ module YamlVault
141
112
 
142
113
  class KMS
143
114
  def initialize(key_id, region: nil, aws_access_key_id: nil, aws_secret_access_key: nil)
144
- require 'aws-sdk'
115
+ begin
116
+ require 'aws-sdk'
117
+ rescue LoadError
118
+ puts "Please install aws-sdk (>= 2.0)"
119
+ exit 1
120
+ end
145
121
  options = {}
146
122
  options[:region] = region if region
147
123
  options[:access_key_id] = aws_access_key_id if aws_access_key_id
@@ -164,8 +140,13 @@ module YamlVault
164
140
  class GCPKMS
165
141
  def initialize(resource_id, credential_file)
166
142
  raise "Need key resource id" unless resource_id
167
- require 'googleauth'
168
- require 'google/apis/cloudkms_v1'
143
+ begin
144
+ require 'googleauth'
145
+ require 'google/apis/cloudkms_v1'
146
+ rescue LoadError
147
+ puts "Please install google-api-client (>= 0.11.0)"
148
+ exit 1
149
+ end
169
150
 
170
151
  scope = [
171
152
  'https://www.googleapis.com/auth/cloud-platform'
data/yaml_vault.gemspec CHANGED
@@ -19,9 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_runtime_dependency "activesupport", ">= 4"
22
- spec.add_runtime_dependency "aws-sdk", "~> 2.0"
23
- spec.add_runtime_dependency "google-api-client", "~> 0.11"
24
- spec.add_runtime_dependency "googleauth", "~> 0.4"
25
22
  spec.add_runtime_dependency "thor"
26
23
 
27
24
  spec.add_development_dependency "bundler", "~> 1.11"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml_vault
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 1.0.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - joker1007
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-29 00:00:00.000000000 Z
11
+ date: 2017-09-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,48 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '4'
27
- - !ruby/object:Gem::Dependency
28
- name: aws-sdk
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '2.0'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '2.0'
41
- - !ruby/object:Gem::Dependency
42
- name: google-api-client
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '0.11'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '0.11'
55
- - !ruby/object:Gem::Dependency
56
- name: googleauth
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '0.4'
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '0.4'
69
27
  - !ruby/object:Gem::Dependency
70
28
  name: thor
71
29
  requirement: !ruby/object:Gem::Requirement
@@ -130,6 +88,7 @@ executables:
130
88
  extensions: []
131
89
  extra_rdoc_files: []
132
90
  files:
91
+ - ".dockerignore"
133
92
  - ".gitignore"
134
93
  - ".rspec"
135
94
  - ".travis.yml"
@@ -141,8 +100,10 @@ files:
141
100
  - bin/setup
142
101
  - exe/yaml_vault
143
102
  - lib/yaml_vault.rb
103
+ - lib/yaml_vault/key_parser.rb
144
104
  - lib/yaml_vault/rails.rb
145
105
  - lib/yaml_vault/version.rb
106
+ - lib/yaml_vault/yaml_tree_builder.rb
146
107
  - yaml_vault.gemspec
147
108
  homepage: https://github.com/joker1007/yaml_vault
148
109
  licenses: []
@@ -158,12 +119,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
158
119
  version: '0'
159
120
  required_rubygems_version: !ruby/object:Gem::Requirement
160
121
  requirements:
161
- - - ">="
122
+ - - ">"
162
123
  - !ruby/object:Gem::Version
163
- version: '0'
124
+ version: 1.3.1
164
125
  requirements: []
165
126
  rubyforge_project:
166
- rubygems_version: 2.6.11
127
+ rubygems_version: 2.6.12
167
128
  signing_key:
168
129
  specification_version: 4
169
130
  summary: yaml encryption/decryption helper.