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
|
# 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
|
This repository contains the default YunoHost app catalog, as well as related
|
||||||
tools that can be run manually or automatically.
|
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)
|
- 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)
|
- 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
|
## How to add your app to the application catalog
|
||||||
|
|
||||||
@ -46,9 +46,9 @@ App example addition:
|
|||||||
|
|
||||||
```toml
|
```toml
|
||||||
[your_app]
|
[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)
|
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"
|
state = "working"
|
||||||
url = "https://github.com/YunoHost-Apps/your_app_ynh"
|
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]
|
[tracking]
|
||||||
icon = "user-secret"
|
icon = "user-secret"
|
||||||
title.en = "Tracking"
|
title.en = "Tracking"
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#:schema https://github.com/YunoHost/apps/raw/master/schemas/apps.toml.schema.json
|
||||||
|
|
||||||
[13ft]
|
[13ft]
|
||||||
category = "reading"
|
category = "reading"
|
||||||
level = 7
|
level = 7
|
||||||
@ -502,13 +504,6 @@ state = "working"
|
|||||||
subtags = [ "wiki" ]
|
subtags = [ "wiki" ]
|
||||||
url = "https://github.com/YunoHost-Apps/cowyo_ynh"
|
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]
|
[cryptpad]
|
||||||
category = "office"
|
category = "office"
|
||||||
level = 8
|
level = 8
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#:schema https://raw.githubusercontent.com/YunoHost/apps/master/schemas/categories.toml.schema.json
|
||||||
|
|
||||||
[synchronization]
|
[synchronization]
|
||||||
icon = "cloud"
|
icon = "cloud"
|
||||||
title.en = "Synchronization"
|
title.en = "Synchronization"
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
#:schema https://github.com/YunoHost/apps/raw/master/schemas/graveyard.toml.schema.json
|
||||||
|
|
||||||
[anfora]
|
[anfora]
|
||||||
category = "social_media"
|
category = "social_media"
|
||||||
subtags = [ "pictures" ]
|
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",
|
"$id": "https://github.com/YunoHost/apps/blob/master/schemas/wishlist.toml.schema.json",
|
||||||
"title": "Yunohost's wishlist.toml schema",
|
"title": "Yunohost's wishlist.toml schema",
|
||||||
"version": "0",
|
"version": "0",
|
||||||
|
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": [],
|
"required": [],
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"patternProperties": {
|
"patternProperties": {
|
||||||
"^[a-z0-9_-]*$": {
|
"^[a-z0-9_-]*$": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": ["name", "upstream"],
|
"required": [
|
||||||
|
"name",
|
||||||
|
"upstream"
|
||||||
|
],
|
||||||
"additionalProperties": false,
|
"additionalProperties": false,
|
||||||
"properties": {
|
"properties": {
|
||||||
"name": {
|
"name": {
|
||||||
@ -26,9 +28,12 @@
|
|||||||
"website": {
|
"website": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"format": "url"
|
"format": "url"
|
||||||
|
},
|
||||||
|
"draft": {
|
||||||
|
"type": "string",
|
||||||
|
"format": "url"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Binary file not shown.
@ -8,21 +8,19 @@ msgstr ""
|
|||||||
"Project-Id-Version: PROJECT VERSION\n"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-03-05 19:36+0100\n"
|
"POT-Creation-Date: 2024-03-05 19:36+0100\n"
|
||||||
"PO-Revision-Date: 2024-03-09 17:32+0000\n"
|
"PO-Revision-Date: 2024-02-21 06:05+0100\n"
|
||||||
"Last-Translator: cri <cri@cri.cl>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: Spanish <https://translate.yunohost.org/projects/yunohost/"
|
"Language-Team: es <LL@li.org>\n"
|
||||||
"apps/es/>\n"
|
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
"X-Generator: Weblate 5.3.1\n"
|
|
||||||
"Generated-By: Babel 2.14.0\n"
|
"Generated-By: Babel 2.14.0\n"
|
||||||
|
|
||||||
#: app.py:150
|
#: app.py:150
|
||||||
msgid "App %(app_id) not found"
|
msgid "App %(app_id) not found"
|
||||||
msgstr "App %(app_id) no encontrada"
|
msgstr ""
|
||||||
|
|
||||||
#: app.py:152
|
#: app.py:152
|
||||||
msgid "You must be logged in to be able to star an app"
|
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"
|
"Project-Id-Version: PROJECT VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||||
"POT-Creation-Date: 2024-03-05 19:36+0100\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"
|
"Last-Translator: OniriCorpe <oniricorpe@disroot.org>\n"
|
||||||
"Language-Team: French <https://translate.yunohost.org/projects/yunohost/apps/"
|
|
||||||
"fr/>\n"
|
|
||||||
"Language: 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"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=utf-8\n"
|
"Content-Type: text/plain; charset=utf-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\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"
|
"Generated-By: Babel 2.14.0\n"
|
||||||
|
|
||||||
#: app.py:150
|
#: app.py:150
|
||||||
@ -255,7 +254,7 @@ msgstr "Documentation officielle pour les admins"
|
|||||||
|
|
||||||
#: templates/app.html:142
|
#: templates/app.html:142
|
||||||
msgid "Official user documentation"
|
msgid "Official user documentation"
|
||||||
msgstr "Documentation officielle d'utilisation"
|
msgstr "Documentation officielle pour les utilisateur·ice·s"
|
||||||
|
|
||||||
#: templates/app.html:143
|
#: templates/app.html:143
|
||||||
msgid "Official code repository"
|
msgid "Official code repository"
|
||||||
@ -395,8 +394,8 @@ msgid ""
|
|||||||
"advise against their installation and advise users to find alternatives."
|
"advise against their installation and advise users to find alternatives."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Cela signifie que le développeur ne les mettra plus à jour. Nous "
|
"Cela signifie que le développeur ne les mettra plus à jour. Nous "
|
||||||
"décourageons fortement leur installation et vous conseillons de vous tourner "
|
"décourageons fortement leur installation et conseillons aux utilisateurs "
|
||||||
"vers des alternatives."
|
"de se tourner vers des alternatives."
|
||||||
|
|
||||||
#: templates/index.html:10
|
#: templates/index.html:10
|
||||||
msgid "Application Store"
|
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
|
#: templates/wishlist_add.html:40
|
||||||
msgid "Due to abuses, only one proposal every 15 days per user is allowed."
|
msgid "Due to abuses, only one proposal every 15 days per user is allowed."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"En raison d'abus, la proposition d'app est limitée à une tous les 15 jours "
|
"En raison d'abus, la proposition d'app est limitée à une tous les 15 "
|
||||||
"par personne."
|
"jours par utilisateur·ice."
|
||||||
|
|
||||||
#: templates/wishlist_add.html:43
|
#: templates/wishlist_add.html:43
|
||||||
msgid ""
|
msgid ""
|
||||||
@ -528,3 +527,4 @@ msgstr "Envoyer"
|
|||||||
|
|
||||||
#~ msgid "Please check the license of the app your are proposing"
|
#~ msgid "Please check the license of the app your are proposing"
|
||||||
#~ msgstr "Merci de vérifier la licence de l'app que vous proposez"
|
#~ msgstr "Merci de vérifier la licence de l'app que vous proposez"
|
||||||
|
|
||||||
|
@ -6,7 +6,7 @@ import os
|
|||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
|
|
||||||
from typing import Dict, Optional, List, Tuple
|
from typing import Dict, Optional, List
|
||||||
|
|
||||||
import toml
|
import toml
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
@ -51,22 +51,7 @@ def generate_READMEs(app_path: Path):
|
|||||||
|
|
||||||
env = Environment(loader=FileSystemLoader(Path(__file__).parent / "templates"))
|
env = Environment(loader=FileSystemLoader(Path(__file__).parent / "templates"))
|
||||||
|
|
||||||
# parse available README template and generate a list in the form of:
|
for lang, lang_suffix in [("en", ""), ("fr", "_fr")]:
|
||||||
# > [("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:
|
|
||||||
template = env.get_template(f"README{lang_suffix}.md.j2")
|
template = env.get_template(f"README{lang_suffix}.md.j2")
|
||||||
|
|
||||||
if (app_path / "doc" / f"DESCRIPTION{lang_suffix}.md").exists():
|
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]
|
[access-to-memory-atom]
|
||||||
name = "Access to Memory (AtoM)"
|
name = "Access to Memory (AtoM)"
|
||||||
description = "Standards-based archival description and access in a multilingual, multi-repository environment."
|
description = "Standards-based archival description and access in a multilingual, multi-repository environment."
|
||||||
|
Loading…
Reference in New Issue
Block a user