44 lines
1.1 KiB
Hy
44 lines
1.1 KiB
Hy
|
(import sys) ; for arguments
|
||
|
(import-from sh apt-cache) ; for apt-cache
|
||
|
|
||
|
|
||
|
(def package "fluxbox")
|
||
|
(if (> (len sys.argv) 1)
|
||
|
(def package (index sys.argv 1)))
|
||
|
|
||
|
|
||
|
(defn parse-rfc-822 [inpu]
|
||
|
"Split an RFC 822 payload up. Doesn't handle comments or multi-entries"
|
||
|
(do (def keys {})
|
||
|
(def key None)
|
||
|
(def val None)
|
||
|
(for [x (.splitlines inpu)]
|
||
|
(if (>= (.find x ":") 0)
|
||
|
(do (def kv (.split x ":" 1))
|
||
|
(def key (.strip (index kv 0)))
|
||
|
(set-index keys key (.strip (index kv 1))))
|
||
|
(set-index keys key (+ (index keys key) "\n" (.strip x)))))
|
||
|
(dict keys)))
|
||
|
|
||
|
|
||
|
(defn get-info [package]
|
||
|
"Get info on a Debian package"
|
||
|
(parse-rfc-822 (.show apt-cache package)))
|
||
|
|
||
|
|
||
|
(def data (get-info package))
|
||
|
|
||
|
|
||
|
(defn get-line [data key]
|
||
|
"Get the first line if a multi-line key"
|
||
|
(index (.split (index data key) "\n") 0))
|
||
|
|
||
|
|
||
|
(if (in "Description" data)
|
||
|
(def descr (get-line data "Description"))
|
||
|
(def descr (get-line data "Description-en")))
|
||
|
|
||
|
|
||
|
(print "The maintainer for" package "is" (index data "Maintainer"))
|
||
|
(print package "is a(n)" descr)
|