summaryrefslogtreecommitdiff
path: root/contrib/importers/kedpm2pass.py
blob: b79cc8bb558402658d5e141b08c9d4265c36dbd4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Copyright (C) 2012 Antoine Beaupré <anarcat@orangeseeds.org>. All Rights Reserved.
# This file is licensed under the GPLv2+. Please see COPYING for more information.
#
# To double-check your import worked:
# grep Path passwords | sed 's#^Path: ##;s/$/.gpg/' | sort > listpaths
# (cd ~/.password-store/ ; find -type f ) | sort | diff -u - listpaths

import re
import fileinput

import sys # for exit

import subprocess

def insert(d):
    path = d['Path']
    del d['Path']
    print "inserting " + path
    content = d['Password'] + "\n"
    del d['Password']
    for k, v in d.iteritems():
        content += "%s: %s\n" % (k, v)
    del d
    cmd = ["pass", "insert", "--force", "--multiline", path]
    process = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = process.communicate(content)
    retcode = process.wait()
    if retcode:
        print 'command "%s" failed with exit code %d: %s' % (" ".join(cmd), retcode, stdout + stderr)
        sys.exit(1);

d = None
for line in fileinput.input():
    if line == "\n":
        continue
    match = re.match("(\w+): (.*)$", line)
    if match:
        if match.group(1) == 'Path':
            if d is not None:
                insert(d)
            else:
                d = {}
        d[match.group(1)] = match.group(2)
        #print "found field: %s => %s" % (match.group(1), match.group(2))
    else:
        print "warning: no match found on line: *%s*" % line

if d is not None:
    insert(d)
td>2013-10-16Do not print 'logout' menu when not logged inRené 'Necoro' Neumann2-4/+6 2013-10-16Check user's authorisation when loading entries by ID.René 'Necoro' Neumann4-6/+43 2013-10-16Print username or description in titleRené 'Necoro' Neumann3-2/+5 2013-10-15QuotestyleRené 'Necoro' Neumann11-86/+88 2013-10-15Flash on error in all formsRené 'Necoro' Neumann2-5/+21 2013-10-15Streamline CSSRené 'Necoro' Neumann2-77/+24 2013-10-15Margin for buttons in formsRené 'Necoro' Neumann1-0/+3 2013-10-15Support flashingRené 'Necoro' Neumann5-2/+34 2013-10-15Moved user implementation from model to loginRené 'Necoro' Neumann3-28/+13 2013-10-15Nicer organised importsRené 'Necoro' Neumann6-24/+40 2013-10-14Finish login stuffRené 'Necoro' Neumann11-29/+143 2013-10-14More model tuningRené 'Necoro' Neumann1-3/+3 2013-10-14Add User to modelRené 'Necoro' Neumann1-8/+25 2013-09-30Add first API stuff -- SingleExpense and CategoryRené 'Necoro' Neumann2-1/+13 2013-09-30Force python2René 'Necoro' Neumann1-1/+1 2013-09-24More margin at the bottom for expense listingRené 'Necoro' Neumann1-1/+1 2013-09-24Better pie formattingRené 'Necoro' Neumann3-6/+8 2013-09-24Increase width of page to 760pxRené 'Necoro' Neumann3-8/+9 2013-09-16typoRené 'Necoro' Neumann1-1/+1 2013-09-15Fix display of one monthRené 'Necoro' Neumann1-2/+2 2013-09-14Draw pies using highcharts JS-libRené 'Necoro' Neumann5-20/+99