resource/query.rkt
#lang racket/base

(require racket/contract
         racket/runtime-path
         syntax/modresolve
         racket/path
         "structs.rkt"
         racket/gui/base)


(provide/contract [query (module-path? . -> . (listof resource?))])
                  
(define-runtime-path record.rkt "record.rkt")
(define ns (make-gui-namespace))

;; query: module-path -> (listof record)
;; Given a module, collect all of its resource records
(define (query a-module-path)
  (let ([resolved-path (normalize-path (resolve-module-path a-module-path #f))])
    (parameterize ([current-namespace ns])
      (dynamic-require resolved-path (void)) ;; get the compile-time code running.
      ((dynamic-require-for-syntax record.rkt 'get-records) resolved-path))))