Compare commits
12 Commits
master
...
add-schema
Author | SHA1 | Date | |
---|---|---|---|
|
1b9a98ba3d | ||
|
589b4b5adf | ||
|
674b3028f1 | ||
|
4f7452ff89 | ||
|
827f62a230 | ||
|
8ee7e265d6 | ||
|
71c4a44296 | ||
|
003edc6966 | ||
|
41baf91965 | ||
|
cfd19f5592 | ||
|
cd93e552ee | ||
|
676af5ec58 |
@ -1,6 +1,6 @@
|
||||
# YunoHost application catalog
|
||||
|
||||
<img alt="YunoHost logo" src="https://avatars.githubusercontent.com/u/1519495?s=200&v=4" width=80><img alt="Package logo" src="https://yunohost.org/user/images/yunohost_package.png" width=80>
|
||||
<img src="https://avatars.githubusercontent.com/u/1519495?s=200&v=4" width=80><img src="https://yunohost.org/user/images/yunohost_package.png" width=80>
|
||||
|
||||
This repository contains the default YunoHost app catalog, as well as related
|
||||
tools that can be run manually or automatically.
|
||||
@ -16,7 +16,7 @@ them such as their category or maintenance state. This file is regularly read by
|
||||
|
||||
- You can browse [the contributor documentation](https://yunohost.org/contributordoc)
|
||||
- If you are not familiar with Git/GitHub, you can have a look at our [homemade guide](https://yunohost.org/packaging_apps_git)
|
||||
- Don't hesitate to reach for help on the dedicated [application packaging chatroom](https://yunohost.org/chat_rooms)... we can even schedule an audio meeting to help you get started!
|
||||
- Don't hesitate to reach for help on the dedicated [application packaging chatroom](https://yunohost.org/chat_rooms) ... we can even schedule an audio meeting to help you get started!
|
||||
|
||||
## How to add your app to the application catalog
|
||||
|
||||
@ -46,9 +46,9 @@ App example addition:
|
||||
|
||||
```toml
|
||||
[your_app]
|
||||
antifeatures = [ "deprecated-software" ] # Replace with the appropriate category id found in antifeatures.toml, remove if no relevant antifeature applies
|
||||
antifeatures = [ "deprecated-software" ] # Remove if no relevant antifeature applies
|
||||
potential_alternative_to = [ "YouTube" ] # Indicate if your app can be thought of as an alternative to popular proprietary services (or remove if none applies)
|
||||
category = "foobar" # Replace with the appropriate category id found in categories.toml, don't invent a category
|
||||
category = "foobar" # Replace with the appropriate category id found in categories.toml
|
||||
state = "working"
|
||||
url = "https://github.com/YunoHost-Apps/your_app_ynh"
|
||||
```
|
||||
|
@ -1,3 +1,5 @@
|
||||
#:schema https://github.com/YunoHost/apps/blob/master/schemas/antifeatures.toml.schema.json
|
||||
|
||||
[tracking]
|
||||
icon = "user-secret"
|
||||
title.en = "Tracking"
|
||||
|
@ -1,3 +1,5 @@
|
||||
#:schema https://github.com/YunoHost/apps/raw/master/schemas/apps.toml.schema.json
|
||||
|
||||
[13ft]
|
||||
category = "reading"
|
||||
level = 7
|
||||
@ -502,13 +504,6 @@ state = "working"
|
||||
subtags = [ "wiki" ]
|
||||
url = "https://github.com/YunoHost-Apps/cowyo_ynh"
|
||||
|
||||
[crabfit]
|
||||
category = "productivity_and_management"
|
||||
potential_alternative_to = [ "Doodle", "OpenSondage" ]
|
||||
state = "working"
|
||||
subtags = [ "poll" ]
|
||||
url = "https://github.com/YunoHost-Apps/crabfit_ynh"
|
||||
|
||||
[cryptpad]
|
||||
category = "office"
|
||||
level = 8
|
||||
|
@ -1,3 +1,5 @@
|
||||
#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/categories.toml.schema.json
|
||||
|
||||
[synchronization]
|
||||
icon = "cloud"
|
||||
title.en = "Synchronization"
|
||||
|
@ -1,3 +1,5 @@
|
||||
#:schema https://github.com/YunoHost/apps/raw/master/schemas/graveyard.toml.schema.json
|
||||
|
||||
[anfora]
|
||||
category = "social_media"
|
||||
subtags = [ "pictures" ]
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.7 KiB |
63
schemas/antifeatures.toml.schema.json
Normal file
63
schemas/antifeatures.toml.schema.json
Normal file
@ -0,0 +1,63 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "https://github.com/YunoHost/apps/blob/master/schemas/antifeatures.toml.schema.json",
|
||||
"title": "Yunohost's antifeatures.toml schema",
|
||||
"version": "0",
|
||||
"$defs": {
|
||||
"translated_string": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"en"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^[a-z]{2}$": {
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^[a-z0-9_-]*$": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"icon",
|
||||
"title",
|
||||
"description"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"icon": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"$ref": "#/$defs/translated_string"
|
||||
},
|
||||
"description": {
|
||||
"$ref": "#/$defs/translated_string"
|
||||
},
|
||||
"subtags": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^[a-z_]*$": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"title"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"title": {
|
||||
"$ref": "#/$defs/translated_string"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
48
schemas/graveyard.toml.schema.json
Normal file
48
schemas/graveyard.toml.schema.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema",
|
||||
"$id": "https://github.com/YunoHost/apps/blob/master/schemas/graveyard.toml.schema.json",
|
||||
"title": "Yunohost's graveyard.toml schema",
|
||||
"version": "0",
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^[a-z0-9_-]*$": {
|
||||
"type": "object",
|
||||
"required": [
|
||||
"url"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"category": {
|
||||
"type": "string"
|
||||
},
|
||||
"subtags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"additionalItems": false
|
||||
},
|
||||
"url": {
|
||||
"type": "string",
|
||||
"format": "url"
|
||||
},
|
||||
"antifeatures": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"additionalItems": false
|
||||
},
|
||||
"potential_alternative_to": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"additionalItems": false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -3,14 +3,16 @@
|
||||
"$id": "https://github.com/YunoHost/apps/blob/master/schemas/wishlist.toml.schema.json",
|
||||
"title": "Yunohost's wishlist.toml schema",
|
||||
"version": "0",
|
||||
|
||||
"type": "object",
|
||||
"required": [],
|
||||
"additionalProperties": false,
|
||||
"patternProperties": {
|
||||
"^[a-z0-9_-]*$": {
|
||||
"type": "object",
|
||||
"required": ["name", "upstream"],
|
||||
"required": [
|
||||
"name",
|
||||
"upstream"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"name": {
|
||||
@ -26,9 +28,12 @@
|
||||
"website": {
|
||||
"type": "string",
|
||||
"format": "url"
|
||||
},
|
||||
"draft": {
|
||||
"type": "string",
|
||||
"format": "url"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Binary file not shown.
@ -8,21 +8,19 @@ msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-03-05 19:36+0100\n"
|
||||
"PO-Revision-Date: 2024-03-09 17:32+0000\n"
|
||||
"Last-Translator: cri <cri@cri.cl>\n"
|
||||
"Language-Team: Spanish <https://translate.yunohost.org/projects/yunohost/"
|
||||
"apps/es/>\n"
|
||||
"PO-Revision-Date: 2024-02-21 06:05+0100\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: es <LL@li.org>\n"
|
||||
"Language: es\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
||||
"X-Generator: Weblate 5.3.1\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#: app.py:150
|
||||
msgid "App %(app_id) not found"
|
||||
msgstr "App %(app_id) no encontrada"
|
||||
msgstr ""
|
||||
|
||||
#: app.py:152
|
||||
msgid "You must be logged in to be able to star an app"
|
||||
|
Binary file not shown.
@ -8,16 +8,15 @@ msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2024-03-05 19:36+0100\n"
|
||||
"PO-Revision-Date: 2024-03-09 04:14+0000\n"
|
||||
"PO-Revision-Date: 2024-02-27 19:19+0000\n"
|
||||
"Last-Translator: OniriCorpe <oniricorpe@disroot.org>\n"
|
||||
"Language-Team: French <https://translate.yunohost.org/projects/yunohost/apps/"
|
||||
"fr/>\n"
|
||||
"Language: fr\n"
|
||||
"Language-Team: French "
|
||||
"<https://translate.yunohost.org/projects/yunohost/apps/fr/>\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 5.3.1\n"
|
||||
"Generated-By: Babel 2.14.0\n"
|
||||
|
||||
#: app.py:150
|
||||
@ -255,7 +254,7 @@ msgstr "Documentation officielle pour les admins"
|
||||
|
||||
#: templates/app.html:142
|
||||
msgid "Official user documentation"
|
||||
msgstr "Documentation officielle d'utilisation"
|
||||
msgstr "Documentation officielle pour les utilisateur·ice·s"
|
||||
|
||||
#: templates/app.html:143
|
||||
msgid "Official code repository"
|
||||
@ -395,8 +394,8 @@ msgid ""
|
||||
"advise against their installation and advise users to find alternatives."
|
||||
msgstr ""
|
||||
"Cela signifie que le développeur ne les mettra plus à jour. Nous "
|
||||
"décourageons fortement leur installation et vous conseillons de vous tourner "
|
||||
"vers des alternatives."
|
||||
"décourageons fortement leur installation et conseillons aux utilisateurs "
|
||||
"de se tourner vers des alternatives."
|
||||
|
||||
#: templates/index.html:10
|
||||
msgid "Application Store"
|
||||
@ -461,8 +460,8 @@ msgstr "Vous devez être connecté·e pour proposer une app pour la liste de sou
|
||||
#: templates/wishlist_add.html:40
|
||||
msgid "Due to abuses, only one proposal every 15 days per user is allowed."
|
||||
msgstr ""
|
||||
"En raison d'abus, la proposition d'app est limitée à une tous les 15 jours "
|
||||
"par personne."
|
||||
"En raison d'abus, la proposition d'app est limitée à une tous les 15 "
|
||||
"jours par utilisateur·ice."
|
||||
|
||||
#: templates/wishlist_add.html:43
|
||||
msgid ""
|
||||
@ -528,3 +527,4 @@ msgstr "Envoyer"
|
||||
|
||||
#~ msgid "Please check the license of the app your are proposing"
|
||||
#~ msgstr "Merci de vérifier la licence de l'app que vous proposez"
|
||||
|
||||
|
@ -6,7 +6,7 @@ import os
|
||||
from pathlib import Path
|
||||
from copy import deepcopy
|
||||
|
||||
from typing import Dict, Optional, List, Tuple
|
||||
from typing import Dict, Optional, List
|
||||
|
||||
import toml
|
||||
from jinja2 import Environment, FileSystemLoader
|
||||
@ -51,22 +51,7 @@ def generate_READMEs(app_path: Path):
|
||||
|
||||
env = Environment(loader=FileSystemLoader(Path(__file__).parent / "templates"))
|
||||
|
||||
# parse available README template and generate a list in the form of:
|
||||
# > [("en", ""), ("fr", "_fr"), ...]
|
||||
available_langs: List[Tuple[str, str]] = [("en", "")]
|
||||
for README_template in (Path(__file__).parent / "templates").iterdir():
|
||||
# we only want README_{lang}.md.j2 files
|
||||
if README_template.name == "README.md.j2":
|
||||
continue
|
||||
|
||||
if not README_template.name.endswith(".j2") or not README_template.name.startswith("README_"):
|
||||
continue
|
||||
|
||||
language_code = README_template.name.split("_")[1].split(".")[0]
|
||||
|
||||
available_langs.append((language_code, "_" + language_code))
|
||||
|
||||
for lang, lang_suffix in available_langs:
|
||||
for lang, lang_suffix in [("en", ""), ("fr", "_fr")]:
|
||||
template = env.get_template(f"README{lang_suffix}.md.j2")
|
||||
|
||||
if (app_path / "doc" / f"DESCRIPTION{lang_suffix}.md").exists():
|
||||
|
@ -1,3 +1,5 @@
|
||||
#:schema https://github.com/YunoHost/apps/raw/master/schemas/wishlist.toml.schema.json
|
||||
|
||||
[access-to-memory-atom]
|
||||
name = "Access to Memory (AtoM)"
|
||||
description = "Standards-based archival description and access in a multilingual, multi-repository environment."
|
||||
|
Loading…
Reference in New Issue
Block a user