rubeepass 2.0.9 → 3.0.0

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
  SHA256:
3
- metadata.gz: af1fb290246cefb9de256f1b1de1f5c2b5de7d188355617fe0c18cbb22ae0327
4
- data.tar.gz: b70b387d333f4cbc489bb2077fdcb7f9e5b442276eacaa9d1596c659c65027f7
3
+ metadata.gz: 91862604b6d530be51df7825db096ccad76a0e8dd1dbd263ae153d6a91f5e27b
4
+ data.tar.gz: 7f43ea94b77cbdbed2c5956cca66f74fbc080bb704db47b1d597fd35e24cf143
5
5
  SHA512:
6
- metadata.gz: fbb41b2c6114f3c80e14bdd4e939050b51478ee5cd51f9e6c260f23fcdbb203a05604a93adb028fa356bdb428393e2efd0a889f5cc7e26f1cfa8d6f68c9ae71f
7
- data.tar.gz: 86350c3d58b4e2bc97fe8515669fdac64993c3d77e62803ddef098dae6a556a49b15aa34f6b639bb53982f4c096bbdf0a6033d41c41693f51adca1b2e247288a
6
+ metadata.gz: 6a084c97770183b0ebcc079cd262cfe4bb70a8de47836682c69520c0e046ab269621fe3e67db56e6abbd3904c908da352d1e6bf5ab3978581831314b1ff5338a
7
+ data.tar.gz: a630da76572f741def57282da179b5572b88ec78e7bacbd337d06aa1065616d9a3efe9a87ea18fb2002cd72dc08e49494d98f066af40469aebbcb20bc942d472
@@ -48,12 +48,28 @@ class RubeePass::Group
48
48
  return out.join("\n")
49
49
  end
50
50
 
51
+ def entry_by_uuid(uuid)
52
+ return @entries[uuid]
53
+ end
54
+
51
55
  def entry_titles
52
- return @entries.keys.sort do |a, b|
56
+ return @entries.values.map do |entry|
57
+ entry.title
58
+ end.sort do |a, b|
53
59
  a.downcase <=> b.downcase
54
60
  end
55
61
  end
56
62
 
63
+ def entries_by_title(title, case_insensitive = false)
64
+ return @entries.values.select do |entry|
65
+ (entry.title == title) ||
66
+ (
67
+ case_insensitive &&
68
+ (entry.title.downcase == title.downcase)
69
+ )
70
+ end
71
+ end
72
+
57
73
  def find_group(path, case_insensitive = false)
58
74
  return nil if (@keepass.nil?)
59
75
 
@@ -62,20 +78,10 @@ class RubeePass::Group
62
78
 
63
79
  path.split("/").each do |group|
64
80
  next if (group.empty?)
65
- if (case_insensitive)
66
- if (cwd.has_group_like?(group))
67
- cwd = cwd.groups.select do |k, v|
68
- k.downcase == group.downcase
69
- end.values.first
70
- else
71
- return nil
72
- end
81
+ if (cwd.has_group_like?(group))
82
+ cwd = cwd.groups_by_name(group, case_insensitive)[0]
73
83
  else
74
- if (cwd.has_group?(group))
75
- cwd = cwd.groups[group]
76
- else
77
- return nil
78
- end
84
+ return nil
79
85
  end
80
86
  end
81
87
 
@@ -111,7 +117,7 @@ class RubeePass::Group
111
117
  group,
112
118
  entry_xml
113
119
  )
114
- group.entries[entry.title] = entry
120
+ group.entries[entry.uuid] = entry
115
121
  end
116
122
  end
117
123
 
@@ -122,7 +128,7 @@ class RubeePass::Group
122
128
  group,
123
129
  group_xml
124
130
  )
125
- group.groups[child.name] = child
131
+ group.groups[child.uuid] = child
126
132
  end
127
133
  end
128
134
 
@@ -140,9 +146,7 @@ class RubeePass::Group
140
146
  return [Array.new, Array.new] if (new_cwd.nil?)
141
147
 
142
148
  if (new_cwd.has_group_like?(target))
