Expand description
§cnf-lib - Library code for cnf
The code contained here serves three main purposes.
§Handling environments
An “environment” is anything that offers one or more “providers” (see below). All supported
environments are listed in the Environment enum.
It is often desirable to temporarily escape one environment for the sake of executing a single
command. There are usually controlled mechanisms to perform this task. This crate aims to
transparently manage the command translation necessary in order to, for example, execute htop
inside a Toolbx container while working on the host. All of this is implemented in the
Environment type and IsEnvironment trait.
Take a look at the documentation and code in environment if you want to know more about this
command translation.
§Handling providers
A “provider” is anything that offers executable software. This includes for example the system
$PATH (where executables are usually located and can be executed immediately), but extends to
regular package managers such as dnf, usually requiring installation of commands before they
can be executed. All supported providers are listed in the Provider enum.
Providers can be searched for a command and return a list of zero or more possible candidates
matching the search term. All of this is implemented in the Provider type and IsProvider
trait.
Take a look at the documentation and code in provider if you want to know more about this
and for detailed instructions about implementing new providers.
§Handling command invocations
Translating regular command lines between environments has a few pitfalls with respect to e.g.
privilege escalation and correctly reading stdout/stderr. The CommandLine type provides the
necessary abstractions to allow seamless command execution without having to wonder how
privilege escalation in the target environment works, for example.
Re-exports§
pub use environment as env;pub use provider as prov;pub use env::Environment;pub use env::Error as EnvironmentError;pub use env::ExecutionError;pub use env::IsEnvironment;pub use prov::Actions;pub use prov::Candidate;pub use prov::Error as ProviderError;pub use prov::IsProvider;pub use prov::Provider;pub use prov::Query;pub use prov::search_in;pub use util::CommandLine;
Modules§
- environment
- Environment handlers
- error
- CNF Error Types
- prelude
- Public prelude.
- provider
- Command providers
- test
- Shared utilities for testing
- util
- Misc utilities for different purposes
Macros§
- application
- Assert on
crate::provider::Error::ApplicationError. - cmd
- Conveniently create
CommandLines. - default_
tests - Insert a bunch of default tests.
- execution
- Assert on
crate::provider::Error::Execution. - is_err
- Assert that a query turned up an error.
- not_
found - Assert on
crate::provider::Error::NotFound. - quick_
test - Convenient generation of query results.
- requirements
- Assert on
crate::provider::Error::Requirements.