diff --git a/tools/autopatches/patches/add-schemas/patch.sh b/tools/autopatches/patches/add-schemas/patch.sh new file mode 100644 index 00000000..98c94992 --- /dev/null +++ b/tools/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/tools/autopatches/patches/add-schemas/pr_body.md b/tools/autopatches/patches/add-schemas/pr_body.md new file mode 100644 index 00000000..fd837fe0 --- /dev/null +++ b/tools/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/tools/autopatches/patches/add-schemas/pr_title.md b/tools/autopatches/patches/add-schemas/pr_title.md new file mode 100644 index 00000000..db8a013d --- /dev/null +++ b/tools/autopatches/patches/add-schemas/pr_title.md @@ -0,0 +1 @@ +Add TOML schemas URLs diff --git a/tools/packaging_v2/convert_app_to_packaging_v2.py b/tools/packaging_v2/convert_app_to_packaging_v2.py index 27053210..7887cdb6 100644 --- a/tools/packaging_v2/convert_app_to_packaging_v2.py +++ b/tools/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)