Commandes personnalisées pour multi-url-environment-reference
Aperçu
Le CLI multi-url-environment-reference supporte les commandes personnalisées écrites par l'utilisateur qui sont
compilées dans le binaire aux côtés des commandes API auto-générées.
Les commandes personnalisées reçoivent un client SDK complètement câblé qui hérite de l'authentification du CLI,
des tentatives, de la TLS, de l'URL de base et des headers globaux — zéro configuration requise.
Architecture
cli/multi-url-environment-reference/custom.rs ← Vos gestionnaires de commandes (protégés par .fernignore)
cli/multi-url-environment-reference/sdk.rs ← Pont généré : client() + block_on()
cli/multi-url-environment-reference/main.rs ← Point d'entrée généré (appelle custom::register)
multi-url-environment-reference-sdk/ ← Crate SDK typé co-généré
multi-url-environment-reference-types/ ← Crate de modèles typés co-généré
Ajouter une commande personnalisée
1. Éditer cli/multi-url-environment-reference/custom.rs
Ce fichier est protégé par .fernignore — fern generate ne le
réécrit jamais. Enregistrez les commandes dans la fonction register() :
use multi_url_environment_reference_sdk::api::*;
pub fn register(app: CliApp) -> CliApp {
let app = app.command(
clap::Command::new("list-items")
.about("Run items list-items")
,
|matches, ctx| {
let client = super::sdk::client(ctx);
let result = super::sdk::block_on(
client.items.list_items(),
)?;
println!("{}", serde_json::to_string_pretty(&result).unwrap());
Ok(())
},
);
app
}
Puis compilez et testez :
cargo build
multi-url-environment-reference list-items
2. Clients SDK disponibles
L'appel super::sdk::client(ctx) retourne un multi_url_environment_reference_sdk::api::Client
avec les sous-clients suivants :
| Champ | Type | Description |
|---|---|---|
client.items |
multi_url_environment_reference_sdk::api::ItemsClient |
opérations items |
client.auth |
multi_url_environment_reference_sdk::api::AuthClient |
opérations auth |
client.files |
multi_url_environment_reference_sdk::api::FilesClient |
opérations files |
3. Motifs clés
Obtenir le client SDK (partage d'exécution, authentification complète) :
let client = super::sdk::client(ctx);
Exécuter un appel SDK asynchrone depuis un gestionnaire synchrone :
let result = super::sdk::block_on(
client.some_resource.some_method(args),
)?;
Utiliser des modèles typés pour la sérialisation requête/réponse :
use multi_url_environment_reference_sdk::api::*;
4. Authentification
Les commandes personnalisées héritent automatiquement de l'authentification du CLI. Les schémas d'authentification suivants sont configurés :
- BearerAuth (bearer) : env
MULTI_URL_ENVIRONMENT_REFERENCE_TOKEN
Aucun câblage d'authentification manuel n'est nécessaire dans les gestionnaires de commandes personnalisées.
Sécurité de régénération
| Fichier | Régénéré ? | Notes |
|---|---|---|
cli/multi-url-environment-reference/custom.rs |
Non | Protégé par .fernignore |
cli/multi-url-environment-reference/sdk.rs |
Oui | Pont AppContext → client SDK |
cli/multi-url-environment-reference/main.rs |
Oui | Appelle custom::register(app) |
multi-url-environment-reference-sdk/ |
Oui | Crate SDK typé co-généré |
multi-url-environment-reference-types/ |
Oui | Modèles typés co-générés |
Après exécution de fern generate, votre custom.rs est préservé. Tout le
code généré (SDK, types, glue, main.rs) est mis à jour pour correspondre à
la dernière spec API. Si la surface du SDK change (méthodes renommées, nouveaux
sous-clients), mettez à jour votre custom.rs en conséquence.
Compiler et tester
# Compiler le CLI (inclut les commandes personnalisées)
cargo build
# Exécuter votre commande personnalisée
multi-url-environment-reference <your-command> [args]
# Exécuter avec sortie verbeuse pour le débogage
RUST_LOG=debug multi-url-environment-reference <your-command> [args]