Command-line interface
The ZeroInstall.Commands namespace provides a command-line interface for Zero Install. This both implements an actual command-line executable and provides a library for building other clients.
Processing arguments
ProgramUtils.Init() should be called by all clients right after startup to initialize process-wide state.
Afterwards ProgramUtils.Run() can be called with the command-line arguments to be parsed along with an ICommandHandler. ICommandHandler
extends the ITaskHandler interface with various UI interactions that commands can use to display intermediate results, ask for user input, etc..
ProgramUtils.Run()
parses the provided command-line arguments and selects the appropriate CliCommand to handle them.
Inheritance hierarchy
Each command (e.g., 0install run
) is represented by a class derived from CliCommand (e.g., Run).
CliCommand
derives from ScopedOperation. This provides a more basic starting point, for any operation that requires scoped dependency resolution. It provides this by itself deriving from ServiceProvider.