mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-05 23:10:29 +03:00
standardize config on ruamel.yaml with a YAML 1.2 config
This is a key piece of the ongoing `PUBLISH` _config.yml_ migration. There was uneven implementation of which YAML parser to use, and that could lead to bugs where one parser might read a value one way, and a different parser will read the value a different way. I wanted to be sure that YAML 1.2 would always work. This makes all code that handles config files use the same `ruamel.yaml` parsers. This only touches other usages of YAML parsers when there is overlap. This does not port all of _fdroidserver_ to `ruamel.yaml` and YAML 1.2. The metadata files should already be YAML 1.2 anyway. # Conflicts: # fdroidserver/lint.py
This commit is contained in:
parent
53b62415d3
commit
2f47938dbf
15 changed files with 116 additions and 48 deletions
40
fdroidserver/_yaml.py
Normal file
40
fdroidserver/_yaml.py
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
# Copyright (C) 2025, Hans-Christoph Steiner <hans@eds.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
"""Standard YAML parsing and dumping.
|
||||
|
||||
YAML 1.2 is the preferred format for all data files. When loading
|
||||
F-Droid formats like config.yml and <Application ID>.yml, YAML 1.2 is
|
||||
forced, and older YAML constructs should be considered an error.
|
||||
|
||||
It is OK to load and dump files in other YAML versions if they are
|
||||
externally defined formats, like FUNDING.yml. In those cases, these
|
||||
common instances might not be appropriate to use.
|
||||
|
||||
There is a separate instance for dumping based on the "round trip" aka
|
||||
"rt" mode. The "rt" mode maintains order while the "safe" mode sorts
|
||||
the output. Also, yaml.version is not forced in the dumper because that
|
||||
makes it write out a "%YAML 1.2" header. F-Droid's formats are
|
||||
explicitly defined as YAML 1.2 and meant to be human-editable. So that
|
||||
header gets in the way.
|
||||
|
||||
"""
|
||||
|
||||
import ruamel.yaml
|
||||
|
||||
yaml = ruamel.yaml.YAML(typ='safe')
|
||||
yaml.version = (1, 2)
|
||||
|
||||
yaml_dumper = ruamel.yaml.YAML(typ='rt')
|
||||
Loading…
Add table
Add a link
Reference in a new issue