# Basic structure The basic structure of the LFSBuilder tool is shown in the diagram below ``` lfsbuilder/ ├── actions.py ├── builders.py ├── cli.py ├── components.py ├── config.py ├── downloader.py ├── lfsbuilder.py ├── printer.py ├── prueba.py ├── recipes/ │ ├── builders/ │ └── components/ ├── requirements.txt ├── templates/ │ ├── script.tpl │ └── setenv.tpl ├── tests/ │ ├── __init__.py │ ├── test_actions.py │ ├── test_config.py │ ├── test_downloader.py │ ├── test_tools.py │ └── test_xmlparser.py ├── tools.py └── xmlparser.py ``` The `lfsbuilder` main directory contains the source code files and the main configuration file. The source code files are listed below: * `actions.py`: custom actions for the different command line arguments. * `builders.py`: logic to build a components list. * `cli.py`: command line interface. Uses Python `argparse` native library. * `components.py`: required logic for building a component, whether it requires compilation or not. * `config.py`: main configuration file. Several of the options are available as cli options. * `downloader.py`: takes care of downloading books' XML files and source code of components. * `lfsbuilder.py`: main file of the tool. User interacts with it. * `printer.py`: defines different functions for printing messages. * `tools.py`: implements multiple functions that are used during the build process as read/write files, doing subsitutions in files, execute programs, etc. * `xmlparser.py`: logic to read books' XML files and write each constructor's commands file.