# Exécution GitHub Copilot CLI par programmation

Utiliser Copilot CLI dans le terminal, dans les scripts ou dans les flux de travail Actions.

## Présentation

Vous pouvez transmettre une invite directement à Copilot CLI via une seule commande, sans démarrer de session interactive. Cela vous permet d’utiliser Copilot directement à partir du terminal, mais vous permet également d’utiliser l’interface CLI par programmation dans les scripts, les pipelines CI/CD et les workflows d’automatisation.

Pour utiliser Copilot CLI par programme, vous pouvez effectuer l’une des opérations suivantes.

* Utilisez la commande `copilot` avec l’option de ligne de commande `-p` ou `--prompt`, suivie de votre invite :

  ```shell copy
  copilot -p "Explain this file: ./complex.ts"
  ```

* Transmettez un prompt à la commande `copilot` :

  ```shell copy
  echo "Explain this file: ./complex.ts" | copilot
  ```

  > \[!NOTE]
  > Les données provenant d’un flux de données sont ignorées si vous indiquez également un prompt avec l’option `-p` ou `--prompt`.

## Conseils pour l’utilisation Copilot CLI par programmation

* **Fournissez des invites précises : des** instructions claires et non ambiguës produisent de meilleurs résultats que des demandes vagues. Plus vous fournissez de contexte (noms de fichiers, noms de fonctions, changement exact), moins Copilot a besoin de supposer.
* **Citez les prompts avec soin** : utilisez des guillemets simples autour de votre commande si vous souhaitez éviter que le shell n’interprète les caractères spéciaux.
* **Accordez toujours des autorisations minimales** : utilisez les options de `--allow-tool=[TOOLS...]` ligne de commande pour `--allow-url=[URLs...]` accorder Copilot l’autorisation d’utiliser uniquement les outils et l’accès nécessaires pour effectuer la tâche. Évitez d’utiliser des options trop permissives (telles que `--allow-all`) sauf si vous travaillez dans un environnement de bac à sable. Pour plus d’informations, consultez « [À propos des bacs à sable cloud et locaux pour GitHub Copilot](/fr/copilot/concepts/about-cloud-and-local-sandboxes) ».
* **Utilisez `-s` (silencieux)** lors de la capture de sortie. Cela supprime les métadonnées de session afin d’obtenir du texte propre.
* **Utiliser `--no-ask-user`** pour empêcher l’agent de tenter de poser des questions de clarification.
* **Définissez un modèle explicitement** avec `--model` pour un comportement cohérent entre les environnements.

Consultez [référence programmatique du CLI GitHub Copilot](/fr/copilot/reference/copilot-cli-reference/cli-programmatic-reference) pour connaître les options particulièrement utiles lors de l’exécution Copilot CLI par programmation.

## Intégration CI/CD

Un cas d’usage courant pour l’exécution Copilot CLI par programme consiste à inclure une commande CLI dans une étape de flux de travail CI/CD.

Cet extrait d’un GitHub Actions flux de travail montre un exemple simple d’exécution d’une Copilot CLI commande.

```yaml
# Workflow step using Copilot CLI
- name: Generate test coverage report
  env:
    COPILOT_GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }}
  run: |
    copilot -p "Run the test suite and produce a coverage summary" \
      -s --allow-tool='shell(npm:*), write' --no-ask-user
```

Pour plus d’informations, consultez « [Automatisation des tâches avec l’interface CLI Copilot et GitHub Actions](/fr/copilot/how-tos/copilot-cli/automate-copilot-cli/automate-with-actions) ».

## Exemples d’utilisation par programmation

### Générer un message de validation

```bash copy
copilot -p 'Write a commit message in plain text for the staged changes' -s \
  --allow-tool='shell(git:*)'
```

### Résumer un fichier

```bash copy
copilot -p 'Summarize what src/auth/login.ts does in no more than 100 words' -s
```

### Écrire des tests pour un module

```bash copy
copilot -p 'Write unit tests for src/utils/validators.ts' \
  --allow-tool='write, shell(npm:*), shell(npx:*)'
```

### Corriger les erreurs de lint

```bash copy
copilot -p 'Fix all ESLint errors in this project' \
  --allow-tool='write, shell(npm:*), shell(npx:*), shell(git:*)'
```

### Expliquer une différence de version

```bash copy
copilot -p 'Explain the changes in the latest commit on this branch and flag any potential issues' -s
```

### Révision du code d’une branche

Utilisez la commande slash `/review` pour que l'agent intégré `code-review` passe en revue les modifications de code sur la branche actuelle.

```bash copy
copilot -p '/review the changes on this branch compared to main. Focus on bugs and security issues.' \
  -s --allow-tool='shell(git:*)'
```

### Générer une documentation

```bash copy
copilot -p 'Generate JSDoc comments for all exported functions in src/api/' \
  --allow-tool=write
```

### Exporter une session

Enregistrez la transcription de session complète dans un fichier Markdown sur le système de fichiers local.

```bash copy
copilot -p "Audit this project's dependencies for vulnerabilities" \
  --allow-tool='shell(npm:*), shell(npx:*)' \
  --share='./audit-report.md'
```

Enregistrez la transcription de la session sur un gist via GitHub.com pour un partage facile.

```bash copy
copilot -p 'Summarize the architecture of this project' --share-gist
```

> \[!NOTE]
> Les Gists ne sont pas disponibles pour Enterprise Managed Users, ou si vous utilisez GitHub Enterprise Cloud avec résidence des données (\*.ghe.com).

## Modèles de script shell

### Capturer la sortie de Copilot dans une variable

```bash copy
result=$(copilot -p 'What version of Node.js does this project require? \
  Give the number only. No other text.' -s)
echo "Required Node version: $result"
```

### Utiliser dans un conditionnel

```bash copy
if copilot -p 'Does this project have any TypeScript errors? Reply only YES or NO.' -s \
  | grep -qi "no"; then
  echo "No type errors found."
else
  echo "Type errors detected."
fi
```

### Traiter plusieurs fichiers

```bash copy
for file in src/api/*.ts; do
  echo "--- Reviewing $file ---" | tee -a review-results.md
  copilot -p "Review $file for error handling issues" -s --allow-all-tools | tee -a review-results.md
done
```

## Lectures complémentaires

* [GitHub Copilot CLI](/fr/copilot/how-tos/copilot-cli)
* [référence programmatique du CLI GitHub Copilot](/fr/copilot/reference/copilot-cli-reference/cli-programmatic-reference)
* [Référence de commande CLI pour GitHub Copilot](/fr/copilot/reference/copilot-cli-reference/cli-command-reference#command-line-options)