Initialisation cadMasterCLI v1.1
Description détaillée : Launcher WPF PowerShell pour piloter des scripts hébergés sur Gitea. Fonctionnalités principales : - Connexion API Gitea : liste les dépôts de l'organisation, téléchargement récursif (git/trees) - Détection intelligente des paramètres : types traduits en français, ValidateSet → RadioButtons, IsPath → bouton Parcourir + zone IPs - Fenêtre paramètres WPF : panneau README Markdown rendu (WebBrowser IE) à gauche (Star), formulaire fixe à droite, GridSplitter redimensionnable - Bouton Lancer : gris/désactivé si champs obligatoires manquants, vert si tout est rempli - Toggle README : la fenêtre avance son bord gauche, le formulaire ne bouge pas - Boucle principale : Annuler dans les paramètres revient au menu de sélection - Mode hors ligne : fallback sur le cache local si Gitea inaccessible - Convertisseur Markdown→HTML interne (sans dépendance externe) : titres, tableaux, blockquotes, listes, code - CONTRIBUTING_SCRIPTS.md + _template_script.ps1 : guide et gabarit pour les auteurs de scripts
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
/.idea
|
||||
/.claude
|
||||
/plan
|
||||
/scripts
|
||||
*.log
|
||||
*.csv
|
||||
+1191
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,93 @@
|
||||
# Guide de conception de scripts pour cadMasterCLI
|
||||
|
||||
Ce guide décrit les règles minimales pour qu'un script PowerShell soit correctement reconnu et piloté par cadMasterCLI : détection des paramètres, affichage de l'aide, types lisibles, etc.
|
||||
|
||||
---
|
||||
|
||||
## Règles minimales
|
||||
|
||||
### 1. Comment-based help obligatoire
|
||||
|
||||
Le script **doit** avoir un bloc `.SYNOPSIS` et un bloc `.PARAMETER` pour **chaque paramètre**.
|
||||
cadMasterCLI lit ces blocs via `Get-Help` pour afficher les descriptions dans l'interface (bouton "Voir l'aide").
|
||||
|
||||
```powershell
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Courte description en une ligne (affichée dans la liste de sélection).
|
||||
|
||||
.PARAMETER MonParam
|
||||
Description claire de ce que fait ce paramètre, ses valeurs attendues,
|
||||
son impact sur l'exécution du script.
|
||||
#>
|
||||
```
|
||||
|
||||
### 2. Bloc `param()` avec types et ValidateSet
|
||||
|
||||
- **Toujours typer** les paramètres : `[string]`, `[int]`, `[double]`, `[switch]`...
|
||||
- **Utiliser `[ValidateSet(...)]`** pour les paramètres à choix limité — cadMasterCLI affichera automatiquement des **RadioButtons**.
|
||||
- **Marquer les paramètres obligatoires** avec `[Parameter(Mandatory)]`.
|
||||
|
||||
```powershell
|
||||
param(
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateSet("Read", "Write")]
|
||||
[string]$Action,
|
||||
|
||||
[Parameter(Mandatory)]
|
||||
[string]$CsvInput,
|
||||
|
||||
[string]$Username = "admin"
|
||||
)
|
||||
```
|
||||
|
||||
### 3. Nommage des paramètres fichier/CSV
|
||||
|
||||
cadMasterCLI détecte automatiquement un paramètre comme **fichier** et affiche un bouton "Parcourir" si le nom contient l'un des mots-clés suivants :
|
||||
|
||||
| Mot-clé | Exemple de paramètre |
|
||||
|---|---|
|
||||
| `Path` | `$OutputPath` |
|
||||
| `File` | `$InputFile` |
|
||||
| `Csv` | `$CsvExport` |
|
||||
| `Input` | `$CsvInput` |
|
||||
| `Output` | `$OutputFile` |
|
||||
|
||||
Si le nom contient `Csv` ou `Input`, une zone de collage d'IPs avec conversion automatique en CSV est également proposée.
|
||||
|
||||
### 4. Structure du dépôt Gitea
|
||||
|
||||
Le dépôt doit contenir à sa racine :
|
||||
|
||||
```
|
||||
MonScript/
|
||||
├── MonScript.ps1 ← script principal (nom identique au dépôt recommandé)
|
||||
├── README.md ← documentation affichée dans cadMasterCLI avant exécution
|
||||
└── modules/ ← (optionnel) modules PowerShell importés par le script
|
||||
└── MonModule.psm1
|
||||
```
|
||||
|
||||
> cadMasterCLI télécharge tout le dépôt récursivement : les modules, configs et fichiers annexes sont préservés.
|
||||
|
||||
---
|
||||
|
||||
## Types reconnus et leur affichage
|
||||
|
||||
| Type PowerShell | Affiché dans l'interface |
|
||||
|---|---|
|
||||
| `[string]` | Texte |
|
||||
| `[int]` / `[int32]` / `[int64]` | Nombre entier |
|
||||
| `[double]` / `[single]` | Nombre décimal |
|
||||
| `[bool]` | Vrai/Faux |
|
||||
| `[datetime]` | Date |
|
||||
| `[System.IO.FileInfo]` | Fichier |
|
||||
| `[switch]` | Case à cocher |
|
||||
| `[ValidateSet(...)]` | RadioButtons (un bouton par valeur) |
|
||||
|
||||
---
|
||||
|
||||
## Exemple minimal conforme
|
||||
|
||||
Voir `_template_script.ps1` dans ce dépôt pour un squelette prêt à l'emploi.
|
||||
|
||||
Pour un exemple complet et fonctionnel, voir le script **DaliACLI**.
|
||||
@@ -0,0 +1,77 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Courte description en une ligne (affichee dans la liste cadMasterCLI).
|
||||
|
||||
.DESCRIPTION
|
||||
Description complete du script sur plusieurs lignes si necessaire.
|
||||
Expliquer ce que le script fait, ses prerequis et ses limitations.
|
||||
|
||||
.PARAMETER Action
|
||||
Action a effectuer :
|
||||
Read - Lire les donnees et generer un fichier de sortie
|
||||
Write - Ecrire les donnees depuis le fichier d'entree
|
||||
|
||||
.PARAMETER CsvInput
|
||||
Chemin vers le fichier CSV d'entree (separateur point-virgule).
|
||||
Pour Read : colonnes minimales requises (ex: Hostname, IP).
|
||||
Pour Write : fichier CSV genere par l'action Read.
|
||||
|
||||
.PARAMETER Username
|
||||
Nom d'utilisateur pour l'authentification (defaut : admin).
|
||||
|
||||
.PARAMETER Password
|
||||
Mot de passe pour l'authentification (defaut : vide).
|
||||
|
||||
.PARAMETER Verbose
|
||||
Affiche des informations detaillees pendant l'execution.
|
||||
|
||||
.EXAMPLE
|
||||
.\MonScript.ps1 -Action Read -CsvInput ".\liste.csv"
|
||||
|
||||
Lit les donnees depuis tous les equipements du CSV.
|
||||
Genere un fichier de sortie dans le repertoire courant.
|
||||
|
||||
.EXAMPLE
|
||||
.\MonScript.ps1 -Action Write -CsvInput ".\sortie_2026-06-26.csv" -Password "MonMotDePasse"
|
||||
|
||||
Ecrit les donnees du CSV vers les equipements.
|
||||
|
||||
.NOTES
|
||||
Prerequis : PowerShell 5.1+ (inclus dans Windows 10/11)
|
||||
Auteur : Votre Nom
|
||||
#>
|
||||
|
||||
param(
|
||||
# [ValidateSet] -> cadMasterCLI affiche des RadioButtons automatiquement
|
||||
[Parameter(Mandatory)]
|
||||
[ValidateSet("Read", "Write")]
|
||||
[string]$Action,
|
||||
|
||||
# Nom contenant "Csv" ou "Input" -> cadMasterCLI affiche un bouton Parcourir + zone IPs
|
||||
[Parameter(Mandatory)]
|
||||
[string]$CsvInput,
|
||||
|
||||
[string]$Username = "admin",
|
||||
|
||||
[string]$Password = "",
|
||||
|
||||
# [switch] -> cadMasterCLI affiche une case a cocher
|
||||
[switch]$DryRun
|
||||
)
|
||||
|
||||
# =====================================================================
|
||||
# Votre code ici
|
||||
# =====================================================================
|
||||
|
||||
# Exemple de structure recommandee :
|
||||
|
||||
switch ($Action) {
|
||||
"Read" {
|
||||
Write-Host "Action : lecture en cours..."
|
||||
# Logique de lecture
|
||||
}
|
||||
"Write" {
|
||||
Write-Host "Action : ecriture en cours..."
|
||||
# Logique d'ecriture
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user