From d87efe70b99881ff69992005274cd8a6c069cb2e Mon Sep 17 00:00:00 2001 From: clearloop <26088946+clearloop@users.noreply.github.com> Date: Tue, 27 Feb 2024 00:57:39 +0800 Subject: [PATCH] fix(gring): remove ss58 version configuration (#3750) --- utils/gring/src/cmd.rs | 33 +++++++++++++++++++++++++++++++++ utils/gring/src/keyring.rs | 19 +------------------ 2 files changed, 34 insertions(+), 18 deletions(-) diff --git a/utils/gring/src/cmd.rs b/utils/gring/src/cmd.rs index 0e2fb8131c9..29d6f969cec 100644 --- a/utils/gring/src/cmd.rs +++ b/utils/gring/src/cmd.rs @@ -30,6 +30,11 @@ use std::{fs, path::PathBuf}; /// gring sub commands. #[derive(Clone, Debug, Parser)] pub enum Command { + /// Imports a keystore file generated by polakdot-js extension. + Add { + /// The path of the keystore file. + path: PathBuf, + }, /// Generate a new key. New { /// The name of the key. @@ -109,6 +114,34 @@ impl Command { pub fn run(self) -> Result<()> { let mut keyring = Keyring::load(Command::store()?)?; match self { + Command::Add { path } => { + let keystore = serde_json::from_str::(&fs::read_to_string(&path)?)?; + let name = path + .file_stem() + .map(|s| s.to_string_lossy().to_string()) + .unwrap_or(keystore.meta.name.clone()); + + keyring + .list() + .iter() + .find(|k| k.meta.name == keystore.meta.name) + .map_or_else( + || { + fs::copy(&path, keyring.store.join(&name).with_extension("json"))?; + println!( + "Key {} has been imported!", + keystore.meta.name.cyan().bold() + ); + Ok(()) + }, + |_| { + Err(anyhow!( + "Key {} already exists.", + keystore.meta.name.yellow().bold() + )) + }, + )?; + } Command::New { mut name, vanity, diff --git a/utils/gring/src/keyring.rs b/utils/gring/src/keyring.rs index 8c3c68a213e..4fd912d6c8e 100644 --- a/utils/gring/src/keyring.rs +++ b/utils/gring/src/keyring.rs @@ -18,10 +18,7 @@ //! Keyring implementation based on the polkadot-js keystore. -use crate::{ - ss58::{self, VARA_SS58_PREFIX}, - Keystore, -}; +use crate::{ss58, Keystore}; use anyhow::Result; use colored::Colorize; use schnorrkel::Keypair; @@ -41,9 +38,6 @@ pub struct Keyring { ring: Vec, /// The primary key. pub primary: String, - /// The SS58 prefix. - #[serde(default = "ss58::default_ss58_version")] - pub ss58_version: u16, } impl Keyring { @@ -75,10 +69,6 @@ impl Keyring { Self::default() }; - if this.ss58_version != VARA_SS58_PREFIX { - ss58::set_default_ss58_version(this.ss58_version); - } - this.ring = ring; this.store = store; @@ -131,13 +121,6 @@ impl Keyring { Ok(key) } - /// Set the SS58 version. - pub fn set_ss58_version(&mut self, version: u16) -> Result<()> { - self.ss58_version = version; - fs::write(self.store.join(CONFIG), serde_json::to_vec_pretty(&self)?)?; - Ok(()) - } - /// Add keypair to the keyring pub fn add( &mut self,