Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

doc: add typical dnf5 workflow #1661

Merged
merged 6 commits into from
Sep 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions doc/api/c++/cpp.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ C++
.. toctree::
libdnf5
libdnf5_advisory
libdnf5_cli
libdnf5_repo
libdnf5_rpm
7 changes: 4 additions & 3 deletions doc/api/c++/libdnf5.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ libdnf5

.. toctree::
libdnf5_base
libdnf5_goal
libdnf5_goal_elements
libdnf5_query_cmp
libdnf5_base_log_event
libdnf5_base_transaction
libdnf5_base_transaction_package
libdnf5_goal
libdnf5_goal_elements
libdnf5_query_cmp
libdnf5_vars
6 changes: 6 additions & 0 deletions doc/api/c++/libdnf5_cli.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
libdnf5::cli
============


.. toctree::
libdnf5_cli_argument_parser
7 changes: 7 additions & 0 deletions doc/api/c++/libdnf5_cli_argument_parser.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
ArgumentParser
==============

.. _api_libdnf5_cli_argument_parser-label:

.. doxygenclass:: libdnf5::cli::ArgumentParser
:members:
1 change: 1 addition & 0 deletions doc/api/c++/libdnf5_repo.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ libdnf5::repo
.. toctree::
libdnf5_repo_config_repo
libdnf5_repo_repo_query
libdnf5_repo_repo_sack
6 changes: 6 additions & 0 deletions doc/api/c++/libdnf5_repo_repo_sack.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
RepoSack
========


.. doxygenclass:: libdnf5::repo::RepoSack
:members:
6 changes: 6 additions & 0 deletions doc/api/c++/libdnf5_vars.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Vars
====


.. doxygenclass:: libdnf5::Vars
:members:
6 changes: 6 additions & 0 deletions doc/api/python/libdnf5_conf.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
libdnf5.conf
============


.. toctree::
libdnf5_conf_vars
6 changes: 6 additions & 0 deletions doc/api/python/libdnf5_conf_vars.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Vars
====


.. autoclass:: libdnf5.conf.Vars
:members:
2 changes: 2 additions & 0 deletions doc/api/python/libdnf5_repo.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,6 @@ libdnf5.repo


.. toctree::
libdnf5_repo_config_repo
libdnf5_repo_repo_query
libdnf5_repo_repo_sack
6 changes: 6 additions & 0 deletions doc/api/python/libdnf5_repo_config_repo.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
ConfigRepo
==========


.. autoclass:: libdnf5.repo.ConfigRepo
:members:
6 changes: 6 additions & 0 deletions doc/api/python/libdnf5_repo_repo_sack.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
RepoSack
========


.. autoclass:: libdnf5.repo.RepoSack
:members:
1 change: 1 addition & 0 deletions doc/api/python/python.rst
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ Python
.. toctree::
libdnf5_advisory
libdnf5_base
libdnf5_conf
libdnf5_repo
libdnf5_rpm
1 change: 1 addition & 0 deletions doc/dnf5.conf.5.rst
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,7 @@ For a given repository with an identifier in the form "<ID>-rpms", its correspon

For example, for repository "fedora", the source repository is "fedora-source" and debuginfo repository is "fedora-debuginfo". For repository "fedora-rpms", the source repository is "fedora-source-rpms" and debuginfo repository is "fedora-debug-rpms".

.. _repo_variables-label:

Repo Variables
==============
Expand Down
71 changes: 71 additions & 0 deletions doc/dnf5_workflow.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#############
DNF5 Workflow
#############


Typical DNF5 workflow consists of:

#. set up loggers
#. create base
#. add dnf5 commands
#. load dnf5 plugins: (See :ref:`DNF5 Plugins <dnf5 plugins tutorial>` for details.)
#. dnf5 plugin ``init`` hook
#. dnf5 plugin ``create_commands`` hook
#. run command specific ``set_parent_command`` step
#. run command specific ``set_argument_parser`` step
#. | run command specific ``register_subcommands`` step
| (for native dnf5 commands the last 3 steps are done as a part of 'add dnf5 commands')
#. load aliases
#. parse command line arguments
#. run command specific ``pre_configure`` step
#. load main configuration
#. enable/disable libdnf5 plugins
#. base setup:
#. load libdnf5 plugins (See :ref:`LIBDNF5 Plugins <libdnf5 plugins tutorial>` for details.)
#. libdnf5 plugin ``init`` hook
#. libdnf5 plugin ``pre_base_setup`` hook
#. lock installroot
#. load Vars and lock varsdir
#. libdnf5 plugin ``post_base_setup`` hook
#. create repo sack
#. create repos from system configuration
* perform Vars substitution on repository id and all values (See :ref:`Repo Variables <repo_variables-label>` for details.)
#. create repos from paths (such as --repofrompath arg)
* perform Vars substitution on specified id and path
#. apply repository setopts (such as --setopt=fedora.metadata_expire=0)
#. run command specific ``configure`` step
#. libdnf5 plugin ``repos_configured`` hook
#. if command requires privileges check for them
#. load repositories:
#. if required load system repository
#. if required load enabled repositories:
#. load metadata from cache if valid
#. try to reuse root's cache
#. metadata download
#. metadata gpg check
#. if required import repository gpg keys and try again
#. libdnf5 plugin ``repos_loaded`` hook
#. run command specific ``load_additional_packages`` step
#. run command specific ``run`` step
#. if the command produced a goal:
#. libdnf5 plugin ``pre_add_cmdline_packages`` hook
#. add commandline packages
#. libdnf5 plugin ``post_add_cmdline_packages`` hook
#. resolve goal (resolve dependencies)
#. run command specific ``goal_resolved`` step
#. print transaction table
#. check for user approval
#. download inbound transaction packages
#. check gpg signatures for inbound transaction packages
#. lock transaction ``libdnf5::utils::Locker``
#. create rpm transaction
#. run rpm test transaction
#. libdnf5 plugin ``pre_transaction`` hook
#. start database transaction
#. run rpm transaction
#. update system_state (See :manpage:`dnf5-system-state(7)`, :ref:`System state <systemstate_misc_ref-label>` for details.)
#. finish database transaction
#. libdnf5 plugin ``post_transaction`` hook
#. unlock transaction ``libdnf5::utils::Locker``
#. libdnf5 plugin ``finish`` hook
#. dnf5 plugin ``finish`` hook
1 change: 1 addition & 0 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Welcome to DNF5's documentation!
tutorial/bindings/index
tutorial/plugins/index
api/index
dnf5_workflow
libdnf5_plugins/index
commands/index
dnf5_plugins/index
Expand Down
Loading