Skip to main content

Crate cnf_lib

Crate cnf_lib 

Source
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.