add ability to overwrite existing storage for #3

pull/6/head
deadc0de6 6 years ago
parent 504a6d4e9a
commit 927d5e2773

@ -71,10 +71,13 @@ def cmd_index(args, noder, catalog, top):
subsize = args['--subsize']
if not os.path.exists(path):
Logger.err('\"{}\" does not exist'.format(path))
return False
return
if name in noder.get_storage_names(top):
Logger.err('storage named \"{}\" already exist'.format(name))
return False
if not ask('Overwrite storage \"{}\"'.format(name)):
Logger.err('storage named \"{}\" already exist'.format(name))
return
node = noder.get_storage_node(top, name)
node.parent = None
start = datetime.datetime.now()
walker = Walker(noder, nohash=nohash)
attr = noder.clean_storage_attr(args['--meta'])
@ -104,15 +107,14 @@ def cmd_ls(args, noder, top):
def cmd_rm(args, noder, catalog, top):
what = args['<storage>']
storages = list(x.name for x in top.children)
if what in storages:
node = next(filter(lambda x: x.name == what, top.children))
name = args['<storage>']
node = noder.get_storage_node(top, name)
if node:
node.parent = None
if catalog.save(top):
Logger.info('Storage \"{}\" removed'.format(what))
Logger.info('Storage \"{}\" removed'.format(name))
else:
Logger.err('Storage named \"{}\" does not exist'.format(what))
Logger.err('Storage named \"{}\" does not exist'.format(name))
return top

@ -29,7 +29,7 @@ class Noder:
TOPNAME = 'top'
METANAME = 'meta'
TYPE_TOP = 'top' # tip top ;-)
TYPE_TOP = 'top'
TYPE_FILE = 'file'
TYPE_DIR = 'dir'
TYPE_ARC = 'arc'
@ -51,13 +51,21 @@ class Noder:
''' return a list of all storage names '''
return [x.name for x in list(top.children)]
def get_storage_node(self, top, name):
''' return the storage node '''
for n in top.children:
if n.type != self.TYPE_STORAGE:
continue
if n.name == name:
return n
def clean_storage_attr(self, attr):
if not attr:
return ''
return ', '.join(attr)
def get_node(self, top, path):
''' get the node at path '''
''' get the node by internal tree path '''
r = anytree.resolver.Resolver('name')
try:
return r.get(top, path)

Loading…
Cancel
Save