(import 
  (scheme base)
  (scheme file)
  (scheme read)
  (scheme write)
  (scheme cyclone util)
)

;; TODO: this was not working in icyc - wtf?
;(let ((tmp (call-with-input-file "../scheme/base.sld" 
;                                (lambda (fp) 
;                                  (read-all fp)))))
;  (write
;   (cdar 
;    (filter 
;      (lambda (l) 
;        (tagged-list? 'export l)) 
;      (car tmp)))))

(define (read-exports filename)
  (let* ((tmp (call-with-input-file filename
                                  (lambda (fp) 
                                    (read-all fp))))
         (exports (cdar 
                    (filter 
                      (lambda (l) 
                        (tagged-list? 'export l)) 
                      (car tmp)))))
    (write
    (map
      (lambda (e)
        (system 
          (string-append
          ;; TODO: not good enough, what about define-syntax?
            "grep -n \"define[ ]*[ \\(]"
            (symbol->string e)
            " \" " filename)))
      exports)))
)
(read-exports "../scheme/file.sld")