diff --git a/autopatches/patches/add-schemas/patch.sh b/autopatches/patches/add-schemas/patch.sh new file mode 100644 index 0000000..98c9499 --- /dev/null +++ b/autopatches/patches/add-schemas/patch.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +MANIFEST_SCHEMA_LINE='#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/manifest.v2.schema.json' +TESTS_SCHEMA_LINE='#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/tests.v1.schema.json' + + +if [ -f "manifest.toml" ]; then + if ! grep "#:schema" "manifest.toml" >/dev/null; then + sed -i "1 s|^|$MANIFEST_SCHEMA_LINE\n|" manifest.toml + fi +fi + +if [ -f "tests.toml" ]; then + if ! grep "#:schema" "tests.toml" >/dev/null; then + sed -i "1 s|^|$TESTS_SCHEMA_LINE\n|" tests.toml + fi +fi + +git add manifest.toml tests.toml diff --git a/autopatches/patches/add-schemas/pr_body.md b/autopatches/patches/add-schemas/pr_body.md new file mode 100644 index 0000000..fd837fe --- /dev/null +++ b/autopatches/patches/add-schemas/pr_body.md @@ -0,0 +1,9 @@ + +This is an ***automated*** patch to add the TOML schemas URLs to manifest.toml and tests.toml. + +This allows to check for the validity of your TOML files. + +Multiple tools can be used to validate files against their schema: + +* `taplo`, a command line tool: `taplo lint manifest.toml` +* IDEs like VScode have plugins to automagically validate files diff --git a/autopatches/patches/add-schemas/pr_title.md b/autopatches/patches/add-schemas/pr_title.md new file mode 100644 index 0000000..db8a013 --- /dev/null +++ b/autopatches/patches/add-schemas/pr_title.md @@ -0,0 +1 @@ +Add TOML schemas URLs diff --git a/packaging_v2/convert_app_to_packaging_v2.py b/packaging_v2/convert_app_to_packaging_v2.py index 2705321..7887cdb 100644 --- a/packaging_v2/convert_app_to_packaging_v2.py +++ b/packaging_v2/convert_app_to_packaging_v2.py @@ -474,6 +474,8 @@ if __name__ == "__main__": args = parser.parse_args() manifest = _convert_v1_manifest_to_v2(args.app_path) - open(args.app_path + "/manifest.toml", "w").write(_dump_v2_manifest_as_toml(manifest)) + with open(args.app_path + "/manifest.toml", "w") as manifest_file: + manifest_file.write("#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/manifest.v2.schema.json\n\n") + manifest_file.write(_dump_v2_manifest_as_toml(manifest)) cleanup_scripts_and_conf(args.app_path)