From 6fc41d0e937f34da97588a6e687733454c202de4 Mon Sep 17 00:00:00 2001 From: cgeek <cem.moreau@gmail.com> Date: Thu, 21 Sep 2023 13:49:59 +0200 Subject: [PATCH] fix(#125): allow indexer export file through `DUNITER_GENESIS_EXPORT` env var --- node/src/chain_spec/gdev.rs | 11 +++++++++++ node/src/chain_spec/gen_genesis_data.rs | 10 ++++++++++ 2 files changed, 21 insertions(+) diff --git a/node/src/chain_spec/gdev.rs b/node/src/chain_spec/gdev.rs index 1d2e30c46..7f49e0774 100644 --- a/node/src/chain_spec/gdev.rs +++ b/node/src/chain_spec/gdev.rs @@ -15,6 +15,7 @@ // along with Duniter-v2S. If not, see <https://www.gnu.org/licenses/>. use super::*; +use crate::chain_spec::gen_genesis_data::{genesis_data_to_indexer_export, GenesisIndexerExport}; use common_runtime::constants::*; use common_runtime::entities::IdtyData; use common_runtime::*; @@ -29,6 +30,7 @@ use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId; use sp_consensus_babe::AuthorityId as BabeId; use sp_core::{sr25519, Encode}; use sp_finality_grandpa::AuthorityId as GrandpaId; +use std::fs; pub type AuthorityKeys = ( AccountId, @@ -284,6 +286,15 @@ fn genesis_data_to_gdev_genesis_conf( genesis_data: super::gen_genesis_data::GenesisData<GenesisParameters, SessionKeys>, wasm_binary: &[u8], ) -> gdev_runtime::GenesisConfig { + if let Ok(path) = std::env::var("DUNITER_GENESIS_EXPORT") { + let export: GenesisIndexerExport = genesis_data_to_indexer_export(&genesis_data); + fs::write( + &path, + serde_json::to_string(&export).expect("should be serializable"), + ) + .expect(format!("Could not export genesis data to {}", &path).as_str()); + } + let super::gen_genesis_data::GenesisData { accounts, certs_by_receiver, diff --git a/node/src/chain_spec/gen_genesis_data.rs b/node/src/chain_spec/gen_genesis_data.rs index a1f549db6..e25f2c9fc 100644 --- a/node/src/chain_spec/gen_genesis_data.rs +++ b/node/src/chain_spec/gen_genesis_data.rs @@ -698,3 +698,13 @@ fn to_bn(genesis_timestamp: u64, timestamp: u64) -> u32 { fn validate_idty_name(name: &str) -> bool { name.len() <= 64 } + +pub fn genesis_data_to_indexer_export<P: Default + DeserializeOwned, SK: Decode>( + genesis_data: &GenesisData<P, SK>, +) -> GenesisIndexerExport { + GenesisIndexerExport { + first_ud: genesis_data.first_ud, + first_ud_reeval: genesis_data.first_ud_reeval, + ud: genesis_data.ud, + } +} -- GitLab