Browse Source

add option to generate your identity...

main
John-Mark Gurney 5 years ago
parent
commit
c3c8baf075
1 changed files with 44 additions and 1 deletions
  1. +44
    -1
      ui/cli.py

+ 44
- 1
ui/cli.py View File

@@ -218,6 +218,13 @@ class Persona(object):

return self._identity

def new_version(self, *args):
'''Update the Persona's Identity object.'''

self._identity = self.sign(self._identity.new_version(*args))

return self._identity

def store(self, fname):
'''Store the Persona to a file. If there is a private
key associated w/ the Persona, it will be saved as well.'''
@@ -457,17 +464,36 @@ def enumeratedir(_dir, created_by_ref):

def main():
from optparse import OptionParser
import sys

parser = OptionParser()
parser.add_option('-a', action='append', dest='add',
default=[], help='add the arg as metadata for files, tag=value')
parser.add_option('-d', action='append', dest='delete',
default=[], help='delete the arg as metadata from files. Either specify tag, and all tags are removed, or specify tag=value and that specific tag will be removed.')
parser.add_option('-g', action='store_true', dest='generateident',
default=False, help='generate an identity')
parser.add_option('-l', action='store_true', dest='list',
default=False, help='list metadata')

options, args = parser.parse_args()

# this is shared between generateident and add
addprops = map(lambda x: x.split('=', 1), options.add)

if options.generateident:
identfname = os.path.expanduser('~/.medashare_identity.pasn1')

if os.path.exists(identfname):
print >>sys.stderr, 'Error: Identity already created.'
sys.exit(1)

persona = Persona()
persona.generate_key()
persona.new_version(*addprops)
persona.store(identfname)
return

storefname = os.path.expanduser('~/.medashare_store.pasn1')
import sys
#print >>sys.stderr, `storefname`
@@ -480,7 +506,6 @@ def main():
for k, v in _iterdictlist(j):
print '%s:\t%s' % (k, v)
elif options.add:
addprops = map(lambda x: x.split('=', 1), options.add)
for i in args:
for j in objstr.by_file(i):
nobj = j.new_version(*addprops)
@@ -805,6 +830,24 @@ class _TestCases(unittest.TestCase):

with mock.patch('os.path.expanduser', side_effect=expandusermock) \
as eu:
with nested(mock.patch('sys.stdout',
StringIO.StringIO()), mock.patch('sys.argv',
[ 'progname', '-g', '-a', 'name=A Test User' ])) as (stdout, argv):
main()
self.assertEqual(stdout.getvalue(),
'')
eu.assert_called_with('~/.medashare_identity.pasn1')
persona = Persona.load(identfname)
self.assertEqual(persona.get_identity().name, 'A Test User')

with nested(mock.patch('sys.stderr',
StringIO.StringIO()), mock.patch('sys.argv',
[ 'progname', '-g', '-a', 'name=A Test User' ])) as (stderr, argv):
self.assertRaises(SystemExit, main)
self.assertEqual(stderr.getvalue(),
'Error: Identity already created.\n')
eu.assert_called_with('~/.medashare_identity.pasn1')

with nested(mock.patch('sys.stdout',
StringIO.StringIO()), mock.patch('sys.argv',
[ 'progname', '-l', testfname ])) as (stdout, argv):


Loading…
Cancel
Save