ruby-keepassx 0.2.1 → 0.2.2beta1

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: becc633558db7f94287984345437f06a2b54428b
4
- data.tar.gz: 2421c2d007dcbc4ce0499afceeca5631aab4c939
3
+ metadata.gz: 163fb7eb543e7245dc9810fbcbf6275b8e36476c
4
+ data.tar.gz: a9ce724799482165199926d416aee783b58d8346
5
5
  SHA512:
6
- metadata.gz: 59384fb219670347067b58848b930b05f67510b3e557801070a111a359209c31ec6807e70a229c0254b476eec3902cc90f52b2ca0b9f334bb58d07a285df7eac
7
- data.tar.gz: 8f939f54f2f68507f8aab8827a0c722c8f159934cbf6fe1cc64751ecfa926c80f9d7708ff2779d263c645e84c075ec97636fa165a7fd48b82eaa1793dfe4529f
6
+ metadata.gz: d822481998706e868eedd5771dbe2f2e54b829b63824505663c16d2271296431a1ce0377f21c4f33eca4916d97e88981c69b577a670ae95f5d8f4aa7f1a31392
7
+ data.tar.gz: bd2fc142df812540c6fa022aeeee1fb71b1af6b8bd8e62fedb36f71908f758e70f9bbb8bd77575f182e416c9e40f1f7b64b6a8cb9e21846e90f30e7112ef4ea0
data/README.md CHANGED
@@ -28,5 +28,4 @@ puts database.entry("entry's title").password
28
28
  No attempt is made to protect the memory used by this library; there may be something we can do with libgcrypt's secure-malloc functions, but right now your master password is unencrypted in ram that could possibly be paged to disk.
29
29
 
30
30
 
