Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: KOLEGA 22. 06. 2013, 23:00:43

Název: Výstup z Bashe do JavaScriptu
Přispěvatel: KOLEGA 22. 06. 2013, 23:00:43
Zdravíčko, tak jsem se jednoho krásného dne rozhodl, že bych chtěl udělat applet, jenže mi chybí potřebná znalost, kterou nejsem schopen vygooglit a to, jak získat výstup z terminálu a předat ho javascriptu, který se stará o applet, jestli je to tedy vůbec možné? (JS dělám strašně nerad, tudíž ho neumím :-[ )
Název: Re:Výstup z bash do JS (applet pro Cinnamon, zjednodušeně Gnome Shell)
Přispěvatel: ps 23. 06. 2013, 02:26:00
Ja zas netuším čo je cinamon, nie to ešte plugin pre neho :)

No predpokladám že najprv potrebuješ nejaký bash script, ktorý vypisuje najlepšie JSON aby si to nemusel ručne parsovať. Napr.:

Kód: [Vybrat]
#!/bin/bash
echo '
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}'

Potom potrebuješ napísať samotný plugin. Pekný jednoduchý príklad som našiel tu:
http://cinnamon.linuxmint.com/?p=156
Akurát budeš potrebovať zavolať ten tvoj skript synchrónne lebo potrebuješ vidieť výsledok, čiže namiesto
Kód: [Vybrat]
GLib.spawn_command_line_async('<skript.sh>');použiješ
Kód: [Vybrat]
var scriptOutput;
GLib.spawn_command_line_sync ('<skript.sh>', scriptOutput);
var myObject = JSON.parse(scriptOutput);
potom k objektu pristupuješ normálne ako k iným:
Kód: [Vybrat]
myObject.employees[0].firstName
Fakt neviem čo je cinamon a všetko horeuvedené som vyprodukoval na základe toho čo som vygoogllil. Ak ti to bude fungovať tak mi môžeš kúpiť pivo ;), alebo sa podeľ o svoj projekt s komunitou
Název: Re:Výstup z bash do JS (applet pro Cinnamon, zjednodušeně Gnome Shell)
Přispěvatel: KOLEGA 23. 06. 2013, 09:33:16
Díky moc, mrknu se na to :D Ten tutoriál už jsem prošel tisíckrát, chtěl jsem nějakou krásnou cestu alá python, ale koukám, že JS mě ještě potrápí :-) "Projekt" (vtipné) určitě uvolním a to pivo? Jako proč ne :D
Název: Re:Výstup z Bashe do JavaScriptu
Přispěvatel: KOLEGA 25. 06. 2013, 12:22:26
Nooo, takže dva dny již laboruji a pořád nic, dokonce jsem otravoval i na developerském IRC :D, ale skoro nikdo tam nebyl...
Je mi hlášena chyba - error t=2013-06-25T12:06:06Z Expected type utf8 for Argument 'text' but got type 'object' 0x7f352886f480
Postupoval jsem podle návodu na GitHubu - https://gist.github.com/buzztaiki/1487781

Zdrojový kód je tady je to asi dvacet řádků, takže nic hrozného, ale nějak na to nemohu přijít :/

http://pastebin.com/NwAeC9Xh
Název: Re:Výstup z Bashe do JavaScriptu
Přispěvatel: pv. 25. 06. 2013, 12:55:11
nemáš tam to JSON.parse? zkusil bych to bez něj - možná to vrací rovnout objekt a ne json ve stringu.
Název: Re:Výstup z Bashe do JavaScriptu
Přispěvatel: ps 26. 06. 2013, 11:06:36
skus global.log(out); a global.log(err);  namiesto this.set_applet_label(out)
Název: Re:Výstup z Bashe do JavaScriptu
Přispěvatel: KOLEGA 26. 06. 2013, 21:50:27
Tak pánové, všechno jsem vyzkoušel (i s tím JSON.parse) a problém vyřešilo output = out.toString() :D
Ještě jsem pořádně nepřišel na to, co mi tedy jako out vylezlo za objekt, ale vyšlo to, celý kód je zde
http://kolega.wz.cz/development (http://kolega.wz.cz/development). Není to žádná sláva, nic to neumí (ještě nemám zmáknuté například refresh každý den), ale základní funkčnost to splňuje. Děkuji za pomoc, navštívíteli někdy MB, máte u mne pivo ;)