referrerpolicy=no-referrer-when-downgrade
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
// Copyright (C) Parity Technologies (UK) Ltd.
// This file is part of Polkadot.

// Polkadot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// Polkadot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with Polkadot.  If not, see <http://www.gnu.org/licenses/>.

//! Polkadot CLI library.

pub use polkadot_node_primitives::NODE_VERSION;

use clap::Parser;
use std::path::PathBuf;

#[allow(missing_docs)]
#[derive(Debug, Parser)]
pub enum Subcommand {
	/// Build a chain specification.
	BuildSpec(sc_cli::BuildSpecCmd),

	/// Validate blocks.
	CheckBlock(sc_cli::CheckBlockCmd),

	/// Export blocks.
	ExportBlocks(sc_cli::ExportBlocksCmd),

	/// Export the state of a given block into a chain spec.
	ExportState(sc_cli::ExportStateCmd),

	/// Import blocks.
	ImportBlocks(sc_cli::ImportBlocksCmd),

	/// Remove the whole chain.
	PurgeChain(sc_cli::PurgeChainCmd),

	/// Revert the chain to a previous state.
	Revert(sc_cli::RevertCmd),

	/// Sub-commands concerned with benchmarking.
	/// The pallet benchmarking moved to the `pallet` sub-command.
	#[command(subcommand)]
	Benchmark(frame_benchmarking_cli::BenchmarkCmd),

	/// Key management CLI utilities
	#[command(subcommand)]
	Key(sc_cli::KeySubcommand),

	/// Db meta columns information.
	ChainInfo(sc_cli::ChainInfoCmd),
}

#[allow(missing_docs)]
#[derive(Debug, Parser)]
#[group(skip)]
pub struct RunCmd {
	#[clap(flatten)]
	pub base: sc_cli::RunCmd,

	/// Force using Kusama native runtime.
	#[arg(long = "force-kusama")]
	pub force_kusama: bool,

	/// Force using Westend native runtime.
	#[arg(long = "force-westend")]
	pub force_westend: bool,

	/// Force using Rococo native runtime.
	#[arg(long = "force-rococo")]
	pub force_rococo: bool,

	/// Disable the BEEFY gadget.
	///
	/// Currently enabled by default.
	#[arg(long)]
	pub no_beefy: bool,

	/// Allows a validator to run insecurely outside of Secure Validator Mode. Security features
	/// are still enabled on a best-effort basis, but missing features are no longer required. For
	/// more information see <https://github.com/w3f/polkadot-wiki/issues/4881>.
	#[arg(long = "insecure-validator-i-know-what-i-do", requires = "validator")]
	pub insecure_validator: bool,

	/// Enable the block authoring backoff that is triggered when finality is lagging.
	#[arg(long)]
	pub force_authoring_backoff: bool,

	/// Add the destination address to the `pyroscope` agent.
	///
	/// Must be valid socket address, of format `IP:Port` (commonly `127.0.0.1:4040`).
	#[arg(long)]
	pub pyroscope_server: Option<String>,

	/// Disable automatic hardware benchmarks.
	///
	/// By default these benchmarks are automatically ran at startup and measure
	/// the CPU speed, the memory bandwidth and the disk speed.
	///
	/// The results are then printed out in the logs, and also sent as part of
	/// telemetry, if telemetry is enabled.
	#[arg(long)]
	pub no_hardware_benchmarks: bool,

	/// Overseer message capacity override.
	///
	/// **Dangerous!** Do not touch unless explicitly advised to.
	#[arg(long)]
	pub overseer_channel_capacity_override: Option<usize>,

	/// Path to the directory where auxiliary worker binaries reside.
	///
	/// If not specified, the main binary's directory is searched first, then
	/// `/usr/lib/polkadot` is searched.
	///
	/// TESTING ONLY: if the path points to an executable rather then directory,
	/// that executable is used both as preparation and execution worker.
	#[arg(long, value_name = "PATH")]
	pub workers_path: Option<PathBuf>,

	/// Override the maximum number of pvf execute workers.
	///
	///  **Dangerous!** Do not touch unless explicitly advised to.
	#[arg(long)]
	pub execute_workers_max_num: Option<usize>,
	/// Override the maximum number of pvf workers that can be spawned in the pvf prepare
	/// pool for tasks with the priority below critical.
	///
	///  **Dangerous!** Do not touch unless explicitly advised to.

	#[arg(long)]
	pub prepare_workers_soft_max_num: Option<usize>,
	/// Override the absolute number of pvf workers that can be spawned in the pvf prepare pool.
	///
	///  **Dangerous!** Do not touch unless explicitly advised to.
	#[arg(long)]
	pub prepare_workers_hard_max_num: Option<usize>,
	/// TESTING ONLY: disable the version check between nodes and workers.
	#[arg(long, hide = true)]
	pub disable_worker_version_check: bool,

	/// Enable approval-voting message processing in parallel.
	///
	///**Dangerous!** This is an experimental feature and should not be used in production, unless
	/// explicitly advised to.
	#[arg(long)]
	pub enable_approval_voting_parallel: bool,
}

#[allow(missing_docs)]
#[derive(Debug, Parser)]
pub struct Cli {
	#[command(subcommand)]
	pub subcommand: Option<Subcommand>,

	#[clap(flatten)]
	pub run: RunCmd,

	#[clap(flatten)]
	pub storage_monitor: sc_storage_monitor::StorageMonitorParams,
}