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.

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
  decl
  ...)
     
  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)
  | (info-primitive info-expr ...)
  | id
  | string
  | number
  | boolean
     
  info-primitive = cons
  | car
  | cdr
  | list
  | list*
  | reverse
  | append
  | 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

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.

See also get-info from setup/getinfo.