# org-mode и Github Projects
vit01(mira, 1) — All
2018-11-14 14:36:41


У Гитхаба есть фича под названием Projects. Это что-то вроде Kanban-списков для составления планов. Каждый Project содержит в себе набор карточек, в каждой из которых можно хранить заметки и отмечать сделанные дела.

В репозитории IDEC Mobile есть основной план, доступный всем, в котором я открываю и закрываю задачи. Всё бы хорошо, но, имея под рукой такой мощный инструмент как Emacs, крайне расточительно лезть каждый раз в браузер, чтобы поглядеть на список дел по проекту с кодом.

Давайте это исправим, используя python и org-mode

1. $ pip install PyGithub
Документацию по пакету можно посмотреть здесь: https://pygithub.readthedocs.io/en/latest/introduction.html

2. Получаем access-token для API Гитхаба
Идём сюда: https://github.com/settings/tokens
Получаем Personal Access Token с доступом к вашим репозиториям, копируем

3. Создаём python-скрипт с подобным содержанием:

#!/usr/bin/env python3

from github import Github

g = Github("your-access-token")

# 0 - это первый проект, в данном случае он единственный
prj = g.get_user().get_repo("idec-mobile").get_projects()[0]

# вывод форматируется в виде списка org-mode
print("\n+ {" + prj.name + "} <" + prj.html_url + ">")
for column in prj.get_columns():
        print("\n\t+ " + column.name)

        for card in column.get_cards():
                if card.archived:
                        continue
                
                print("\t\t+ " + str(card.note))

4. В файле org-mode прописываем блок для запуска кода
:results output raw ставить обязательно, иначе org-mode будет оформлять вывод скрипта как текст вроде цитаты, а нам надо, чтобы он был в виде org-списка

#+BEGIN_SRC shell :results output raw
~/path/to/your/python/script
#+END_SRC

5. Если в Emacs не настроен org-babel, то в конфиге прописать вот это (свои языки прописать по желанию)

  (org-babel-do-load-languages
   'org-babel-load-languages
   '(
     (shell . t)
     (python . t)
     (emacs-lisp . t)
     (C . t))
   )

6. Можно запускать. Не забудьте chmod +x для питоноскрипта
Для выполнения кода в org-mode надо лишь навести курсор на блок этого кода и нажать C-c C-c

Список гитхабопроектов появится рядом с меткой #+RESULTS: