From e242e97e8162f5539fcd3175f496e27c6efd7460 Mon Sep 17 00:00:00 2001 From: Lukas Zapletal Date: Tue, 15 Apr 2014 13:29:45 +0200 Subject: Multiline comment support for keepassx importer --- contrib/importers/keepassx2pass.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'contrib') diff --git a/contrib/importers/keepassx2pass.py b/contrib/importers/keepassx2pass.py index dc4b1e5..1505edc 100755 --- a/contrib/importers/keepassx2pass.py +++ b/contrib/importers/keepassx2pass.py @@ -44,13 +44,18 @@ def password_data(element): ret = passwd + "\n" if passwd else "\n" for field in ['username', 'url', 'comment']: fel = element.find(field) - if fel.text is not None: - ret = "%s%s: %s\n" % (ret, fel.tag, fel.text) + children = [str(e.text or '') + str(e.tail or '') for e in list(fel)] + if len(children) > 0: + children.insert(0, '') + text = (fel.text or '') + "\n".join(children) + if len(text) > 0: + ret = "%s%s: %s\n" % (ret, fel.tag, text) return ret def import_entry(element, path=''): """ Import new password entry to password-store using pass insert command """ + print "Importing " + path_for(element, path) proc = Popen(['pass', 'insert', '--multiline', '--force', path_for(element, path)], stdin=PIPE, stdout=PIPE) @@ -68,9 +73,8 @@ def import_group(element, path=''): def main(xml_file): """ Parse given KeepassX XML file and import password groups from it """ - with open(xml_file) as xml: - for group in ElementTree.XML(xml.read()).findall('group'): - import_group(group) + for group in ElementTree.parse(xml_file).findall('group'): + import_group(group) if __name__ == '__main__': main(sys.argv[1]) -- cgit v1.2.3-59-g8ed1b