diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2014-03-22 12:01:52 -0600 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2014-03-22 12:03:12 -0600 |
commit | 47fed2c5d47a03fad7b91bfb890eed257e9c1b2d (patch) | |
tree | 46666ba401340524ab9c217a062c366f6e5ec818 /contrib/importers/gorilla2pass.rb | |
parent | 414bab7d973b50431854496811608c549fb541e1 (diff) | |
download | pass-47fed2c5d47a03fad7b91bfb890eed257e9c1b2d.tar.gz pass-47fed2c5d47a03fad7b91bfb890eed257e9c1b2d.tar.bz2 pass-47fed2c5d47a03fad7b91bfb890eed257e9c1b2d.zip |
Makefile: do not use recursion and organize
Diffstat (limited to 'contrib/importers/gorilla2pass.rb')
-rwxr-xr-x | contrib/importers/gorilla2pass.rb | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/contrib/importers/gorilla2pass.rb b/contrib/importers/gorilla2pass.rb new file mode 100755 index 0000000..bf168a7 --- /dev/null +++ b/contrib/importers/gorilla2pass.rb @@ -0,0 +1,76 @@ +#!/usr/bin/env ruby
+
+# Copyright (C) 2013 David Sklar <david.sklar@gmail.com>. All Rights Reserved.
+# This file is licensed under the GPLv2+. Please see COPYING for more information.
+
+entries = {}
+
+class HashCounter
+
+ def initialize
+ @h = Hash.new {|h,k| h[k] = 2 }
+ end
+
+ def get(k)
+ v = @h[k]
+ @h[k] = v + 1
+ v
+ end
+end
+
+hc = HashCounter.new
+
+$stdin.each do |line|
+ uuid, group, title, url, user, password, notes = line.strip.split(',')
+ next if uuid == "uuid"
+
+ # check for missing group
+ # check for missing title
+
+ prefix = "#{group}/#{title}".gsub(/[\s\'\"()!]/,'')
+
+
+ if user && user.length > 0
+ entries["#{prefix}/user"] = user
+ end
+ if url && url.length > 0
+ entries["#{prefix}/url"] = url
+ end
+ if password && password.length > 0
+ entries["#{prefix}/password"] = password
+ end
+ if notes && notes.length > 0
+ entries["#{prefix}/notes"] = notes.gsub('\n',"\n").strip
+ end
+end
+
+entries.keys.each do |k|
+ if k =~ /^(.+?)-merged\d{4}-\d\d-\d\d\d\d:\d\d:\d\d(\/.+)$/
+ other = $1 + $2
+ if entries.has_key?(other)
+ if entries[k] == entries[other]
+ entries.delete(k)
+ else
+ i = hc.get(other)
+ entries["#{other}#{i}"] = entries[k]
+ entries.delete(k)
+ end
+ else
+ entries[other] = entries[k]
+ entries.delete(k)
+ end
+ end
+end
+
+pass_top_level = "Gorilla"
+entries.keys.each do |k|
+ print "#{k}...(#{entries[k]})..."
+ IO.popen("pass insert -e -f '#{pass_top_level}/#{k}' > /dev/null", 'w') do |io|
+ io.puts entries[k] + "\n"
+ end
+ if $? == 0
+ puts " done!"
+ else
+ puts " error!"
+ end
+end
|