143
- new_cwd = new_cwd.groups.select do |k, v|
144
- k.downcase == target.downcase
145
- end.values.first
149
+ new_cwd = new_cwd.groups_by_name(target, true)[0]
146
150
  target = ""
147
151
  end
148
152
 
@@ -163,30 +167,42 @@ class RubeePass::Group
163
167
  return [group_completions, entry_completions]
164
168
  end
165
169
 
170
+ def group_by_uuid(uuid)
171
+ return @groups[uuid]
172
+ end
173
+
166
174
  def group_names
167
- return @groups.keys.sort do |a, b|
175
+ return @groups.values.map do |group|
176
+ group.name
177
+ end.sort do |a, b|
168
178
  a.downcase <=> b.downcase
169
179
  end
170
180
  end
171
181
 
182
+ def groups_by_name(name, case_insensitive = false)
183
+ return @groups.values.select do |group|
184
+ (group.name == name) ||
185
+ (
186
+ case_insensitive &&
187
+ (group.name.downcase == name.downcase)
188
+ )
189
+ end
190
+ end
191
+
172
192
  def has_entry?(entry)
173
- return !@entries[entry].nil?
193
+ return !entries_by_title(entry).empty?
174
194
  end
175
195
 
176
196
  def has_entry_like?(entry)
177
- return entry_titles.any? do |title|
178
- title.downcase == entry.downcase
179
- end
197
+ return !entries_by_title(entry, true).empty?
180
198
  end
181
199
 
182
200
  def has_group?(group)
183
- return !@groups[group].nil?
201
+ return !groups_by_name(group).empty?
184
202
  end
185
203
 
186
204
  def has_group_like?(group)
187
- return group_names.any? do |name|
188
- name.downcase == group.downcase
189
- end
205
+ return !groups_by_name(group, true).empty?
190
206
  end
191
207
 
192
208
  def hilight_header(header)
@@ -41,11 +41,10 @@ class CopyWish < Djinni::Wish
41
41
  end
42
42
 
43
43
  # Prefer exact match
44
- entry = new_cwd.entries[target]
44
+ entry = new_cwd.entries_by_title(target)[0]
45
+
45
46
  # Fallback to case-insensitive match
46
- entry ||= new_cwd.entries.select do |k, v|
47
- k.downcase == target.downcase
48
- end.values.first
47
+ entry ||= new_cwd.entries_by_title(target, true)[0]
49
48
 
50
49
  case field
51
50
  when "pass"
@@ -40,11 +40,10 @@ class EchoWish < Djinni::Wish
40
40
  end
41
41
 
42
42
  # Prefer exact match
43
- entry = new_cwd.entries[target]
43
+ entry = new_cwd.entries_by_title(target)[0]
44
+
44
45
  # Fallback to case-insensitive match
45
- entry ||= new_cwd.entries.select do |k, v|
46
- k.downcase == target.downcase
47
- end.values.first
46
+ entry ||= new_cwd.entries_by_title(target, true)[0]
48
47
 
49
48
  case field
50
49
  when "pass"
@@ -31,9 +31,7 @@ class ShowWish < Djinni::Wish
31
31
  puts new_cwd
32
32
  end
33
33
  elsif (new_cwd.has_group_like?(target))
34
- new_cwd.groups.select do |k, v|
35
- k.downcase == target.downcase
36
- end.values.each do |group|
34
+ new_cwd.groups_by_name(target, true).each do |group|
37
35
  case djinni_env["djinni_input"]
38
36
  when "showall"
39
37
  puts group.details(0, true)
@@ -42,9 +40,7 @@ class ShowWish < Djinni::Wish
42
40
  end
43
41
  end
44
42
  elsif (new_cwd.has_entry_like?(target))
45
- new_cwd.entries.select do |k, v|
46
- k.downcase == target.downcase
47
- end.values.each do |entry|
43
+ new_cwd.entries_by_title(target, true).each do |entry|
48
44
  case djinni_env["djinni_input"]
49
45
  when "showall"
50
46
  puts entry.details(0, true)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubeepass
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.9
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Whittaker