31
- [![Build Status](https://travis-ci.org/tioteath/ruby-keepassx
32
- .svg?branch=master)](https://travis-ci.org/tioteath/ruby-keepassx)
31
+ [![Build Status](https://travis-ci.org/tioteath/ruby-keepassx.svg?branch=master)](https://travis-ci.org/tioteath/ruby-keepassx)
@@ -4,6 +4,7 @@ require 'openssl'
4
4
  require 'digest/sha2'
5
5
  require 'securerandom'
6
6
  require 'rexml/document'
7
+ require 'yaml'
7
8
 
8
9
  # Add backward compatibility stuff
9
10
  if RUBY_VERSION =~ /1\.8/
@@ -11,7 +11,7 @@ module Keepassx
11
11
 
12
12
  def self.open opts
13
13
  path = opts.to_s
14
- fail "File #{path} does not exist." unless File.exist? path
14
+ fail IOError, "File #{path} does not exist." unless File.exist? path
15
15
  db = self.new path
16
16
  return db unless block_given?
17
17
  yield db
@@ -119,7 +119,7 @@ module Keepassx
119
119
  items = item_list
120
120
 
121
121
  else
122
- opts = {:title => opts.to_s} if opts.is_a? String or opts.is_a? Symbol
122
+ opts = { :title => opts.to_s } if opts.is_a? String or opts.is_a? Symbol
123
123
 
124
124
  match_number = opts.length
125
125
  items = []
@@ -234,6 +234,7 @@ module Keepassx
234
234
  opts = deep_copy opts
235
235
  opts[:id] = next_group_id unless opts.has_key? :id
236
236
 
237
+ # Replace parent, which is specified by symbol with actual group
237
238
  if opts[:parent].is_a? Symbol
238
239
  group = self.group opts[:parent]
239
240
  fail "Group #{opts[:parent].inspect} does not exist" if group.nil?
@@ -464,5 +465,12 @@ module Keepassx
464
465
  result
465
466
  end
466
467
 
468
+
469
+ # Dump YAML representation of database.
470
+ #
471
+ # @return [String]
472
+ def to_yaml
473
+ YAML.dump to_a
474
+ end
467
475
  end
468
476
  end
@@ -92,11 +92,12 @@ module Keepassx
92
92
 
93
93
  def parent= v
94
94
  if v.is_a? Keepassx::Group
95
- self.level = v.level + 1 # FIXME: If parent is nil, then set level to 0
95
+ self.level = v.level + 1
96
96
  @parent = v
97
97
 
98
98
  elsif v.nil?
99
- self.level = 0 # Assume group located on top level if has no parent
99
+ # Assume, group is located at the top level, in case it has no parent
100
+ self.level = 0
100
101
 
101
102
  else
102
103
  fail "Expected Keepassx::Group, got #{v.class}"
@@ -182,21 +182,23 @@ module Keepassx
182
182
  # FIXME: Rename the method
183
183
  # See spec/fixtures/test_data_array.yaml for data example
184
184
  def parse_data_array opts
185
- groups, entries = opts[:groups], opts[:entries]
185
+ groups, entries, parent = opts[:groups], opts[:entries], opts[:parent]
186
186
 
187
187
  # Remove groups and entries from options, so new group could be
188
188
  # initialized from incoming Hash
189
189
  fields = Keepassx::Group.fields
190
190
  group_opts = opts.reject { |k, _| !fields.include? k }
191
191
  group = add_group group_opts
192
+ group.parent = parent unless parent.nil?
192
193
 
193
194
  entries.each do |e|
194
- entry = e.clone
195
- add_entry entry.merge(:group => group)
195
+ add_entry e.merge(:group => group)
196
196
  end unless entries.nil?
197
197
 
198
198
  # Recursively proceed each child group
199
- groups.each { |g| parse_data_array g } unless groups.nil?
199
+ groups.each do |g|
200
+ parse_data_array g.merge(:parent => group)
201
+ end unless groups.nil?
200
202
 
201
203
  end
202
204
 
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
3
3
  s.summary = 'Ruby API access for KeePassX databases'
4
4
  s.description = 'This is fork of Tony Pitluga\'s ' \
5
5
  'Ruby API for keepassx with read-write support.'
6
- s.version = '0.2.1'
6
+ s.version = '0.2.2beta1'
7
7
  s.authors = ['Tony Pitluga', 'Paul Hinze', 'Tio Teath']
8
8
  s.email = ['tony.pitluga@gmail.com', 'paul.t.hinze@gmail.com',
9
9
  'tioteath@gmail.com']
@@ -16,7 +16,7 @@ Gem::Specification.new do |s|
16
16
  end
17
17
 
18
18
  s.add_development_dependency 'rspec', '~> 3.0'
19
- s.add_development_dependency 'pry', '~> 0'
19
+ s.add_development_dependency 'pry', '~> 0.10'
20
20
  s.add_development_dependency 'rake', '~> 0.8', '>= 0.8.7'
21
21
  s.add_development_dependency 'respect', '~> 0.1', '>= 0.1.1'
22
22
  # s.add_development_dependency 'rspec-prof', '~> 0'
@@ -61,7 +61,7 @@ describe Keepassx::Entry do
61
61
 
62
62
  it 'returns Hash entry representation' do
63
63
  expect(entry_schema.validate? test_entry.to_hash).to be true
64
- end unless RUBY_VERSION =~ /1.8/ # Respect does not support ruby 1.8.x
64
+ end unless RUBY_VERSION =~ /1.8/ # Respect does not support ruby 1.8.x
65
65
 
66
66
  it 'set timestamps properly' do
67
67
  expect(test_entry.to_hash[:creation]).to eq test_date
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-keepassx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Pitluga
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-09-18 00:00:00.000000000 Z
13
+ date: 2014-10-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -32,14 +32,14 @@ dependencies:
32
32
  requirements:
33
33
  - - "~>"
34
34
  - !ruby/object:Gem::Version
35
- version: '0'
35
+ version: '0.10'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0'
42
+ version: '0.10'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rake
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -130,9 +130,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
130
130
  version: '0'
131
131
  required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  requirements:
133
- - - ">="
133
+ - - ">"
134
134
  - !ruby/object:Gem::Version
135
- version: '0'
135
+ version: 1.3.1
136
136
  requirements: []
137
137
  rubyforge_project:
138
138
  rubygems_version: 2.2.2