1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 12:07:45 +00:00

Meta+Ports: Make 'package.sh showproperty' report multiple properties

And use that to avoid shelling out multiple times for checking
properties in lint-ports.py.
This commit is contained in:
Ali Mohammad Pur 2022-01-17 13:19:23 +03:30 committed by Andreas Kling
parent 7a26f6523a
commit 63b02859bc
2 changed files with 27 additions and 22 deletions

View file

@ -197,16 +197,17 @@ def get_port_properties(port):
""" """
props = {} props = {}
for prop in PORT_PROPERTIES: package_sh_command = f"./package.sh showproperty {' '.join(PORT_PROPERTIES)}"
res = subprocess.run(f"cd {port}; exec ./package.sh showproperty {prop}", shell=True, capture_output=True) res = subprocess.run(f"cd {port}; exec {package_sh_command}", shell=True, capture_output=True)
if res.returncode == 0: if res.returncode == 0:
props[prop] = res.stdout.decode('utf-8').strip() results = res.stdout.decode('utf-8').split('\n\n')
else: props = {prop: results[i].strip() for i, prop in enumerate(PORT_PROPERTIES)}
print(( else:
f'Executing "./package.sh showproperty {prop}" script for port {port} failed with ' print((
f'exit code {res.returncode}, output from stderr:\n{res.stderr.decode("utf-8").strip()}' f'Executing "{package_sh_command}" script for port {port} failed with '
)) f'exit code {res.returncode}, output from stderr:\n{res.stderr.decode("utf-8").strip()}'
props[prop] = '' ))
props = {x: '' for x in PORT_PROPERTIES}
return props return props

View file

@ -543,18 +543,22 @@ do_uninstall() {
uninstall uninstall
} }
do_showproperty() { do_showproperty() {
if ! declare -p "${1}" > /dev/null 2>&1; then while [ $# -gt 0 ]; do
echo "Property '$1' is not set." >&2 if ! declare -p "${1}" > /dev/null 2>&1; then
exit 1 echo "Property '$1' is not set." >&2
fi exit 1
property_declaration="$(declare -p "${1}")" fi
if [[ "$property_declaration" =~ "declare -a" ]]; then property_declaration="$(declare -p "${1}")"
prop_array="${1}[@]" if [[ "$property_declaration" =~ "declare -a" ]]; then
# Some magic to avoid empty arrays being considered unset. prop_array="${1}[@]"
echo "${!prop_array+"${!prop_array}"}" # Some magic to avoid empty arrays being considered unset.
else echo "${!prop_array+"${!prop_array}"}"
echo ${!1} else
fi echo ${!1}
fi
printf '\n'
shift
done
} }
do_all() { do_all() {
do_installdepends do_installdepends