mirror of
				https://github.com/f-droid/fdroidserver.git
				synced 2025-11-04 14:30:30 +03:00 
			
		
		
		
	Merge branch 'metadata_purge_legacy' into 'master'
metadata: Remove code ensuring YAML 1.2 compatibility See merge request fdroid/fdroidserver!1328
This commit is contained in:
		
						commit
						331d3663db
					
				
					 3 changed files with 4 additions and 82 deletions
				
			
		| 
						 | 
				
			
			@ -607,33 +607,11 @@ def read_metadata(appids={}, sort_by_time=False):
 | 
			
		|||
    return apps
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Port legacy ';' separators
 | 
			
		||||
list_sep = re.compile(r'[,;]')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def split_list_values(s):
 | 
			
		||||
    res = []
 | 
			
		||||
    for v in re.split(list_sep, s):
 | 
			
		||||
        if not v:
 | 
			
		||||
            continue
 | 
			
		||||
        v = v.strip()
 | 
			
		||||
        if not v:
 | 
			
		||||
            continue
 | 
			
		||||
        res.append(v)
 | 
			
		||||
    return res
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def sorted_builds(builds):
 | 
			
		||||
    return sorted(builds, key=lambda build: build.versionCode)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
esc_newlines = re.compile(r'\\( |\n)')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def post_metadata_parse(app):
 | 
			
		||||
    if 'flavours' in app and app['flavours'] == [True]:
 | 
			
		||||
        app['flavours'] = 'yes'
 | 
			
		||||
 | 
			
		||||
    for k, v in app.items():
 | 
			
		||||
        if fieldtype(k) == TYPE_LIST:
 | 
			
		||||
            if isinstance(v, str):
 | 
			
		||||
| 
						 | 
				
			
			@ -650,21 +628,6 @@ def post_metadata_parse(app):
 | 
			
		|||
            if type(v) in (float, int):
 | 
			
		||||
                app[k] = str(v)
 | 
			
		||||
 | 
			
		||||
    def _yaml_bool_unmapable(v):
 | 
			
		||||
        return v in (True, False, [True], [False])
 | 
			
		||||
 | 
			
		||||
    def _yaml_bool_unmap(v):
 | 
			
		||||
        if v is True:
 | 
			
		||||
            return 'yes'
 | 
			
		||||
        elif v is False:
 | 
			
		||||
            return 'no'
 | 
			
		||||
        elif v == [True]:
 | 
			
		||||
            return ['yes']
 | 
			
		||||
        elif v == [False]:
 | 
			
		||||
            return ['no']
 | 
			
		||||
 | 
			
		||||
    _bool_allowed = ('maven')
 | 
			
		||||
 | 
			
		||||
    builds = []
 | 
			
		||||
    if 'Builds' in app:
 | 
			
		||||
        for build in app.get('Builds', []):
 | 
			
		||||
| 
						 | 
				
			
			@ -673,26 +636,15 @@ def post_metadata_parse(app):
 | 
			
		|||
            for k, v in build.items():
 | 
			
		||||
                if not (v is None):
 | 
			
		||||
                    if flagtype(k) == TYPE_LIST:
 | 
			
		||||
                        if _yaml_bool_unmapable(v):
 | 
			
		||||
                            build[k] = _yaml_bool_unmap(v)
 | 
			
		||||
 | 
			
		||||
                        if isinstance(v, str):
 | 
			
		||||
                            build[k] = [v]
 | 
			
		||||
                        elif isinstance(v, bool):
 | 
			
		||||
                            if v:
 | 
			
		||||
                                build[k] = ['yes']
 | 
			
		||||
                            else:
 | 
			
		||||
                                build[k] = []
 | 
			
		||||
                    elif flagtype(k) is TYPE_INT:
 | 
			
		||||
                        build[k] = v
 | 
			
		||||
                    elif flagtype(k) is TYPE_STRING:
 | 
			
		||||
                        if isinstance(v, bool) and k in _bool_allowed:
 | 
			
		||||
                        if k == 'maven':
 | 
			
		||||
                            build[k] = v
 | 
			
		||||
                        else:
 | 
			
		||||
                            if _yaml_bool_unmapable(v):
 | 
			
		||||
                                build[k] = _yaml_bool_unmap(v)
 | 
			
		||||
                            else:
 | 
			
		||||
                                build[k] = str(v)
 | 
			
		||||
                            build[k] = str(v)
 | 
			
		||||
            builds.append(build)
 | 
			
		||||
 | 
			
		||||
    app['Builds'] = sorted_builds(builds)
 | 
			
		||||
