Trait sc_cli::SubstrateCli

source ·
pub trait SubstrateCli: Sized {
Show 16 methods fn impl_name() -> String; fn impl_version() -> String; fn description() -> String; fn author() -> String; fn support_url() -> String; fn copyright_start_year() -> i32; fn load_spec(&self, id: &str) -> Result<Box<dyn ChainSpec>, String>; fn native_runtime_version(
        chain_spec: &Box<dyn ChainSpec>
    ) -> &'static RuntimeVersion; fn executable_name() -> String { ... } fn from_args() -> Self
    where
        Self: Parser + Sized
, { ... } fn from_iter<I>(iter: I) -> Self
    where
        Self: Parser + Sized,
        I: IntoIterator,
        I::Item: Into<OsString> + Clone
, { ... } fn try_from_iter<I>(iter: I) -> Result<Self>
    where
        Self: Parser + Sized,
        I: IntoIterator,
        I::Item: Into<OsString> + Clone
, { ... } fn client_id() -> String { ... } fn create_configuration<T: CliConfiguration<DVC>, DVC: DefaultConfigurationValues>(
        &self,
        command: &T,
        tokio_handle: Handle
    ) -> Result<Configuration> { ... } fn create_runner<T: CliConfiguration<DVC>, DVC: DefaultConfigurationValues>(
        &self,
        command: &T
    ) -> Result<Runner<Self>> { ... } fn create_runner_with_logger_hook<T: CliConfiguration, F>(
        &self,
        command: &T,
        logger_hook: F
    ) -> Result<Runner<Self>>
    where
        F: FnOnce(&mut LoggerBuilder, &Configuration)
, { ... }
}
Expand description

Substrate client CLI

This trait needs to be implemented on the root CLI struct of the application. It will provide the implementation name, version, executable name, description, author, support_url, copyright start year and most importantly: how to load the chain spec.

Required Methods§

Implementation name.

Implementation version.

By default this will look like this:

2.0.0-b950f731c

Where the hash is the short commit hash of the commit of in the Git repository.

Executable file description.

Executable file author.

Support URL.

Copyright starting year (x-current year)

Chain spec factory

Native runtime version.

Provided Methods§

Executable file name.

Extracts the file name from std::env::current_exe(). Resorts to the env var CARGO_PKG_NAME in case of Error.

Helper function used to parse the command line arguments. This is the equivalent of clap::Parser::parse().

To allow running the node without subcommand, it also sets a few more settings: clap::Command::propagate_version, clap::Command::args_conflicts_with_subcommands, clap::Command::subcommand_negates_reqs.

Creates Self from the command line arguments. Print the error message and quit the program in case of failure.

Helper function used to parse the command line arguments. This is the equivalent of clap::Parser::parse_from.

To allow running the node without subcommand, it also sets a few more settings: clap::Command::propagate_version, clap::Command::args_conflicts_with_subcommands, clap::Command::subcommand_negates_reqs.

Creates Self from any iterator over arguments. Print the error message and quit the program in case of failure.

Helper function used to parse the command line arguments. This is the equivalent of clap::Parser::try_parse_from

To allow running the node without subcommand, it also sets a few more settings: clap::Command::propagate_version, clap::Command::args_conflicts_with_subcommands, clap::Command::subcommand_negates_reqs.

Creates Self from any iterator over arguments. Print the error message and quit the program in case of failure.

NOTE: This method WILL NOT exit when --help or --version (or short versions) are used. It will return a clap::Error, where the clap::Error::kind is a clap::ErrorKind::DisplayHelp or clap::ErrorKind::DisplayVersion respectively. You must call clap::Error::exit or perform a std::process::exit.

Returns the client ID: {impl_name}/v{impl_version}

Only create a Configuration for the command provided in argument

Create a runner for the command provided in argument. This will create a Configuration and a tokio runtime

Create a runner for the command provided in argument. The logger_hook can be used to setup a custom profiler or update the logger configuration before it is initialized.

Example:

use sc_tracing::{SpanDatum, TraceEvent};
struct TestProfiler;

impl sc_tracing::TraceHandler for TestProfiler {
 	fn handle_span(&self, sd: &SpanDatum) {}
		fn handle_event(&self, _event: &TraceEvent) {}
};

fn logger_hook() -> impl FnOnce(&mut sc_cli::LoggerBuilder, &sc_service::Configuration) -> () {
	|logger_builder, config| {
			logger_builder.with_custom_profiling(Box::new(TestProfiler{}));
	}
}

Implementors§