split csv and csv-with-header formats

pull/29/head
deadc0de6 2 years ago
parent c0afb0feeb
commit 7ca20be2e5

@ -27,7 +27,7 @@ CATALOGPATH = f'{NAME}.catalog'
GRAPHPATH = f'/tmp/{NAME}.dot'
SEPARATOR = '/'
WILD = '*'
FORMATS = ['native', 'csv', 'fzf-native', 'fzf-csv']
FORMATS = ['native', 'csv', 'csv-with-header', 'fzf-native', 'fzf-csv']
BANNER = f""" +-+-+-+-+-+-+
|c|a|t|c|l|i|
@ -39,7 +39,7 @@ USAGE = f"""
Usage:
{NAME} ls [--catalog=<path>] [--format=<fmt>] [-aBCrVSs] [<path>]
{NAME} find [--catalog=<path>] [--format=<fmt>] [-aBCbdVsP] [--path=<path>] [<term>]
{NAME} tree [--catalog=<path>] [-aBCVSsH] [<path>]
{NAME} tree [--catalog=<path>] [-aBCVSs] [<path>]
{NAME} index [--catalog=<path>] [--meta=<meta>...] [-aBCcfnV] <name> <path>
{NAME} update [--catalog=<path>] [-aBCcfnV] [--lpath=<path>] <name> <path>
{NAME} rm [--catalog=<path>] [-BCfV] <storage>
@ -62,7 +62,6 @@ Options:
-d --directory Only directory [default: False].
-F --format=<fmt> Print format, see command \"print_supported_formats\" [default: native].
-f --force Do not ask when updating the catalog [default: False].
-H --header Print header on CSV format [default: False].
-l --lpath=<path> Path where changes are logged [default: ]
-n --no-subsize Do not store size of directories [default: False].
-P --parent Ignore stored relpath [default: True].
@ -193,7 +192,6 @@ def cmd_find(args, noder, top):
def cmd_tree(args, noder, top):
"""tree action"""
path = args['<path>']
hdr = args['--header']
raw = args['--raw-size']
# find node to start with
@ -203,7 +201,7 @@ def cmd_tree(args, noder, top):
if node:
# print the tree
noder.print_tree(top, node, header=hdr, raw=raw)
noder.print_tree(top, node, raw=raw)
def cmd_graph(args, noder, top):

@ -439,14 +439,12 @@ class Noder:
def print_tree(self, top, node,
fmt='native',
header=False,
raw=False):
"""
print the tree in different format
@node: start node
@style: when fmt=native, defines the tree style
@fmt: output format
@header: when fmt=csv, print the header
@raw: print the raw size rather than human readable
"""
if fmt == 'native':
@ -457,15 +455,17 @@ class Noder:
elif fmt == 'csv':
# csv output
self._to_csv(node, with_header=header, raw=raw)
elif fmt == 'csv-with-header':
# csv output
Logger.out(self.CSV_HEADER)
self._to_csv(node, with_header=header, raw=raw)
elif fmt.startswith('fzf'):
# flat
self._to_fzf(top, node, fmt)
def _to_csv(self, node, with_header=False, raw=False):
def _to_csv(self, node, raw=False):
"""print the tree to csv"""
rend = anytree.RenderTree(node, childiter=self._sort_tree)
if with_header:
Logger.out(self.CSV_HEADER)
for _, _, item in rend:
self._node_to_csv(item, raw=raw)
@ -563,9 +563,12 @@ class Noder:
withstorage=True,
recalcparent=parentfromtree,
raw=raw)
elif fmt == 'csv':
elif fmt.startswith('csv'):
if fmt == 'csv-with-header':
Logger.out(self.CSV_HEADER)
for item in nodes:
self._node_to_csv(item, raw=raw)
elif fmt.startswith('fzf'):
selected = self._fzf_prompt(paths)
newpaths = {}
@ -627,19 +630,21 @@ class Noder:
if fmt == 'native':
self._print_node(found[0].parent,
withpath=False, withdepth=True, raw=raw)
elif fmt == 'csv':
elif fmt.startswith('csv'):
self._node_to_csv(found[0].parent, raw=raw)
elif fmt.startswith('fzf'):
pass
# print all found nodes
if fmt == 'csv-with-header':
Logger.out(self.CSV_HEADER)
for item in found:
if fmt == 'native':
self._print_node(item, withpath=False,
pre='- ',
withdepth=True,
raw=raw)
elif fmt == 'csv':
elif fmt.startswith('csv'):
self._node_to_csv(item, raw=raw)
elif fmt.startswith('fzf'):
self._to_fzf(top, item, fmt)

Loading…
Cancel
Save