mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-16 12:10:29 +03:00
_yaml.config_dump() for writing out config
This outputs YAML in a string that is suitable for use in regexps and string replacements, as well as complete files. It is therefore explicitly set up to avoid writing out headers and footers.
This commit is contained in:
parent
2f47938dbf
commit
3ab2baf542
4 changed files with 35 additions and 14 deletions
|
|
@ -38,3 +38,27 @@ yaml = ruamel.yaml.YAML(typ='safe')
|
|||
yaml.version = (1, 2)
|
||||
|
||||
yaml_dumper = ruamel.yaml.YAML(typ='rt')
|
||||
|
||||
|
||||
def config_dump(config, fp=None):
|
||||
"""Dump config data in YAML 1.2 format without headers.
|
||||
|
||||
This outputs YAML in a string that is suitable for use in regexps
|
||||
and string replacements, as well as complete files. It is therefore
|
||||
explicitly set up to avoid writing out headers and footers.
|
||||
|
||||
This is modeled after PyYAML's yaml.dump(), which can dump to a file
|
||||
or return a string.
|
||||
|
||||
https://yaml.dev/doc/ruamel.yaml/example/#Output_of_%60dump()%60_as_a_string
|
||||
|
||||
"""
|
||||
dumper = ruamel.yaml.YAML(typ='rt')
|
||||
dumper.default_flow_style = False
|
||||
dumper.explicit_start = False
|
||||
dumper.explicit_end = False
|
||||
if fp is None:
|
||||
with ruamel.yaml.compat.StringIO() as fp:
|
||||
dumper.dump(config, fp)
|
||||
return fp.getvalue()
|
||||
dumper.dump(config, fp)
|
||||
|
|
|
|||
|
|
@ -39,7 +39,6 @@ import sys
|
|||
import re
|
||||
import ast
|
||||
import gzip
|
||||
import ruamel.yaml
|
||||
import shutil
|
||||
import stat
|
||||
import subprocess
|
||||
|
|
@ -67,7 +66,7 @@ from zipfile import ZipFile
|
|||
|
||||
import fdroidserver.metadata
|
||||
from fdroidserver import _
|
||||
from fdroidserver._yaml import yaml, yaml_dumper
|
||||
from fdroidserver._yaml import yaml, config_dump
|
||||
from fdroidserver.exception import FDroidException, VCSException, NoSubmodulesException, \
|
||||
BuildException, VerificationException, MetaDataException
|
||||
from .asynchronousfilereader import AsynchronousFileReader
|
||||
|
|
@ -4230,9 +4229,7 @@ def write_to_config(thisconfig, key, value=None):
|
|||
lines[-1] += '\n'
|
||||
|
||||
pattern = re.compile(r'^[\s#]*' + key + r':.*\n')
|
||||
with ruamel.yaml.compat.StringIO() as fp:
|
||||
yaml_dumper.dump({key: value}, fp)
|
||||
repl = fp.getvalue()
|
||||
repl = config_dump({key: value})
|
||||
|
||||
# If we replaced this line once, we make sure won't be a
|
||||
# second instance of this line for this key in the document.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue