nullable-allof-extends-test-custom-commands

Par fern-api · fern

Comment créer des commandes personnalisées pour le CLI nullable-allof-extends-test en utilisant le SDK co-généré.

npx skills add https://github.com/fern-api/fern --skill nullable-allof-extends-test-custom-commands

Commandes personnalisées pour nullable-allof-extends-test

Vue d'ensemble

Le CLI nullable-allof-extends-test supporte les commandes personnalisées écrites par l'utilisateur, compilées dans le binaire aux côtés des commandes API générées automatiquement. Les commandes personnalisées obtiennent un client SDK entièrement câblé qui hérite de l'authentification, des tentatives, du TLS, de l'URL de base et des en-têtes globaux du CLI — aucune configuration requise.

Architecture

cli/nullable-allof-extends-test/custom.rs    ← Vos gestionnaires de commandes (protégés par .fernignore)
cli/nullable-allof-extends-test/sdk.rs       ← Pont généré : client() + block_on()
cli/nullable-allof-extends-test/main.rs      ← Point d'entrée généré (appelle custom::register)
nullable-allof-extends-test-sdk/             ← Crate SDK typé co-généré
nullable-allof-extends-test-types/           ← Crate de modèles typés co-généré

Ajouter une commande personnalisée

1. Éditer cli/nullable-allof-extends-test/custom.rs

Ce fichier est protégé par .fernignorefern generate ne le surpassera jamais. Enregistrez les commandes dans la fonction register() :

use nullable_allof_extends_test_sdk::api::*;

pub fn register(app: CliApp) -> CliApp {
    let app = app.command(
        clap::Command::new("my-command")
            .about("Description of your command")
            .arg(clap::Arg::new("id").required(true)),
        |matches, ctx| {
            let id = matches.get_one::<String>("id").unwrap();
            let client = super::sdk::client(ctx);
            let result = super::sdk::block_on(
                client.resource.get(id),
            )?;
            println!("{}", serde_json::to_string_pretty(&result).unwrap());
            Ok(())
        },
    );
    app
}

2. Clients SDK disponibles

L'appel super::sdk::client(ctx) retourne un nullable_allof_extends_test_sdk::api::Client avec les sous-clients suivants :

(Les sous-clients sont dérivés de la spec API au moment de la génération.)

3. Modèles clés

Obtenir le client SDK (partage d'exécution, entièrement authentifié) :

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 les modèles typés pour la sérialisation requête/réponse :

use nullable_allof_extends_test_sdk::api::*;

Sécurité de la régénération

Fichier Régénéré ? Notes
cli/nullable-allof-extends-test/custom.rs Non Protégé par .fernignore
cli/nullable-allof-extends-test/sdk.rs Oui Pont AppContext → client SDK
cli/nullable-allof-extends-test/main.rs Oui Appelle custom::register(app)
nullable-allof-extends-test-sdk/ Oui Crate SDK typé co-généré
nullable-allof-extends-test-types/ Oui Modèles typés co-générés

Après avoir exécuté 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.

Build & Test

# Builder le CLI (inclut les commandes personnalisées)
cargo build

# Exécuter votre commande personnalisée
nullable-allof-extends-test <your-command> [args]

# Exécuter avec sortie détaillée pour déboguer
RUST_LOG=debug nullable-allof-extends-test <your-command> [args]

Skills similaires