module_json_path = nmm('init', destination_dir, champ1, valeur1, ...)
data = nmm('init', destination_dir, ..., 'DryRun', true)
module_json_path = nmm('init', destination_dir, ..., 'Force', true)
module_json_path = nmm('init', destination_dir, ..., 'Skeleton', true)
module_json_path = nmm('init', destination_dir, 'Interactive', true)
| Paramètre | Description |
|---|---|
| destination_dir | une chaine de caracteres : repertoire ou module.json est ecrit (cree s'il n'existe pas). |
| champ1, valeur1, ... | des paires nom/valeur decrivant le manifeste et les options de la commande (voir la description). |
| Paramètre | Description |
|---|---|
| module_json_path | une chaine de caracteres : chemin complet du fichier module.json ecrit. |
| data | une structure : le manifeste assemble, retourne lorsque 'DryRun' vaut true (rien n'est ecrit). |
nmm('init', destination_dir, ...) assemble un manifeste module.json a partir des champs fournis et de valeurs par defaut raisonnables, le valide avec le meme validateur de schema que nmm('validate'), puis ecrit un module.json formate dans destination_dir. Comme il reutilise le validateur de nmm, un manifeste genere est toujours valide pour nmm.
Champs du manifeste acceptes comme paires nom/valeur :
module un nom de module respectant ^[A-Za-z][A-Za-z0-9_]*$ ; par defaut le nom du repertoire de destination (ou le titre) s'il est omis.
title, summary des chaines non vides ; title vaut par defaut le nom du module et summary vaut par defaut le titre.
version une version semantique ; par defaut 1.0.0.
license une expression de licence SPDX (par exemple MIT ou LGPL-3.0-or-later) ; obligatoire.
platforms une chaine ou un tableau de chaines ; par defaut {'all'}.
nelson une plage de versions Nelson ; par defaut >=2.0.0.
builtin un booleen ; par defaut false.
dependencies une structure associant des noms de modules a des contraintes de version ; par defaut une structure vide.
keywords, authors, description, repository, homepage, issues, documentation metadonnees optionnelles.
Options de la commande :
'Force', true ecrase un module.json existant (sinon la commande echoue).
'DryRun', true retourne la structure du manifeste assemble sans ecrire de fichier.
'Skeleton', true depose aussi une arborescence source minimale, chargeable et empaquetable a cote du manifeste (loader.m, builder.m, etc/startup.m, etc/finish.m, help et tests). Elle est volontairement minimale ; utilisez un generateur dedie pour un module plus complet.
'Interactive', true demande via input() chaque champ requis non fourni, en affichant la valeur par defaut entre crochets et en validant chaque reponse. L'option est desactivee par defaut afin que les scripts lances via --file ne bloquent jamais sur l'entree standard.
Apres l'ecriture (ou le calcul, avec DryRun) du manifeste, init execute le linter de bonnes pratiques de nmm (le meme que nmm('validate', ..., '-warnings')) et affiche des suggestions non bloquantes pour les metadonnees recommandees manquantes, telles que repository, authors, keywords ou description. Les avertissements n'empechent jamais l'ecriture du manifeste. Avec DryRun, la structure retournee contient egalement un champ warnings.
Le manifeste genere est directement utilisable par nmm('validate') et, pour un module source, par nmm('pack').
module_dir = [tempdir(), 'my_module/'];
mkdir(module_dir);
nmm('init', module_dir, 'module', 'my_module', 'title', 'My Module', ...
'summary', 'a demo module', 'license', 'MIT', 'Skeleton', true);
nmm('validate', module_dir)
| Version | Description |
|---|---|
| 2.0.0 | version initiale |