1
0
Fork 0

Merge pull request #1338 from Tagadda/antifeatures

This commit is contained in:
tituspijean 2022-08-05 17:46:06 +02:00 committed by GitHub
commit 30b87731ce
4 changed files with 46 additions and 0 deletions

View file

@ -3,10 +3,20 @@
import argparse import argparse
import json import json
import os import os
import yaml
from pathlib import Path from pathlib import Path
from jinja2 import Environment, FileSystemLoader from jinja2 import Environment, FileSystemLoader
def value_for_lang(values, lang):
if not isinstance(values, dict):
return values
if lang in values:
return values[lang]
elif "en" in values:
return values["en"]
else:
return list(values.values())[0]
def generate_READMEs(app_path: str): def generate_READMEs(app_path: str):
@ -18,6 +28,12 @@ def generate_READMEs(app_path: str):
manifest = json.load(open(app_path / "manifest.json")) manifest = json.load(open(app_path / "manifest.json"))
upstream = manifest.get("upstream", {}) upstream = manifest.get("upstream", {})
catalog = json.load(open(Path(os.path.abspath(__file__)).parent.parent.parent / "apps.json"))
from_catalog = catalog.get(manifest['id'], {})
antifeatures_list = yaml.load(open(Path(os.path.abspath(__file__)).parent.parent.parent / "antifeatures.yml"), Loader=yaml.SafeLoader)
antifeatures_list = { e['id']: e for e in antifeatures_list }
if not upstream and not (app_path / "doc" / "DISCLAIMER.md").exists(): if not upstream and not (app_path / "doc" / "DISCLAIMER.md").exists():
print( print(
"There's no 'upstream' key in the manifest, and doc/DISCLAIMER.md doesn't exists - therefore assuming that we shall not auto-update the README.md for this app yet." "There's no 'upstream' key in the manifest, and doc/DISCLAIMER.md doesn't exists - therefore assuming that we shall not auto-update the README.md for this app yet."
@ -53,12 +69,22 @@ def generate_READMEs(app_path: str):
else: else:
disclaimer = None disclaimer = None
# TODO: Add url to the documentation... and actually create that documentation :D
antifeatures = { a: antifeatures_list[a] for a in from_catalog.get('antifeatures', [])}
for k, v in antifeatures.items():
antifeatures[k]['title'] = value_for_lang(v['title'], lang_suffix)
if manifest.get("antifeatures", {}).get(k, None):
antifeatures[k]['description'] = value_for_lang(manifest.get("antifeatures", {}).get(k, None), lang_suffix)
else:
antifeatures[k]['description'] = value_for_lang(antifeatures[k]['description'], lang_suffix)
out = template.render( out = template.render(
lang=lang, lang=lang,
upstream=upstream, upstream=upstream,
description=description, description=description,
screenshots=screenshots, screenshots=screenshots,
disclaimer=disclaimer, disclaimer=disclaimer,
antifeatures=antifeatures,
manifest=manifest, manifest=manifest,
) )
(app_path / f"README{lang_suffix}.md").write_text(out) (app_path / f"README{lang_suffix}.md").write_text(out)

View file

@ -1,2 +1,3 @@
jinja2 jinja2
sanic sanic
pyyaml

View file

@ -52,6 +52,15 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
{{ disclaimer }} {{ disclaimer }}
{% endif -%} {% endif -%}
{% if antifeatures -%}
## :red_circle: Antifeatures
{% for antifeature in antifeatures.values() -%}
- **{{ antifeature.title }}**: {{ antifeature.description }}
{% endfor -%}
{% endif -%}
## Documentation and resources ## Documentation and resources
{% if upstream.website -%}* Official app website: <{{ upstream.website }}> {% if upstream.website -%}* Official app website: <{{ upstream.website }}>

View file

@ -38,6 +38,16 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour
{{ disclaimer }} {{ disclaimer }}
{% endif -%} {% endif -%}
{% if antifeatures -%}
## :red_circle: Fonctions indésirables
{% for antifeature in antifeatures.values() -%}
- **{{ antifeature.title }}**: {{ antifeature.description }}
{% endfor -%}
{% endif -%}
## Documentations et ressources ## Documentations et ressources
{% if upstream.website -%}* Site officiel de l'app : <{{ upstream.website }}> {% if upstream.website -%}* Site officiel de l'app : <{{ upstream.website }}>