Project layout

  • Directories: lower_case, avoid separators if possible

  • Files: snake_case.{cpp,hpp,py,…}

  • Project layout:

    <top directory>
    +-- bindings                # everything related to SWIG bindings goes here
    |   +-- <language>          # go, perl5, python3, ruby
    |   |   +-- libdnf5          # language specific bindings for libdnf5
    |   |   +-- libdnf5_cli      # language specific bindings for libdnf5-cli
    |   +-- libdnf5              # SWIG *.i files for libdnf5
    |   +-- libdnf5_cli          # SWIG *.i files for libdnf5-cli
    +-- doc                     # documentation
    +-- include                 # public headers
    |   +-- libdnf5              # libdnf5 public C++ headers
    |   +-- libdnf5-cli          # libdnf5-cli public C++ headers
    +-- libdnf5                  # libdnf5 code and private headers
    +-- libdnf5-cli              # libdnf5-cli code and private headers
    +-- libdnf5-plugins          # libdnf5 C/C++ plugins
    +-- dnf5daemon-client       # command line client for dnf5daemon-server
    +-- dnf5daemon-server       # DBus package manager service
    +-- dnf5                    # dnf5 command line package manager
    +-- dnf5-plugins            # dnf5 plugins
    +-- test                    # tests; similar layout to the bindings