6.4 "info.rkt" File Format

 #lang info package: base
 #lang setup/infotab

In each collection, a special module file "info.rkt" provides general information about a collection for use by various tools. For example, an "info.rkt" file specifies how to build the documentation for a collection, and it lists plug-in tools for DrRacket or commands for raco that the collection provides.

The fields specified in an "info.rkt" file are documented in Package Metadata for packages and in Controlling raco setup with "info.rkt" Files for collections.

Although an "info.rkt" file contains a module declaration, the declaration has a highly constrained form. It must match the following grammar of info-module:

  info-module = 
(module info info-mod-path
  info-mod-path = info
  | setup/infotab
  | (lib "info/main.rkt")
  | (lib "setup/infotab.ss")
  | (lib "setup/infotab.rkt")
  | (lib "main.rkt" "info")
  | (lib "infotab.rkt" "setup")
  | (lib "infotab.ss" "setup")
  decl = (define id info-expr)
  info-expr = (quote datum)
  | (quasiquote datum)
  | (if info-expr info-expr info-expr)
  | (info-primitive info-expr ...)
  | id
  | string
  | number
  | boolean
  info-primitive = cons
  | car
  | cdr
  | list
  | list*
  | reverse
  | append
  | equal?
  | string-append
  | make-immutable-hash
  | hash
  | hash-set
  | hash-set*
  | hash-remove
  | hash-clear
  | hash-update
  | path->string
  | build-path
  | collection-path
  | system-library-subpath
  | getenv

For example, the following declaration could be the "info.rkt" library of the "games" collection. It contains definitions for three info tags, name, gracket-launcher-libraries, and gracket-launcher-names.

#lang info
(define name "Games")
(define gracket-launcher-libraries '("main.rkt"))
(define gracket-launcher-names     '("PLT Games"))

As illustrated in this example, an "info.rkt" file can use #lang notation, but only with the info (or setup/infotab) language.

Although getenv is allowed in an info module, the get-info function loads the module with an environment that prunes any variable not listed in the PLT_INFO_ALLOW_VARS environment variable, which holds a list of ;-separated variable names. By default, the set of allowed environment variables is empty.

See also get-info from setup/getinfo.

Changed in version of package base: Added if, equal?, and getenv.