mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-10-06 09:21:07 +03:00
write yaml script metadata as lists
This commit is contained in:
parent
a21635ae2e
commit
c15a7508e7
2 changed files with 142 additions and 16 deletions
|
@ -1150,10 +1150,17 @@ def write_yaml(mf, app):
|
||||||
else:
|
else:
|
||||||
return str(value)
|
return str(value)
|
||||||
elif typ is TYPE_SCRIPT:
|
elif typ is TYPE_SCRIPT:
|
||||||
if len(value) > 50:
|
if type(value) == list:
|
||||||
return ruamel.yaml.scalarstring.preserve_literal(value)
|
if len(value) == 1:
|
||||||
|
return value[0]
|
||||||
|
else:
|
||||||
|
return value
|
||||||
else:
|
else:
|
||||||
return value
|
script_lines = value.split(' && ')
|
||||||
|
if len(script_lines) > 1:
|
||||||
|
return script_lines
|
||||||
|
else:
|
||||||
|
return value
|
||||||
else:
|
else:
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
@ -1189,8 +1196,8 @@ def write_yaml(mf, app):
|
||||||
for build in app.builds:
|
for build in app.builds:
|
||||||
b = ruamel.yaml.comments.CommentedMap()
|
b = ruamel.yaml.comments.CommentedMap()
|
||||||
for field in build_flags:
|
for field in build_flags:
|
||||||
if hasattr(build, field) and getattr(build, field):
|
value = getattr(build, field)
|
||||||
value = getattr(build, field)
|
if hasattr(build, field) and value:
|
||||||
if field == 'gradle' and value == ['off']:
|
if field == 'gradle' and value == ['off']:
|
||||||
value = [ruamel.yaml.scalarstring.SingleQuotedScalarString('off')]
|
value = [ruamel.yaml.scalarstring.SingleQuotedScalarString('off')]
|
||||||
if field in ('maven', 'buildozer'):
|
if field in ('maven', 'buildozer'):
|
||||||
|
@ -1198,11 +1205,6 @@ def write_yaml(mf, app):
|
||||||
continue
|
continue
|
||||||
elif value == 'yes':
|
elif value == 'yes':
|
||||||
value = 'yes'
|
value = 'yes'
|
||||||
if field == 'prebuild':
|
|
||||||
prebuild_tokens = value.split(' && ')
|
|
||||||
# when theres just 1 entry keep string rather than a list
|
|
||||||
if len(prebuild_tokens) > 1:
|
|
||||||
value = prebuild_tokens
|
|
||||||
b.update({field: _field_to_yaml(flagtype(field), value)})
|
b.update({field: _field_to_yaml(flagtype(field), value)})
|
||||||
builds.append(b)
|
builds.append(b)
|
||||||
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ class MetadataTest(unittest.TestCase):
|
||||||
'prebuild': "a && b && "
|
'prebuild': "a && b && "
|
||||||
"sed -i 's,a,b,'"}]})
|
"sed -i 's,a,b,'"}]})
|
||||||
|
|
||||||
def test_write_yaml_prebuild(self):
|
def test_write_yaml_1_line_scripts_as_string(self):
|
||||||
mf = io.StringIO()
|
mf = io.StringIO()
|
||||||
app = fdroidserver.metadata.App()
|
app = fdroidserver.metadata.App()
|
||||||
app.Categories = ['None']
|
app.Categories = ['None']
|
||||||
|
@ -262,7 +262,10 @@ class MetadataTest(unittest.TestCase):
|
||||||
build = fdroidserver.metadata.Build()
|
build = fdroidserver.metadata.Build()
|
||||||
build.versionCode = 102030
|
build.versionCode = 102030
|
||||||
build.versionName = 'v1.2.3'
|
build.versionName = 'v1.2.3'
|
||||||
build.prebuild = 'a && b % c && d `echo \'$e\'` && f'
|
build.sudo = "chmod +rwx /opt"
|
||||||
|
build.init = "sed -i -e 'g/what/ever/' /some/file"
|
||||||
|
build.prebuild = "sed -i 'd/that wrong config/' gradle.properties"
|
||||||
|
build.build = "./gradlew compile"
|
||||||
app.builds.append(build)
|
app.builds.append(build)
|
||||||
fdroidserver.metadata.write_yaml(mf, app)
|
fdroidserver.metadata.write_yaml(mf, app)
|
||||||
mf.seek(0)
|
mf.seek(0)
|
||||||
|
@ -274,11 +277,132 @@ class MetadataTest(unittest.TestCase):
|
||||||
Builds:
|
Builds:
|
||||||
- versionName: v1.2.3
|
- versionName: v1.2.3
|
||||||
versionCode: 102030
|
versionCode: 102030
|
||||||
|
sudo: chmod +rwx /opt
|
||||||
|
init: sed -i -e 'g/what/ever/' /some/file
|
||||||
|
prebuild: sed -i 'd/that wrong config/' gradle.properties
|
||||||
|
build: ./gradlew compile
|
||||||
|
|
||||||
|
AutoUpdateMode: None
|
||||||
|
UpdateCheckMode: None
|
||||||
|
"""))
|
||||||
|
|
||||||
|
def test_write_yaml_1_line_scripts_as_list(self):
|
||||||
|
mf = io.StringIO()
|
||||||
|
app = fdroidserver.metadata.App()
|
||||||
|
app.Categories = ['None']
|
||||||
|
app.builds = []
|
||||||
|
build = fdroidserver.metadata.Build()
|
||||||
|
build.versionCode = 102030
|
||||||
|
build.versionName = 'v1.2.3'
|
||||||
|
build.sudo = ["chmod +rwx /opt"]
|
||||||
|
build.init = ["sed -i -e 'g/what/ever/' /some/file"]
|
||||||
|
build.prebuild = ["sed -i 'd/that wrong config/' gradle.properties"]
|
||||||
|
build.build = ["./gradlew compile"]
|
||||||
|
app.builds.append(build)
|
||||||
|
fdroidserver.metadata.write_yaml(mf, app)
|
||||||
|
mf.seek(0)
|
||||||
|
self.assertEqual(mf.read(), textwrap.dedent("""\
|
||||||
|
Categories:
|
||||||
|
- None
|
||||||
|
License: Unknown
|
||||||
|
|
||||||
|
Builds:
|
||||||
|
- versionName: v1.2.3
|
||||||
|
versionCode: 102030
|
||||||
|
sudo: chmod +rwx /opt
|
||||||
|
init: sed -i -e 'g/what/ever/' /some/file
|
||||||
|
prebuild: sed -i 'd/that wrong config/' gradle.properties
|
||||||
|
build: ./gradlew compile
|
||||||
|
|
||||||
|
AutoUpdateMode: None
|
||||||
|
UpdateCheckMode: None
|
||||||
|
"""))
|
||||||
|
|
||||||
|
def test_write_yaml_multiline_scripts_from_list(self):
|
||||||
|
mf = io.StringIO()
|
||||||
|
app = fdroidserver.metadata.App()
|
||||||
|
app.Categories = ['None']
|
||||||
|
app.builds = []
|
||||||
|
build = fdroidserver.metadata.Build()
|
||||||
|
build.versionCode = 102030
|
||||||
|
build.versionName = 'v1.2.3'
|
||||||
|
build.sudo = ["apt-get update",
|
||||||
|
"apt-get install -y whatever",
|
||||||
|
"sed -i -e 's/<that attr=\"bad\"/<that attr=\"good\"/' ~/.whatever/config.xml"]
|
||||||
|
build.init = ["bash generate_some_file.sh",
|
||||||
|
"sed -i -e 'g/what/ever/' /some/file"]
|
||||||
|
build.prebuild = ["npm something",
|
||||||
|
"echo 'important setting' >> /a/file"]
|
||||||
|
build.build = ["./gradlew someSpecialTask",
|
||||||
|
"sed -i 'd/that wrong config/' gradle.properties",
|
||||||
|
"./gradlew compile"]
|
||||||
|
app.builds.append(build)
|
||||||
|
fdroidserver.metadata.write_yaml(mf, app)
|
||||||
|
mf.seek(0)
|
||||||
|
self.assertEqual(mf.read(), textwrap.dedent("""\
|
||||||
|
Categories:
|
||||||
|
- None
|
||||||
|
License: Unknown
|
||||||
|
|
||||||
|
Builds:
|
||||||
|
- versionName: v1.2.3
|
||||||
|
versionCode: 102030
|
||||||
|
sudo:
|
||||||
|
- apt-get update
|
||||||
|
- apt-get install -y whatever
|
||||||
|
- sed -i -e 's/<that attr="bad"/<that attr="good"/' ~/.whatever/config.xml
|
||||||
|
init:
|
||||||
|
- bash generate_some_file.sh
|
||||||
|
- sed -i -e 'g/what/ever/' /some/file
|
||||||
prebuild:
|
prebuild:
|
||||||
- a
|
- npm something
|
||||||
- b % c
|
- echo 'important setting' >> /a/file
|
||||||
- d `echo '$e'`
|
build:
|
||||||
- f
|
- ./gradlew someSpecialTask
|
||||||
|
- sed -i 'd/that wrong config/' gradle.properties
|
||||||
|
- ./gradlew compile
|
||||||
|
|
||||||
|
AutoUpdateMode: None
|
||||||
|
UpdateCheckMode: None
|
||||||
|
"""))
|
||||||
|
|
||||||
|
def test_write_yaml_multiline_scripts_from_string(self):
|
||||||
|
mf = io.StringIO()
|
||||||
|
app = fdroidserver.metadata.App()
|
||||||
|
app.Categories = ['None']
|
||||||
|
app.builds = []
|
||||||
|
build = fdroidserver.metadata.Build()
|
||||||
|
build.versionCode = 102030
|
||||||
|
build.versionName = 'v1.2.3'
|
||||||
|
build.sudo = "apt-get update && apt-get install -y whatever && sed -i -e 's/<that attr=\"bad\"/<that attr=\"good\"/' ~/.whatever/config.xml"
|
||||||
|
build.init = "bash generate_some_file.sh && sed -i -e 'g/what/ever/' /some/file"
|
||||||
|
build.prebuild = "npm something && echo 'important setting' >> /a/file"
|
||||||
|
build.build = "./gradlew someSpecialTask && sed -i 'd/that wrong config/' gradle.properties && ./gradlew compile"
|
||||||
|
app.builds.append(build)
|
||||||
|
fdroidserver.metadata.write_yaml(mf, app)
|
||||||
|
mf.seek(0)
|
||||||
|
self.assertEqual(mf.read(), textwrap.dedent("""\
|
||||||
|
Categories:
|
||||||
|
- None
|
||||||
|
License: Unknown
|
||||||
|
|
||||||
|
Builds:
|
||||||
|
- versionName: v1.2.3
|
||||||
|
versionCode: 102030
|
||||||
|
sudo:
|
||||||
|
- apt-get update
|
||||||
|
- apt-get install -y whatever
|
||||||
|
- sed -i -e 's/<that attr="bad"/<that attr="good"/' ~/.whatever/config.xml
|
||||||
|
init:
|
||||||
|
- bash generate_some_file.sh
|
||||||
|
- sed -i -e 'g/what/ever/' /some/file
|
||||||
|
prebuild:
|
||||||
|
- npm something
|
||||||
|
- echo 'important setting' >> /a/file
|
||||||
|
build:
|
||||||
|
- ./gradlew someSpecialTask
|
||||||
|
- sed -i 'd/that wrong config/' gradle.properties
|
||||||
|
- ./gradlew compile
|
||||||
|
|
||||||
AutoUpdateMode: None
|
AutoUpdateMode: None
|
||||||
UpdateCheckMode: None
|
UpdateCheckMode: None
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue