Add `scaffold.yml` file format base documentation

This commit is contained in:
wpetit 2020-05-18 14:02:27 +02:00
parent fa1856ed8f
commit 1eab0f9f84
4 changed files with 74 additions and 0 deletions

View File

@ -41,6 +41,10 @@ OPTIONS:
--help, -h show help (default: false)
```
## Documentation
- [Format du fichier `scaffold.yml`](./doc/scaffold_file_format.md)
## Licence
[GPL-3.0](./LICENSE)

View File

@ -0,0 +1,3 @@
# Créer un nouveau modèle de projet
Un modèle de projet `scaffold` est un simple répertoire (ou dépôt Git) contenant à sa racine un fichier `scaffold.yml`.

View File

View File

@ -0,0 +1,67 @@
## Format du fichier `scaffold.yml`
Le fichier `scaffold.yml` est au format [YAML](https://yaml.org/). C'est ce fichier qui permet de définir les données à injecter dans les modèles lors de la génération d'un nouveau projet avec la commande `scaffold from ...`.
**Schéma**
``` yaml
# Version du format de fichier. Actuellement, la seule valeur possible est 1.
version: 1
# Liste des variables à injecter dans les modèles de fichier
vars: <[]Var>
```
## Types
### `<Var>`
Définition d'une variable injectable dans les modèles de fichier.
**Schéma**
```yaml
# Type de la variable. Actuellement, la seul valeur possible est "string"
type: "string"
# Nom de la variable. C'est le nom qui permettra d'accéder à la valeur de la variable dans les modèles de fichiers.
name: <string>
# Description de la variable. C'est le texte qui sera affiché dans l'invite de commande au moment de la génération de l'arborescence de fichiers.
description: <string>
# Liste des contraintes appliquées à la valeur de la variable. La valeur est considérée comme invalide tant que l'ensemble des contraintes ne sont pas remplies.
constraints: <[]Constraint>
```
### `<Constraint>`
Définition d'une contrainte appliquée à la valeur d'une variable.
```yaml
# Règle de validation à appliquer à la valeur entrée par l'utilisateur.
rule: <Rule>
# Message à afficher à l'utilisateur si la règle de validation concorde avec la valeur entrée par celui ci.
message: <string>
```
**Exemple**
```yaml
# Règle validant que la valeur est ne doit pas être vide.
- rule: Input == ""
message: Cette valeur ne peut être vide.
```
### `<Rule>`
Règle de validation d'une contrainte appliquée à une variable.
Ce n'est ni plus ni moins qu'une condition booléenne écrite avec la syntaxe proposée par la librairie [github.com/antonmedv/expr](https://github.com/antonmedv/expr/blob/master/docs/Language-Definition.md).
Voici les variables globales disponibles aux règles:
|Variable|Description|
|--------|-----------|
|`Input` |Valeur entrée par l'utilisateur|