Skip to content

Commit

Permalink
Improve pruning CLI documentation (#4810)
Browse files Browse the repository at this point in the history
Closes: #4801

@andreclaro I hope this makes it more clear from the docs directly.
  • Loading branch information
bkchr authored and niklasad1 committed Jun 18, 2024
1 parent 5ccedd2 commit 0b84803
Showing 1 changed file with 28 additions and 13 deletions.
41 changes: 28 additions & 13 deletions substrate/client/cli/src/params/pruning_params.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
// along with this program. If not, see <https://www.gnu.org/licenses/>.

use crate::error;
use clap::Args;
use clap::{builder::PossibleValue, Args, ValueEnum};
use sc_service::{BlocksPruning, PruningMode};

/// Parameters to define the pruning mode
Expand All @@ -29,29 +29,24 @@ pub struct PruningParams {
/// should be pruned (ie, removed) from the database.
/// This setting can only be set on the first creation of the database. Every subsequent run
/// will load the pruning mode from the database and will error if the stored mode doesn't
/// match this CLI value. It is fine to drop this CLI flag for subsequent runs.
/// Possible values:
/// - archive: Keep the state of all blocks.
/// - 'archive-canonical' Keep only the state of finalized blocks.
/// - number Keep the state of the last number of finalized blocks.
/// match this CLI value. It is fine to drop this CLI flag for subsequent runs. The only
/// exception is that `<NUMBER>` can change between subsequent runs (increasing it will not
/// lead to restoring pruned state).
///
/// [default: 256]
#[arg(alias = "pruning", long, value_name = "PRUNING_MODE")]
#[arg(alias = "pruning", long, value_name = "PRUNING_MODE", value_enum)]
pub state_pruning: Option<DatabasePruningMode>,

/// Specify the blocks pruning mode.
///
/// This mode specifies when the block's body (including justifications)
/// should be pruned (ie, removed) from the database.
/// Possible values:
/// - 'archive' Keep all blocks.
/// - 'archive-canonical' Keep only finalized blocks.
/// - number
/// Keep the last `number` of finalized blocks.
#[arg(
alias = "keep-blocks",
long,
value_name = "PRUNING_MODE",
default_value = "archive-canonical"
default_value_t = DatabasePruningMode::ArchiveCanonical,
value_enum
)]
pub blocks_pruning: DatabasePruningMode,
}
Expand Down Expand Up @@ -83,6 +78,26 @@ pub enum DatabasePruningMode {
Custom(u32),
}

impl ValueEnum for DatabasePruningMode {
fn value_variants<'a>() -> &'a [Self] {
&[Self::Archive, Self::ArchiveCanonical, Self::Custom(0)]
}

fn to_possible_value(&self) -> Option<clap::builder::PossibleValue> {
Some(match self {
Self::Archive => PossibleValue::new("archive").help("Keep the data of all blocks."),
Self::ArchiveCanonical => PossibleValue::new("archive-canonical")
.help("Keep only the data of finalized blocks."),
Self::Custom(_) => PossibleValue::new("<NUMBER>")
.help("Keep the data of the last <NUMBER> of finalized blocks."),
})
}

fn from_str(input: &str, _: bool) -> Result<Self, String> {
<Self as std::str::FromStr>::from_str(input)
}
}

impl std::str::FromStr for DatabasePruningMode {
type Err = String;

Expand Down

0 comments on commit 0b84803

Please sign in to comment.