Add first-available-block command
This commit is contained in:
		@@ -177,6 +177,7 @@ pub enum CliCommand {
 | 
			
		||||
        program_id: Pubkey,
 | 
			
		||||
    },
 | 
			
		||||
    Fees,
 | 
			
		||||
    FirstAvailableBlock,
 | 
			
		||||
    GetBlockTime {
 | 
			
		||||
        slot: Option<Slot>,
 | 
			
		||||
    },
 | 
			
		||||
@@ -619,6 +620,10 @@ pub fn parse_command(
 | 
			
		||||
            command: CliCommand::Fees,
 | 
			
		||||
            signers: vec![],
 | 
			
		||||
        }),
 | 
			
		||||
        ("first-available-block", Some(_matches)) => Ok(CliCommandInfo {
 | 
			
		||||
            command: CliCommand::FirstAvailableBlock,
 | 
			
		||||
            signers: vec![],
 | 
			
		||||
        }),
 | 
			
		||||
        ("block-time", Some(matches)) => parse_get_block_time(matches),
 | 
			
		||||
        ("epoch-info", Some(matches)) => parse_get_epoch_info(matches),
 | 
			
		||||
        ("genesis-hash", Some(_matches)) => Ok(CliCommandInfo {
 | 
			
		||||
@@ -1487,6 +1492,7 @@ pub fn process_command(config: &CliConfig) -> ProcessResult {
 | 
			
		||||
            program_id,
 | 
			
		||||
        } => process_create_address_with_seed(config, from_pubkey.as_ref(), &seed, &program_id),
 | 
			
		||||
        CliCommand::Fees => process_fees(&rpc_client, config),
 | 
			
		||||
        CliCommand::FirstAvailableBlock => process_first_available_block(&rpc_client),
 | 
			
		||||
        CliCommand::GetBlockTime { slot } => process_get_block_time(&rpc_client, config, *slot),
 | 
			
		||||
        CliCommand::GetEpoch => process_get_epoch(&rpc_client, config),
 | 
			
		||||
        CliCommand::GetEpochInfo => process_get_epoch_info(&rpc_client, config),
 | 
			
		||||
 
 | 
			
		||||
@@ -91,6 +91,10 @@ impl ClusterQuerySubCommands for App<'_, '_> {
 | 
			
		||||
                .about("Get the version of the cluster entrypoint"),
 | 
			
		||||
        )
 | 
			
		||||
        .subcommand(SubCommand::with_name("fees").about("Display current cluster fees"))
 | 
			
		||||
        .subcommand(
 | 
			
		||||
            SubCommand::with_name("first-available-block")
 | 
			
		||||
                .about("Get the first available block in the storage"),
 | 
			
		||||
        )
 | 
			
		||||
        .subcommand(SubCommand::with_name("block-time")
 | 
			
		||||
            .about("Get estimated production time of a block")
 | 
			
		||||
            .alias("get-block-time")
 | 
			
		||||
@@ -614,6 +618,11 @@ pub fn process_fees(rpc_client: &RpcClient, config: &CliConfig) -> ProcessResult
 | 
			
		||||
    Ok(config.output_format.formatted_string(&fees))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn process_first_available_block(rpc_client: &RpcClient) -> ProcessResult {
 | 
			
		||||
    let first_available_block = rpc_client.get_first_available_block()?;
 | 
			
		||||
    Ok(format!("{}", first_available_block))
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
pub fn process_leader_schedule(rpc_client: &RpcClient) -> ProcessResult {
 | 
			
		||||
    let epoch_info = rpc_client.get_epoch_info()?;
 | 
			
		||||
    let first_slot_in_epoch = epoch_info.absolute_slot - epoch_info.slot_index;
 | 
			
		||||
 
 | 
			
		||||
@@ -709,6 +709,10 @@ impl RpcClient {
 | 
			
		||||
        .into())
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn get_first_available_block(&self) -> ClientResult<Slot> {
 | 
			
		||||
        self.send(RpcRequest::GetFirstAvailableBlock, Value::Null)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    pub fn get_genesis_hash(&self) -> ClientResult<Hash> {
 | 
			
		||||
        let hash_str: String = self.send(RpcRequest::GetGenesisHash, Value::Null)?;
 | 
			
		||||
        let hash = hash_str.parse().map_err(|_| {
 | 
			
		||||
 
 | 
			
		||||
@@ -21,6 +21,7 @@ pub enum RpcRequest {
 | 
			
		||||
    GetFeeCalculatorForBlockhash,
 | 
			
		||||
    GetFeeRateGovernor,
 | 
			
		||||
    GetFees,
 | 
			
		||||
    GetFirstAvailableBlock,
 | 
			
		||||
    GetGenesisHash,
 | 
			
		||||
    GetIdentity,
 | 
			
		||||
    GetInflationGovernor,
 | 
			
		||||
@@ -74,6 +75,7 @@ impl fmt::Display for RpcRequest {
 | 
			
		||||
            RpcRequest::GetFeeCalculatorForBlockhash => "getFeeCalculatorForBlockhash",
 | 
			
		||||
            RpcRequest::GetFeeRateGovernor => "getFeeRateGovernor",
 | 
			
		||||
            RpcRequest::GetFees => "getFees",
 | 
			
		||||
            RpcRequest::GetFirstAvailableBlock => "getFirstAvailableBlock",
 | 
			
		||||
            RpcRequest::GetGenesisHash => "getGenesisHash",
 | 
			
		||||
            RpcRequest::GetIdentity => "getIdentity",
 | 
			
		||||
            RpcRequest::GetInflationGovernor => "getInflationGovernor",
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user