Skip to content

Commit

Permalink
chg: dev: allow for adjustable CSV delimiter in oscal.yaml
Browse files Browse the repository at this point in the history
Signed-off-by: Stephen L Arnold <nerdboy@gentoo.org>
  • Loading branch information
sarnold committed Jun 10, 2024
1 parent 3c8508b commit 00bbb19
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/yaml_tools/data/oscal.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ default_control_attr: 'status'
default_lookup_key: 'controls'
default_csv_hdr: null
new_csv_hdrs: []
csv_delimiter: null
input_format: null
output_format: 'json'
output_path: null
Expand Down
6 changes: 4 additions & 2 deletions src/yaml_tools/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,11 +250,12 @@ def text_data_writer(outdata, prog_opts):
"""
out = ''
csv_hdr = prog_opts['default_csv_hdr']
delim = prog_opts['csv_delimiter'] if prog_opts['csv_delimiter'] else ','
fmt = prog_opts['output_format'] if prog_opts['output_format'] else 'raw'

if fmt == 'csv' and isinstance(outdata, collections.abc.Sequence):
field_names = csv_hdr if csv_hdr else list(outdata[0].keys())
w = csv.DictWriter(sys.stdout, field_names)
w = csv.DictWriter(sys.stdout, field_names, delimiter=delim)
w.writeheader()
w.writerows(outdata)

Expand Down Expand Up @@ -284,12 +285,13 @@ def text_file_reader(filepath, prog_opts):
"""
data_in = {}
infile = Path(filepath)
delim = prog_opts['csv_delimiter'] if prog_opts['csv_delimiter'] else ','

if infile.suffix not in EXTENSIONS:
raise FileTypeError("FileTypeError: unknown input file extension")
with infile.open("r", encoding=prog_opts['file_encoding']) as file:
if infile.suffix == '.csv':
data_in = list(csv.DictReader(file))
data_in = list(csv.DictReader(file, delimiter=delim))
elif infile.suffix == '.json':
data_in = json.load(file)
elif infile.suffix in {'.yaml', '.yml'}:
Expand Down
1 change: 1 addition & 0 deletions tests/test_misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
default_profile_glob: '*.yaml'
default_csv_hdr: null
new_csv_hdrs: []
csv_delimiter: null
input_format: null
output_format: 'json'
output_path: null
Expand Down
1 change: 1 addition & 0 deletions tests/test_oscal.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
default_control_attr: 'status'
default_csv_hdr: null
new_csv_hdrs: ['OE expanded', 'Green ID']
csv_delimiter: null
input_format: null
output_format: 'json'
output_path: null
Expand Down
1 change: 1 addition & 0 deletions tests/test_yagrep.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
default_separator: '/'
input_format: null
output_format: 'json'
csv_delimiter: null
default_csv_hdr: null
preserve_quotes: true
process_comments: false
Expand Down

0 comments on commit 00bbb19

Please # to comment.