Title: GHI - GitHub Issues
Category: Bloc-notes
Date: 2018.11.29 21:21
Status: published
Slug: ghi-git-hub-issues
Summary: Exemples basiques de l'utilisation de `ghi`
Tags: git, dev, cli, pythonclassmates


`ghi` : _GitHub Issues on the command line. Use your `$EDITOR`, not your browser._

CLI vs GUI, pour moi le choix est souvent vite fait. Du coup ça fait quelques temps que je gère dès que possible mes` issues `github en CLI à l'aide de [ghi](https://github.com/stephencelis/ghi), un client dédié aux `issues` GitHub éccrit en Ruby.

La vrai feature qui me manque est l'affectation d'un `project`, dommage… Mais sinon on fait des trucs directement en console qui font _vraiment_ gagner du temps :

Liste les `issues` & `pulls` open :

```shell
~/git/pythonclassmates.org $ ghi list
# PythonClassmates/pythonclassmates.org open issues
  19: License proposal ↑
  18: License proposal ↑
  16: Travis CI rollback has not been runned
  15: Installation HowTo
  14: About page is missing
  13: Error 404 on category/tutoriels.html
  12: Error 404 on category/news.html
```
Seulement les` issues `:

```shell
~/git/pythonclassmates.org $ ghi list --no-pulls
# PythonClassmates/pythonclassmates.org open issues
  16: Travis CI rollback has not been runned
  15: Installation HowTo
  14: About page is missing
  13: Error 404 on category/tutoriels.html
  12: Error 404 on category/news.html
```

Affiche l'`issue 14`
```shell
~/git/pythonclassmates.org $ ghi 14
#14: About page is missing
@freezed opened this issue 23 hours ago.   open

    With links to :
    - [ ] pelican
    - [ ] template
    - [ ] github

```

`--web` ouvre la page dans votre navigateur : `ghi list --web`, `ghi 14 --web`, etc.

Bien sûr `ghi edit …` permet d'en éditer une (!)

Et `ghi open …` d'en créer. Tellement pratique quand on code et que l'on tombe sur un bug, une idée, ou autre… Fini le _«Je noterai ça tout à l'heure»_ qu'on aura oublié dans 5 minutes. Là en 15s c'est plié. Et avec l'habitude on y met presque tout :

```shell
ghi open --claim --label bug --label test --message "Test de la class Adallas à améliorer

Et là avec le double quote on laisse une ligne et on peut ajouter tous les
commentaires utiles.

Bon si comme moi vous êtes des maniaque le l'historique de votre shell, arretez
vous après `--message` et vous pourrez éditer votre issue dans votre éditeur,
par ce que là votre historique va dérouiller…

Les check-box du GHFMD sont aussi possible :
- [ ] foo
- [ ] bar
- [ ] foobar

Et quand on a fini de raconter sa vie on ferme la double quote. Hoplà!"
```
Aller pour finir un petit one-liner en shell pour créer les` issues `à partir d'un fichier texte (`issues.txt`) que l'on aura rempli avec un titre d'issue par ligne. Idéal en début de projet quand on à toute la roadmap à renseigner…

```shell
$ cat issues.txt
test issue #11
test issue #22
Foobar
```
puis

```shell
$ IFS='';while read issue; do ghi open --claim --label test --message "${issue}";done < issues.txt
#32: test issue #11
@freezed opened this issue 0 seconds ago.   open
@freezed is assigned.  test

Opened on freezed/python.
#33: test issue #22
@freezed opened this issue 0 seconds ago.   open
@freezed is assigned.  test

Opened on freezed/python.
#34: Foobar
@freezed opened this issue 0 seconds ago.   open
@freezed is assigned.  test
```

Bon code!

_[ Article publié sur [www.pythonclassmates.org](https://www.pythonclassmates.org/ghi-git-hub-issues.html) ]_
