Skip to content

ADR 6: Direct processors configuration

Context

There need to be a way to configure folders and top-level pages used by the course. Each course may need slightly different structure of folders and may even use different formats for writing content of pages. Some curses may even need some specific processors to fulfill their specific needs (for example, generating JavaDoc).

At the same time, most of the courses would probably use similar structure. It should not be required to repeat the common configuration in every course, because it makes course configuration unnecessary complex and error-prone. For most of the courses, configuration should be absolutely minimal: name of the course and its deployment ID.

Decision

We decided to make configuration of folder processors part of the configuration file. There are tho configuration options FOLDERS and ROOT_PROCESSOR that define processors for all folders and separately for the root of the course. Order of the folder processors also define their order in the course menu.

Standard values for these options should, however, be suitable for most of the courses. This is achieved by including all common folders and other processing options into the configuration and then simply skipping files that do not exist in the course directory. So, for example, default configuration would include folders for lectures, labs and assignments, but if a course does not have lectures and assignments directories, they would be ignored.

Status

Superseded by ADR 12: Declarative configuration.

Consequences

The configuration is quite low-level and dependent on the internal architecture of the processing pipeline. In the future some more declarative configuration should be considered. The current configuration format could be leaved for some more complex situations.