Skip to content
  • Eric Timmons's avatar
    Record the source of configuration directives in the source-registry config · 61c9e3dd
    Eric Timmons authored
    The source registry configuration is described by a bunch of forms in a DSL
    that allows for inheritance. Before constructing the actual source
    registry (mapping from primary system names to pathnames), the configuration
    DSL is expanded into a list of directories to search and flattened.
    
    Previously, the flattening process left no indication of *why* a particular
    directory was being searched. We now record that information as a list of
    locations, ordered from most specific to least specific. This list can contain
    any of the following:
    
    + A symbol: The directive was generated by calling the symbol as a function
    with zero arguments.
    
    + A directory pathname: The directive came from one of the files located in
    this directory ending with .conf.
    
    + A file pathname: The directive came from the named file.
    
    + NIL: The directive came from a literal NIL (simplifies to just an inherit
    directive).
    
    + :INHERIT: The directive resulted from inheriting configuration.
    
    So a source list such as:
    (#P"/home/USER/.config/common-lisp/source-registry.conf.d/"
     USER-SOURCE-REGISTRY-DIRECTORY :INHERIT
     USER-SOURCE-REGISTRY :INHERIT
     ENVIRONMENT-SOURCE-REGISTRY :INHERIT
     NIL :INHERIT
     WRAPPING-SOURCE-REGISTRY)
    
    Should be interpretted as: The specified search directory is being searched
    because it was named in one of the files
    /home/USER/.config/common-lisp/source-registry.conf.d/*.conf, which was
    searched as part of the user's source registry directory, which was included
    because the user's source registry conf file was empty or included a
    :inherit-configuration directive, which was included because CL_SOURCE_REGISTRY
    was parsed to something that contained a :inherit-configuration directive,
    which was included because the user did not manually specify a configuration to
    use, which was then included by the wrappign source registry which can never be
    overridden.
    61c9e3dd