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
    |   |   +-- libdnf          # language specific bindings for libdnf
    |   |   +-- libdnf_cli      # language specific bindings for libdnf-cli
    |   +-- libdnf              # SWIG *.i files for libdnf
    |   +-- libdnf_cli          # SWIG *.i files for libdnf-cli
    +-- doc                     # documentation
    +-- include                 # public headers
    |   +-- libdnf              # libdnf public C++ headers
    |   +-- libdnf-cli          # libdnf-cli public C++ headers
    +-- libdnf                  # libdnf code and private headers
    +-- libdnf-cli              # libdnf-cli code and private headers
    +-- libdnf-plugins          # libdnf C/C++ plugins
    +-- dnf5daemon-client       # command line client for dnf5daemon-server
    +-- dnf5daemon-server       # DBus package manager service
    +-- dnf5                # dnf5 command line package manager
    +-- test                    # tests; similar layout to the bindings