Výstup z Bashe do JavaScriptu

KOLEGA

Výstup z Bashe do JavaScriptu
« kdy: 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 :-[ )
« Poslední změna: 23. 06. 2013, 21:12:43 od Petr Krčmář »


ps

Re:Výstup z bash do JS (applet pro Cinnamon, zjednodušeně Gnome Shell)
« Odpověď #1 kdy: 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

KOLEGA

Re:Výstup z bash do JS (applet pro Cinnamon, zjednodušeně Gnome Shell)
« Odpověď #2 kdy: 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

KOLEGA

Re:Výstup z Bashe do JavaScriptu
« Odpověď #3 kdy: 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

pv.

Re:Výstup z Bashe do JavaScriptu
« Odpověď #4 kdy: 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.


ps

Re:Výstup z Bashe do JavaScriptu
« Odpověď #5 kdy: 26. 06. 2013, 11:06:36 »
skus global.log(out); a global.log(err);  namiesto this.set_applet_label(out)

KOLEGA

Re:Výstup z Bashe do JavaScriptu
« Odpověď #6 kdy: 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. 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 ;)