bpython i dzielenie się kodem

Przy codziennej pracy z pythonem moimi ulubionymi konsolami są bpython (szybkość) i IPython (kombajn). Dzisiaj będzie krótko na temat jednej z funkcji jaką oferuje bpython, a chodzi tutaj o wrzucenie kodu z konsoli do internetu ;)

bpaste

Aby wysłać kod z konsoli bpython wystarczy wcisnąć F8 i potwierdzić to klawiszem y. Domyślnie kod jest wysyłany na bpaste i z poziomu konsoli wygląda to mniej więcej tak:
http://bpaste.net/show/cVuvrhTrBZB8ZSM9DVxP/
I to tyle jeśli chodzi o wrzucanie na bpaste.

gist

Ale co jeśli, chcę szybko umieścić kod na gist? Oczywiście da się, lecz trzeba poczynić kilka kroków. Pierwsze co musisz zrobić to stworzyć plik konfiguracyjny dla bpythona w którym zamieścisz informację, jakiego skryptu ma używać do wypychania kodu. Jeśli nie masz pliku ~/.config/bpython/config to go stwórz i dodaj w sekcji general linijkę: pastebin_helper = do_gist_json. Przykładowo u mnie wygląda to tak:
Nazwa do_gist_json to oczywiście nazwa skryptu, który będzie miał się wykonać po wciśnięciu F8 (domyślnie jest to pastebinit, dlatego też leci na bpaste). Czas na napisanie skryptu. Zaraz! Jak pisać?! Spokojnie, poniżej zamieszczam kod; musisz tylko podmienić dane user i pass na swoje jeśli chcesz, aby kod wrzucał się na twoje konto. Jeśli nie chcesz, możesz usunąć argument auth:
#!/usr/bin/env python

import sys
import json
import requests


def do_gist_json(s):
    gist_url = 'https://api.github.com/gists'

    data = {'description': "Gist from BPython",
            'public': True,
            'files': {
                'sample.py': {'content': None}
            }}
    data['files']['sample.py']['content'] = s

    res = requests.post(gist_url,
                        data=json.dumps(data),
                        auth=("user", "pass"))

    return res.json()["html_url"]

if __name__ == "__main__":
    s = sys.stdin.read()
    print do_gist_json(s)
Domyślnie wysyłany kod jest publiczny, jeśli tego nie chcesz to już pewnie zauważyłeś, którą linijkę musisz zmienić :). Plik do pobrania jest tutaj. Ściągnij/skopiuj gdzieś na dysk i nazwij go tak jak podałeś w pliku ~/.config/bpython/config. Następnie musisz nadać skryptowi prawa do wykonywania, czyli wpisujesz w konsoli:
chmod +x do_gist_json
i kopiujesz do /usr/bin/
sudo cp do_gist_json /usr/bin/
I już, teraz po odpaleniu bpythona i wciśnięciu klawisza F8 program będzie wiedział, że kod ma wysłać na gist, a nie na bpaste.
https://gist.github.com/tomislater/5595417
EDIT:
Skrypt korzysta z biblioteki requests, więc musisz ją mieć u siebie (sudo pip install requests).

Comments

Popular posts from this blog

GitLab - extends keyword

Managing Secrets in GitLab / Git

GitLab - trigger keyword