usr bin sbcl --script bin geo-send FIXME не спрашивать JID отправителя

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/sbcl --script
; ~/.bin/geo-send
; FIXME: не спрашивать JID отправителя
; TODO: Greasemonkey-скрипт, добавляющий к интерфейсу Google Maps кнопочку «ололо фжуйку»,
; по нажатию которой будет вызываться(?!) сей скрипт
(if
(not (= (length *posix-argv*) 4))
(format t "Usage: geo-send jid lat lon~%")
(with-open-file
; FIXME: Отступы покрасивее
; Да, здесь можно было сделать (concatenate), но так короче
(f (format nil "~a/~a"
(user-homedir-pathname)
".mcabber/mcabber.fifo")
:direction :output
:if-exists :append
:if-does-not-exist nil)
(if f
; FIXME: можно ведь попроще составить форматирующую строку, да? *_*
; TODO: фейс-контроль списка аргументов.
; Скажем решительное «нет» 'geo-send пыщь-пыщь стопицот /dev/null'!
(let ((args (cdr *posix-argv*)))
(format f
(concatenate 'string
"/rawxml send "
"<message from='~a' to='juick@juick.com'>"
"<event xmlns='http://jabber.org/protocol/pubsub#event'>"
"<items node='http://jabber.org/protocol/geoloc'>"
"<item id='00000000-0000-0000-0000-000000000000'>"
"<geoloc xmlns='http://jabber.org/protocol/geoloc' xml:lang='en'>"
"~{<~#[~;lon~;lat~]>~a</~#[lon~;lat~]>~}"
"</geoloc></item></items></event></message>")
(car args)
(cdr args)))
(format t "mcabber isn't running or FIFO support is disabled.~%"))))