[prev in list] [next in list] [prev in thread] [next in thread] 

List:       password-store
Subject:    [pass] [PATCH] Make the title field output from keepassx2pass.py more command line friendly
From:       philipbchase () gmail ! com (Philip Chase)
Date:       2013-09-24 10:01:17
Message-ID: CANot-f0N+GL3SHEcM+1o=4ONjoNbrY8PPzZMOjx2Y0pgy5wpVA () mail ! gmail ! com
[Download RAW message or body]

This patch removes several special characters while attempting to preserve
as much meaning in the filename as possible. These changes are made to the
KeepassX title before it is used as a file password store filename:

   - Spaces between words in file names are replaced with camelCasing.
   - The characters \ | ( ) are each replaced with a hyphen.
   - Trailing hypens are removed.
   - @ is replaced with "At"
   - ' is removed

---
 contrib/keepassx2pass.py | 25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/contrib/keepassx2pass.py b/contrib/keepassx2pass.py
index 1804e33..dc4b1e5 100755
--- a/contrib/keepassx2pass.py
+++ b/contrib/keepassx2pass.py
@@ -5,13 +5,36 @@
 # This file is licensed under the GPLv2+. Please see COPYING for more
information.

 import sys
+import re

 from subprocess import Popen, PIPE
 from xml.etree import ElementTree

+def space_to_camelcase(value):
+    output = ""
+    first_word_passed = False
+    for word in value.split(" "):
+        if not word:
+            output += "_"
+            continue
+        if first_word_passed:
+            output += word.capitalize()
+        else:
+            output += word.lower()
+        first_word_passed = True
+    return output
+
+def cleanTitle(title):
+    # make the title more command line friendly
+    title = re.sub("(\\|\||\(|\))", "-", title)
+    title = re.sub("-$", "", title)
+    title = re.sub("\@", "At", title)
+    title = re.sub("'", "", title)
+    return title
+
 def path_for(element, path=''):
     """ Generate path name from elements title and current path """
-    title = element.find('title').text.replace("/", "|")
+    title = cleanTitle(space_to_camelcase(element.find('title').text))
     return '/'.join([path, title])

 def password_data(element):
-- 
1.8.0

-- 
Philip Chase * 352-575-0705 * Gainesville, FL
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.zx2c4.com/pipermail/password-store/attachments/20130924/9accf2c6/attachment.html>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic