Browse Source

fix: Stop adding unwanted newlines in multiline strings

This patch set fixes an tools/updater.py YAML export issue in which pyyaml is
adding unwanted (multiple) newlines in multiline strings in the output. In
other words, currently, tools/updater.py keeps injecting additional newline
characters in multiline certificates, such that each newline is rendered, in
effect, as two newlines.

For example:

  -----BEGIN CERTIFICATE-----
  MIIDSDCCAjCgAwIBAgIUegkh/antB1XyDVHdP5dv+0MZyBcwDQYJKoZIhvcNAQEL
  BQAwKjETMBEGA1UEChMKS3ViZXJuZXRlczETMBEGA1UEAxMKa3ViZXJuZXRlczAe
  <snip>

Currently renders as:

  -----BEGIN CERTIFICATE-----

  MIIDSDCCAjCgAwIBAgIUegkh/antB1XyDVHdP5dv+0MZyBcwDQYJKoZIhvcNAQEL

  BQAwKjETMBEGA1UEChMKS3ViZXJuZXRlczETMBEGA1UEAxMKa3ViZXJuZXRlczAe
  <snip>

This patch set adds code to the updater.py tool to use the
solution prescribed in [0] to force pyyaml to ensure that the
rendered output for such multiline strings matches the original
input.

Change-Id: I8b5c5166a0a1b3d945281addd4f562368e1907c3
changes/18/611018/2
Felipe Monteiro 3 years ago
committed by Kaspars Skels
parent
commit
5a93c30c85
1 changed files with 20 additions and 0 deletions
  1. +20
    -0
      tools/updater.py

+ 20
- 0
tools/updater.py View File

@ -92,6 +92,26 @@ image_repo_status = {}
dict_path = None
def __represent_multiline_yaml_str():
"""Compel ``yaml`` library to use block style literals for multi-line
strings to prevent unwanted multiple newlines.
"""
yaml.SafeDumper.org_represent_str = yaml.SafeDumper.represent_str
def repr_str(dumper, data):
if '\n' in data:
return dumper.represent_scalar(
'tag:yaml.org,2002:str', data, style='|')
return dumper.org_represent_str(data)
yaml.add_representer(str, repr_str, Dumper=yaml.SafeDumper)
__represent_multiline_yaml_str()
def inverse_dict(dic):
"""Accepts dictionary, returns dictionary where keys become values,
and values become keys"""


Loading…
Cancel
Save