diff --git a/README.md b/README.md index 95060fc..a2e6d68 100644 --- a/README.md +++ b/README.md @@ -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) \ No newline at end of file diff --git a/doc/create_projet_template.md b/doc/create_projet_template.md new file mode 100644 index 0000000..41b216a --- /dev/null +++ b/doc/create_projet_template.md @@ -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`. diff --git a/doc/generate_project_from_template.md b/doc/generate_project_from_template.md new file mode 100644 index 0000000..e69de29 diff --git a/doc/scaffold_file_format.md b/doc/scaffold_file_format.md new file mode 100644 index 0000000..5933cfb --- /dev/null +++ b/doc/scaffold_file_format.md @@ -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 + +### `` + +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: + +# 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: + +# 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> +``` + +### `` + +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: + +# Message à afficher à l'utilisateur si la règle de validation concorde avec la valeur entrée par celui ci. +message: +``` + +**Exemple** + +```yaml +# Règle validant que la valeur est ne doit pas être vide. +- rule: Input == "" + message: Cette valeur ne peut être vide. +``` + +### `` + +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| \ No newline at end of file