gh-attach
gh attach télécharge un fichier vers le endpoint interne des pièces jointes de GitHub (aucune API publique n'existe) et affiche l'URL, que GitHub affiche automatiquement (image/vidéo/fichier) partout où elle est collée. L'URL hérite de la visibilité du dépôt, donc les téléchargements vers des dépôts privés restent privés.
Prérequis
gh extension list | grep -q 'gh attach' || gh extension install sudosubin/gh-attach
Les téléchargements utilisent un cookie de session du navigateur GitHub, pas le token gh. Par défaut, gh doit être authentifié pour que gh-attach puisse sélectionner le compte de navigateur correspondant. Si le mauvais compte est sélectionné, ajoutez --browser <name> --profile <name>. Pour une utilisation sans interface graphique, définissez GH_ATTACH_SESSION_TOKEN à la valeur brute du cookie user_session. Traitez-le comme une credential de compte complet.
Étapes
1. Télécharger : Utilisez un chemin absolu entre guillemets. -R est facultatif à l'intérieur d'un dépôt. Pour GHES, utilisez -R host/owner/repo. La commande affiche l'URL sur une seule ligne. GitHub l'affiche automatiquement (image/vidéo/fichier), donc utilisez-la telle quelle :
URL=$(gh attach "$FILE" -R <owner>/<repo>)
2. Intégrer (toujours --body-file -, par ex. gh pr comment/edit, gh issue comment/edit) :
printf '## Screenshots\n\n%s\n' "$URL" | gh pr comment <pr> -R <owner>/<repo> --body-file -
3. Télécharger : Spécifiez la destination explicitement. Les pièces jointes privées utilisent le token gh actif, avec les cookies du navigateur comme fallback d'autorisation :
gh attach download "$URL" -O "$FILE"
Notes
- Dépôt privé : l'URL ne s'affiche que pour les visualiseurs autorisés. Une récupération anonyme est censée retourner 404 ou 403.
- Dimensionnement : intégrez
<img width="800" src="$URL">à la place de l'URL brute. - GitHub Cloud et GHES décident quelles extensions de fichier et types de contenu ils acceptent.