diff --git a/src/yaml_tools/data/oscal.yaml b/src/yaml_tools/data/oscal.yaml index d2acdfc..1e50539 100644 --- a/src/yaml_tools/data/oscal.yaml +++ b/src/yaml_tools/data/oscal.yaml @@ -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 diff --git a/src/yaml_tools/utils.py b/src/yaml_tools/utils.py index d490e6c..6e2624a 100644 --- a/src/yaml_tools/utils.py +++ b/src/yaml_tools/utils.py @@ -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) @@ -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'}: diff --git a/tests/test_misc.py b/tests/test_misc.py index 03959c9..70aaf0c 100644 --- a/tests/test_misc.py +++ b/tests/test_misc.py @@ -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 diff --git a/tests/test_oscal.py b/tests/test_oscal.py index 0c0a7ae..f21c787 100644 --- a/tests/test_oscal.py +++ b/tests/test_oscal.py @@ -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 diff --git a/tests/test_yagrep.py b/tests/test_yagrep.py index f3f922e..59aecae 100644 --- a/tests/test_yagrep.py +++ b/tests/test_yagrep.py @@ -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