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
  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.