| 
						 | 
				
			
			@ -723,18 +675,6 @@ def post_metadata_parse(app):
 | 
			
		|||
#
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
bool_true = re.compile(r'([Yy]es|[Tt]rue)')
 | 
			
		||||
bool_false = re.compile(r'([Nn]o|[Ff]alse)')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _decode_bool(s):
 | 
			
		||||
    if bool_true.match(s):
 | 
			
		||||
        return True
 | 
			
		||||
    if bool_false.match(s):
 | 
			
		||||
        return False
 | 
			
		||||
    _warn_or_exception(_("Invalid boolean '%s'") % s)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def parse_metadata(metadatapath):
 | 
			
		||||
    """Parse metadata file, also checking the source repo for .fdroid.yml.
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -894,22 +834,8 @@ def write_yaml(mf, app):
 | 
			
		|||
        raise FDroidException('currently installed version of ruamel.yaml ({}) is too old, >= 1.13 required.'.format(ruamel.yaml.__version__))
 | 
			
		||||
    # suiteable version ruamel.yaml imported successfully
 | 
			
		||||
 | 
			
		||||
    _yaml_bools_true = ('y', 'Y', 'yes', 'Yes', 'YES',
 | 
			
		||||
                        'true', 'True', 'TRUE',
 | 
			
		||||
                        'on', 'On', 'ON')
 | 
			
		||||
    _yaml_bools_false = ('n', 'N', 'no', 'No', 'NO',
 | 
			
		||||
                         'false', 'False', 'FALSE',
 | 
			
		||||
                         'off', 'Off', 'OFF')
 | 
			
		||||
    _yaml_bools_plus_lists = []
 | 
			
		||||
    _yaml_bools_plus_lists.extend(_yaml_bools_true)
 | 
			
		||||
    _yaml_bools_plus_lists.extend([[x] for x in _yaml_bools_true])
 | 
			
		||||
    _yaml_bools_plus_lists.extend(_yaml_bools_false)
 | 
			
		||||
    _yaml_bools_plus_lists.extend([[x] for x in _yaml_bools_false])
 | 
			
		||||
 | 
			
		||||
    def _field_to_yaml(typ, value):
 | 
			
		||||
        if typ is TYPE_STRING:
 | 
			
		||||
            if value in _yaml_bools_plus_lists:
 | 
			
		||||
                return ruamel.yaml.scalarstring.SingleQuotedScalarString(str(value))
 | 
			
		||||
            return str(value)
 | 
			
		||||
        elif typ is TYPE_INT:
 | 
			
		||||
            return int(value)
 | 
			
		||||
| 
						 | 
				
			
			@ -997,10 +923,6 @@ def write_yaml(mf, app):
 | 
			
		|||
        ruamel.yaml.round_trip_dump(yaml_app, mf, indent=4, block_seq_indent=2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
build_line_sep = re.compile(r'(?<!\\),')
 | 
			
		||||
build_cont = re.compile(r'^[ \t]')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def write_metadata(metadatapath, app):
 | 
			
		||||
    metadatapath = Path(metadatapath)
 | 
			
		||||
    if metadatapath.suffix == '.yml':
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ Builds:
 | 
			
		|||
    patch:
 | 
			
		||||
      - manifest-ads.patch
 | 
			
		||||
      - mobilecore.patch
 | 
			
		||||
    maven: 'yes'
 | 
			
		||||
    maven: yes
 | 
			
		||||
    srclibs:
 | 
			
		||||
      - FacebookSDK@sdk-version-3.0.2
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -64,7 +64,7 @@ Builds:
 | 
			
		|||
    patch:
 | 
			
		||||
      - manifest-ads.patch
 | 
			
		||||
      - mobilecore.patch
 | 
			
		||||
    maven: 'yes'
 | 
			
		||||
    maven: yes
 | 
			
		||||
    srclibs:
 | 
			
		||||
      - FacebookSDK@sdk-version-3.0.2
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue