hy/eg/debian/parse-rfc822.hy

41 lines
1.1 KiB
Hy
Raw Normal View History

2013-03-26 02:37:55 +01:00
#!/usr/bin/env hy
; Copyright (c) Paul R. Tagliamonte <paultag@debian.org>, 2013 under the terms
; of the Expat license, a copy of which you have should have recieved with
; the source.
(import sys)
(defn parse-rfc822-file [path]
"Parse an RFC822 file"
(with-as (open path "r") fd
(parse-rfc822-stream fd)))
(defn parse-rfc822-stream [fd]
"Parse an RFC822 stream"
(def bits {})
(def key null)
(for [line fd]
(if (in ":" line)
(do (def line (.split line ":" 1))
(def key (.strip (get line 0)))
(def val (.strip (get line 1)))
(assoc bits key val))
(do
(if (= (.strip line) ".")
(assoc bits key (+ (get bits key) "\n"))
(assoc bits key (+ (get bits key) "\n" (.strip line)))))))
bits)
(def block (parse-rfc822-file (get sys.argv 1)))
(def source (get block "Source"))
(print source "is a(n)" (get block "Description"))
(import-from sh apt-cache)
(def archive-block (parse-rfc822-stream (.show apt-cache source)))
(print "The archive has version" (get archive-block "Version") "of" source)