From 7ca20be2e5c66d61c6499ce25ba7a418db782d47 Mon Sep 17 00:00:00 2001 From: deadc0de6 Date: Thu, 20 Oct 2022 22:28:30 +0200 Subject: [PATCH] split csv and csv-with-header formats --- catcli/catcli.py | 8 +++----- catcli/noder.py | 21 +++++++++++++-------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/catcli/catcli.py b/catcli/catcli.py index c87e2a6..35faf22 100755 --- a/catcli/catcli.py +++ b/catcli/catcli.py @@ -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=] [--format=] [-aBCrVSs] [] {NAME} find [--catalog=] [--format=] [-aBCbdVsP] [--path=] [] - {NAME} tree [--catalog=] [-aBCVSsH] [] + {NAME} tree [--catalog=] [-aBCVSs] [] {NAME} index [--catalog=] [--meta=...] [-aBCcfnV] {NAME} update [--catalog=] [-aBCcfnV] [--lpath=] {NAME} rm [--catalog=] [-BCfV] @@ -62,7 +62,6 @@ Options: -d --directory Only directory [default: False]. -F --format= 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 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[''] - 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): diff --git a/catcli/noder.py b/catcli/noder.py index f0548fe..06c7ddc 100644 --- a/catcli/noder.py +++ b/catcli/noder.py @@ -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)