8.6 API for Reading "info.rkt" Files
The
setup/getinfo library
provides functions for accessing fields in
"info.rkt"
files.
Accepts a list of strings naming a collection or sub-collection,
and calls
get-info/full with the full path corresponding to the
named collection and the
namespace argument.
Accepts a path to a directory. If it finds either a well-formed
an "info.rkt" file or an "info.rkt" file (with
preference for the "info.rkt" file),
it returns an info procedure that accepts either one
or two arguments. The first argument to the info procedure is
always a symbolic name, and the result is the value of the name in
the "info.rkt" file, if the name is defined. The optional
second argument, thunk, is a procedure that takes no
arguments to be called when the name is not defined; the result of
the info procedure is the result of the thunk in that
case. If the name is not defined and no thunk is
provided, then an exception is raised.
The get-info/full function returns #f if there is
no "info.rkt" (or "info.ss") file in the directory. If there is a
"info.rkt" (or "info.ss") file that has the wrong shape (i.e., not a module
using setup/infotab or (lib "infotab.rkt" "setup")),
or if the "info.rkt" file fails to load, then an exception
is raised. If the "info.rkt" file loaded, get-info/full
returns the get-info file. If the "info.rkt" file does not exist,
then get-info/full does
the same checks for the "info.rkt" file, either raising an exception
or returning the get-info function from the "info.rkt" file.
The "info.rkt" (or "info.ss") module is loaded
into namespace if it is not #f, or a private,
weakly-held namespace otherwise.
Returns a list of paths identifying installed directories (i.e.,
collections and installed
PLaneT packages) whose
"info.rkt" file defines one or more of the given
symbols. The result is based on a cache that is computed by
raco setup.
Note that the cache may be out of date by the time you call
get-info/full, so do not assume that it won’t return
#f.
The result is in a canonical order (sorted lexicographically by
directory name), and the paths it returns are suitable for
providing to get-info/full.
If mode is specified, it must be either
'preferred (the default), 'all-available, or no-planet. If
mode is 'all-available, find-relevant-collections
returns all installed directories whose info files contain the
specified symbols—for instance, all installed PLaneT packages
will be searched if 'all-available is specified. If mode
is 'preferred, then only a subset of “preferred”
packages will be searched: only the directory
containing the most recent version of any PLaneT package will be
returned. If mode is 'no-planet, then only PLaneT
packages are not included in the search.
No matter what mode is specified, if more than one
collection has the same name, find-relevant-directories
will only search the one that occurs first in a search that through
the directories of current-library-collection-paths.
Collection links from the installation-wide collection links file are cached with the
installation’s main "collects" directory, and links from
the user-specific collection links file
are cached with the user-specific directory (build-path (find-system-path 'addon-dir) (version) "collects").
A struct that records information about a collection or a PLaneT package that has been installed.
Collections will have the major version being 1 and the minor version being 0.
The spec field is a quoted module spec; the path field is where the info.rkt
file for this collection or PLaneT package exists on the filesystem the syms field holds the
identifiers defined in that file.