Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt Python do pobierania git tag
Pyton_000
post 31.10.2014, 17:50:26
Post #1





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Mam sobie zainstalowany powerline-shell
Dodaje on ładny pasek zamiast standardowego PS1

PS wyświetla mi aktualnego brancha z Gita.
Chciałem do tego dorobić pokazywanie ostatniego największego Taga z repo.
Ale że nie znając Pythona nie za bardzo mi to wychodzi. Wyskrobałem coś takiego:

Kod
def get_git_last_tag():
    
    currentTag = 0
    output = subprocess.Popen(['git', 'tag'],
            env={"LANG": "C", "HOME": os.getenv("HOME")}, stdout=subprocess.PIPE).communicate()[0]

    for line2 in output.split('\n')
        if float(line2) > currentTag
            currentTag = line2
                    
    return currentTag

Jednak wywala mi na tym:
Kod
for line2 in output.split('\n')

split zwraca mi wynik, ale już for nie chce działać.

W funkcji która jest wyżej zadeklarowana jest coś takiego (z tego czerpałem)
Kod
    output = subprocess.Popen(['git', 'status', '--ignore-submodules'],
            env={"LANG": "C", "HOME": os.getenv("HOME")}, stdout=subprocess.PIPE).communicate()[0]
    for line in output.split('\n'):

i to działa.
Jakiś znawca?
Go to the top of the page
+Quote Post
rafio
post 31.10.2014, 18:07:48
Post #2





Grupa: Zarejestrowani
Postów: 32
Pomógł: 4
Dołączył: 8.06.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Cytat(Pyton_000 @ 31.10.2014, 17:50:26 ) *
Kod
    for line2 in output.split('\n')
        if float(line2) > currentTag
            currentTag = line2



Ten for jest niepytoniczny. Na końcu linii z for i if brakuje ":", zaś do rozbijania tekstu na listę linii używa się dedykowanej funkcji "splitlines()", nie "split("\n")".

Tyle błędów widzę na pierwszy rzut oka.

Ten post edytował rafio 31.10.2014, 18:08:21


--------------------
I twitr, meh and code.
Go to the top of the page
+Quote Post
Pyton_000
post 31.10.2014, 18:24:15
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Hehe co się czepiasz wink.gif Ja z Pythonem nie miałem nic wspólnego smile.gif
Fakt : miałem wcześniej ale gdzieś mi się zapodziały.

Po zmianie na splitlines udało się że się nie wywala.

Ok wyczarowałem smile.gif
Kod
def get_git_last_tag():
    
    currentTag = 0
    
    p1 = subprocess.Popen(["git", "tag"], stdout=subprocess.PIPE)
    p2 = subprocess.Popen(["sort", "-V"], stdin=p1.stdout, stdout=subprocess.PIPE)
    p1.stdout.close()  # Allow p1 to receive a SIGPIPE if p2 exits.
    output,err = p2.communicate()
    
    lines = output.splitlines()
    if len(lines)>0:
        currentTag = lines[-1]
    
    return currentTag
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.06.2025 - 02:14