whalesong/resource/query.rkt

21 lines
680 B
Racket

#lang racket/base
(require racket/contract
racket/runtime-path
syntax/modresolve
"structs.rkt")
(provide/contract [query (module-path? . -> . (listof resource?))])
(define-runtime-path record.rkt "record.rkt")
(define ns (make-base-empty-namespace))
;; query: module-path -> (listof record)
;; Given a module, collect all of its resource records
(define (query a-module-path)
(let ([resolved-path (resolve-module-path a-module-path #f)])
(parameterize ([current-namespace ns])
(dynamic-require a-module-path (void)) ;; get the compile-time code running.
((dynamic-require-for-syntax record.rkt 'get-records)))))