From 34cf6d162ec057c646a16dabb6d6e8c1ac4ac9c8 Mon Sep 17 00:00:00 2001 From: MarkSackerberg <93528482+MarkSackerberg@users.noreply.github.com> Date: Mon, 16 Sep 2024 20:47:04 +0200 Subject: [PATCH] initial --- src/deploy/process.rs | 21 +++++++++++++++++---- src/reveal/process.rs | 28 +++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/deploy/process.rs b/src/deploy/process.rs index a336bf53..955ae0fa 100644 --- a/src/deploy/process.rs +++ b/src/deploy/process.rs @@ -92,18 +92,31 @@ pub async fn process_deploy(args: DeployArgs) -> Result<()> { let cache_items_sans_collection = (cache.items.len() - collection_in_cache as usize) as u64; - if num_items != cache_items_sans_collection { + if !hidden && num_items != cache_items_sans_collection { return Err(anyhow!( "Number of items ({}) do not match cache items ({}). Item number in the config should only include asset files, not the collection file.", num_items, cache_items_sans_collection )); - } else { - check_symbol(&config_data.symbol)?; - check_seller_fee_basis_points(config_data.seller_fee_basis_points)?; + } else if hidden && num_items != cache_items_sans_collection { + println!( + "{}", + style(format!( + "Warning: Number of items ({}) do not match cache items ({}). + {} items are missing. Revealing will not work correctly.", + num_items, + cache_items_sans_collection, + num_items.saturating_sub(cache_items_sans_collection) + )) + .yellow() + .bold() + ); } + check_symbol(&config_data.symbol)?; + check_seller_fee_basis_points(config_data.seller_fee_basis_points)?; + let total_steps = 2 + if candy_machine_address.is_empty() { collection_in_cache as u8 } else { diff --git a/src/reveal/process.rs b/src/reveal/process.rs index c7f25cb8..fc5ddbac 100644 --- a/src/reveal/process.rs +++ b/src/reveal/process.rs @@ -71,13 +71,39 @@ pub async fn process_reveal(args: RevealArgs) -> Result<()> { let config = get_config_data(&args.config)?; // If it's not a Hidden Settings mint, return an error. - let hidden_settings = if let Some(settings) = config.hidden_settings { + let hidden_settings = if let Some(ref settings) = config.hidden_settings { settings } else { return Err(anyhow!("Candy machine is not a Hidden Settings mint.")); }; let cache = load_cache(&args.cache, false)?; + + // Check if the cache file is incomplete + let num_items = config.number; + let hidden = config.hidden_settings.is_some(); + let collection_in_cache = cache.items.get("-1").is_some(); + let cache_items_sans_collection = (cache.items.len() - collection_in_cache as usize) as u64; + + if hidden && num_items != cache_items_sans_collection { + let warning = format!( + "+---------------------------------+\n\ + {} {} ITEMS MISSING IN CACHE FILE! \n\ + +---------------------------------+", + WARNING_EMOJI, + num_items.saturating_sub(cache_items_sans_collection) + ); + println!( + "\n{}\n{}\n", + style(warning).bold().yellow(), + style( + " Revealing might fail. \ + It is recommended to run 'sugar upload' again.", + ) + .italic() + .yellow() + ) + } let sugar_config = sugar_setup(args.keypair, args.rpc_url.clone())?; let anchor_client = setup_client(&sugar_config)?; let program = anchor_client.program(CANDY_MACHINE_ID);