mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-03 17:50:11 +02:00
rewritemeta yaml: fixed boolen mapping for build flags
This commit is contained in:
parent
cfd3e84250
commit
19d422da86
@ -816,7 +816,7 @@ def post_metadata_parse(app):
|
|||||||
app['builds'] = app.pop('Builds')
|
app['builds'] = app.pop('Builds')
|
||||||
|
|
||||||
if 'flavours' in app and app['flavours'] == [True]:
|
if 'flavours' in app and app['flavours'] == [True]:
|
||||||
app['flavours'] = ['yes']
|
app['flavours'] = 'yes'
|
||||||
|
|
||||||
if isinstance(app.Categories, str):
|
if isinstance(app.Categories, str):
|
||||||
app.Categories = [app.Categories]
|
app.Categories = [app.Categories]
|
||||||
@ -825,13 +825,32 @@ def post_metadata_parse(app):
|
|||||||
else:
|
else:
|
||||||
app.Categories = [str(i) for i in app.Categories]
|
app.Categories = [str(i) for i in app.Categories]
|
||||||
|
|
||||||
|
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 = ('disable', 'kivy', 'maven')
|
||||||
|
|
||||||
builds = []
|
builds = []
|
||||||
if 'builds' in app:
|
if 'builds' in app:
|
||||||
for build in app['builds']:
|
for build in app['builds']:
|
||||||
if not isinstance(build, Build):
|
if not isinstance(build, Build):
|
||||||
build = Build(build)
|
build = Build(build)
|
||||||
for k, v in build.items():
|
for k, v in build.items():
|
||||||
|
if not (v is None):
|
||||||
if flagtype(k) == TYPE_LIST:
|
if flagtype(k) == TYPE_LIST:
|
||||||
|
if _yaml_bool_unmapable(v):
|
||||||
|
build[k] = _yaml_bool_unmap(v)
|
||||||
|
|
||||||
if isinstance(v, str):
|
if isinstance(v, str):
|
||||||
build[k] = [v]
|
build[k] = [v]
|
||||||
elif isinstance(v, bool):
|
elif isinstance(v, bool):
|
||||||
@ -839,8 +858,15 @@ def post_metadata_parse(app):
|
|||||||
build[k] = ['yes']
|
build[k] = ['yes']
|
||||||
else:
|
else:
|
||||||
build[k] = []
|
build[k] = []
|
||||||
elif (flagtype(k) == TYPE_STRING or flagtype(k) == TYPE_INT) \
|
elif flagtype(k) is TYPE_INT:
|
||||||
and type(v) in (float, int):
|
build[k] = str(v)
|
||||||
|
elif flagtype(k) is TYPE_STRING:
|
||||||
|
if isinstance(v, bool) and k in _bool_allowed:
|
||||||
|
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)
|
builds.append(build)
|
||||||
|
|
||||||
@ -964,12 +990,26 @@ def parse_yaml_metadata(mf, app):
|
|||||||
|
|
||||||
def write_yaml(mf, app):
|
def write_yaml(mf, app):
|
||||||
|
|
||||||
|
_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 _class_as_dict_representer(dumper, data):
|
def _class_as_dict_representer(dumper, data):
|
||||||
'''Creates a YAML representation of a App/Build instance'''
|
'''Creates a YAML representation of a App/Build instance'''
|
||||||
return dumper.represent_dict(data)
|
return dumper.represent_dict(data)
|
||||||
|
|
||||||
def _field_to_yaml(typ, value):
|
def _field_to_yaml(typ, value):
|
||||||
if typ is TYPE_STRING:
|
if typ is TYPE_STRING:
|
||||||
|
if value in _yaml_bools_plus_lists:
|
||||||
|
return ruamel.yaml.scalarstring.SingleQuotedScalarString(str(value))
|
||||||
return str(value)
|
return str(value)
|
||||||
elif typ is TYPE_INT:
|
elif typ is TYPE_INT:
|
||||||
return int(value)
|
return int(value)
|
||||||
@ -1019,7 +1059,15 @@ def write_yaml(mf, app):
|
|||||||
b = ruamel.yaml.comments.CommentedMap()
|
b = ruamel.yaml.comments.CommentedMap()
|
||||||
for field in fields:
|
for field in fields:
|
||||||
if hasattr(build, field) and getattr(build, field):
|
if hasattr(build, field) and getattr(build, field):
|
||||||
b.update({field: _field_to_yaml(flagtype(field), getattr(build, field))})
|
value = getattr(build, field)
|
||||||
|
if field == 'gradle' and value == ['off']:
|
||||||
|
value = [ruamel.yaml.scalarstring.SingleQuotedScalarString('off')]
|
||||||
|
if field in ('disable', 'kivy', 'maven'):
|
||||||
|
if value == 'no':
|
||||||
|
continue
|
||||||
|
elif value == 'yes':
|
||||||
|
value = 'yes'
|
||||||
|
b.update({field: _field_to_yaml(flagtype(field), value)})
|
||||||
builds.append(b)
|
builds.append(b)
|
||||||
|
|
||||||
# insert extra empty lines between build entries
|
# insert extra empty lines between build entries
|
||||||
@ -1031,7 +1079,7 @@ def write_yaml(mf, app):
|
|||||||
|
|
||||||
yaml_app_field_order = [
|
yaml_app_field_order = [
|
||||||
'Disabled',
|
'Disabled',
|
||||||
'AnitFeatures',
|
'AntiFeatures',
|
||||||
'Provides',
|
'Provides',
|
||||||
'Categories',
|
'Categories',
|
||||||
'License',
|
'License',
|
||||||
|
@ -77,6 +77,8 @@ def main():
|
|||||||
if not options.to and ext not in supported:
|
if not options.to and ext not in supported:
|
||||||
logging.info("Ignoring %s file at '%s'" % (ext, path))
|
logging.info("Ignoring %s file at '%s'" % (ext, path))
|
||||||
continue
|
continue
|
||||||
|
else:
|
||||||
|
logging.info("rewriting '%s' to %s" % (appid, options.to))
|
||||||
|
|
||||||
to_ext = ext
|
to_ext = ext
|
||||||
if options.to is not None:
|
if options.to is not None:
|
||||||
|
14
tests/extra/convert_metadata_to_yaml_then_txt.sh
Executable file
14
tests/extra/convert_metadata_to_yaml_then_txt.sh
Executable file
@ -0,0 +1,14 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
if [ ! -d metadata ]; then
|
||||||
|
echo 'no metadata directory present'
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fdroid rewritemeta --to yml
|
||||||
|
fdroid rewritemeta --to txt
|
||||||
|
|
||||||
|
echo '## stripping maven, kivy, disable buildflags if they are set to "no"'
|
||||||
|
sed -i '/^ maven=no$/d' metadata/*.txt
|
||||||
|
sed -i '/^ kivy=no$/d' metadata/*.txt
|
||||||
|
sed -i '/^ disable=no$/d' metadata/*.txt
|
@ -47,14 +47,22 @@ Build:1.2.2,42
|
|||||||
Build:2.1.1,48
|
Build:2.1.1,48
|
||||||
commit=2.1.1
|
commit=2.1.1
|
||||||
patch=manifest-ads.patch,mobilecore.patch
|
patch=manifest-ads.patch,mobilecore.patch
|
||||||
|
maven=yes
|
||||||
srclibs=FacebookSDK@sdk-version-3.0.2
|
srclibs=FacebookSDK@sdk-version-3.0.2
|
||||||
rm=libs/applovin*,libs/mobileCore*
|
|
||||||
extlibs=android/android-support-v4.jar
|
|
||||||
prebuild=cp libs/android-support-v4.jar $$FacebookSDK$$/libs/ && \
|
|
||||||
sed -i 's@\(reference.1=\).*@\1$$FacebookSDK$$@' project.properties && \
|
|
||||||
sed -i 's/Class\[\]/Class\<?\>\[\]/g' $$FacebookSDK$$/src/com/facebook/model/GraphObject.java
|
|
||||||
|
|
||||||
Build:2.1.2,49
|
Build:2.1.1-b,49
|
||||||
|
commit=2.1.1
|
||||||
|
patch=manifest-ads.patch,mobilecore.patch
|
||||||
|
maven=yes@..
|
||||||
|
srclibs=FacebookSDK@sdk-version-3.0.2
|
||||||
|
|
||||||
|
Build:2.1.1-c,50
|
||||||
|
commit=2.1.1
|
||||||
|
patch=manifest-ads.patch,mobilecore.patch
|
||||||
|
maven=2
|
||||||
|
srclibs=FacebookSDK@sdk-version-3.0.2
|
||||||
|
|
||||||
|
Build:2.1.2,51
|
||||||
disable=Labelled as pre-release, so skipped
|
disable=Labelled as pre-release, so skipped
|
||||||
|
|
||||||
Archive Policy:0 versions
|
Archive Policy:0 versions
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
AntiFeatures:
|
||||||
|
- UpstreamNonFree
|
||||||
Categories:
|
Categories:
|
||||||
- System
|
- System
|
||||||
License: GPL-3.0
|
License: GPL-3.0
|
||||||
@ -59,18 +61,32 @@ Builds:
|
|||||||
patch:
|
patch:
|
||||||
- manifest-ads.patch
|
- manifest-ads.patch
|
||||||
- mobilecore.patch
|
- mobilecore.patch
|
||||||
|
maven: 'yes'
|
||||||
|
srclibs:
|
||||||
|
- FacebookSDK@sdk-version-3.0.2
|
||||||
|
|
||||||
|
- versionName: 2.1.1-b
|
||||||
|
versionCode: 49
|
||||||
|
commit: 2.1.1
|
||||||
|
patch:
|
||||||
|
- manifest-ads.patch
|
||||||
|
- mobilecore.patch
|
||||||
|
maven: yes@..
|
||||||
|
srclibs:
|
||||||
|
- FacebookSDK@sdk-version-3.0.2
|
||||||
|
|
||||||
|
- versionName: 2.1.1-c
|
||||||
|
versionCode: 50
|
||||||
|
commit: 2.1.1
|
||||||
|
patch:
|
||||||
|
- manifest-ads.patch
|
||||||
|
- mobilecore.patch
|
||||||
|
maven: '2'
|
||||||
srclibs:
|
srclibs:
|
||||||
- FacebookSDK@sdk-version-3.0.2
|
- FacebookSDK@sdk-version-3.0.2
|
||||||
rm:
|
|
||||||
- libs/applovin*
|
|
||||||
- libs/mobileCore*
|
|
||||||
extlibs:
|
|
||||||
- android/android-support-v4.jar
|
|
||||||
prebuild: |-
|
|
||||||
cp libs/android-support-v4.jar $$FacebookSDK$$/libs/ && sed -i 's@\(reference.1=\).*@\1$$FacebookSDK$$@' project.properties && sed -i 's/Class\[\]/Class\<?\>\[\]/g' $$FacebookSDK$$/src/com/facebook/model/GraphObject.java
|
|
||||||
|
|
||||||
- versionName: 2.1.2
|
- versionName: 2.1.2
|
||||||
versionCode: 49
|
versionCode: 51
|
||||||
disable: Labelled as pre-release, so skipped
|
disable: Labelled as pre-release, so skipped
|
||||||
|
|
||||||
ArchivePolicy: 0 versions
|
ArchivePolicy: 0 versions
|
||||||
|
Loading…
Reference in New Issue
Block a user