Skip to content

Commit

Permalink
add: fast flags
Browse files Browse the repository at this point in the history
  • Loading branch information
anshalshukla committed Feb 15, 2024
1 parent 519a398 commit 0d04e45
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 23 deletions.
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "madara-cli"
version = "0.2.0"
edition = "2024"
edition = "2021"

[[bin]]
name = "madara"
Expand Down
4 changes: 2 additions & 2 deletions src/app/config.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use serde::{Deserialize, Serialize};
use strum::EnumIter;
use strum_macros::Display;
use strum_macros::{Display, EnumString};
use toml::ser::Error;

use crate::da::da_layers::DALayer;
Expand All @@ -24,7 +24,7 @@ impl AppChainConfig {
}
}

#[derive(Debug, Serialize, Deserialize, EnumIter, Display)]
#[derive(Debug, Serialize, Deserialize, EnumIter, Display, Clone, EnumString)]
pub enum RollupMode {
Sovereign,
// Validity,
Expand Down
29 changes: 23 additions & 6 deletions src/cli/init.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use std::{fs, io};
use std::str::FromStr;

use inquire::InquireError;
use strum::IntoEnumIterator;
Expand All @@ -24,10 +25,12 @@ pub enum InitError {
FailedToSerializeToToml(#[from] toml::ser::Error),
#[error("Failed to generate keypair")]
FailedToGenerateKeypair,
#[error("Failed to convert string to enum")]
FailedToGetEnum(#[from] strum::ParseError),
}

pub async fn init() {
let config = match generate_config().await {
pub async fn init(chain_name: &Option<String>, chain_mode: &Option<String>, da: &Option<String>) {
let config = match generate_config(chain_name, chain_mode, da).await {
Ok(config) => config,
Err(err) => {
panic!("Failed to get input: {}", err);
Expand All @@ -44,15 +47,29 @@ pub async fn init() {
log::info!("✅ New app chain initialised.");
}

async fn generate_config() -> Result<AppChainConfig, InitError> {
let app_chain = get_text_input("Enter you app chain name:", Some("madara"))?;
async fn generate_config(chain_name: &Option<String>, chain_mode: &Option<String>, da: &Option<String>) -> Result<AppChainConfig, InitError> {
let app_chain: String;
match chain_name {
Some(chain_name) => app_chain = chain_name.clone(),
None => app_chain = get_text_input("Enter you app chain name:", Some("madara"))?,
}

let app_chains_home = get_app_chains_home()?;
let binding = app_chains_home.join(format!("{}/data", app_chain));
let default_base_path = binding.to_str().unwrap_or("madara-data");

let mode = get_option("Select mode for your app chain:", RollupMode::iter().collect::<Vec<_>>())?;
let da_layer = get_option("Select DA layer for your app chain:", DALayer::iter().collect::<Vec<_>>())?;
let mode: RollupMode;
match chain_mode {
Some(chain_mode) => mode = RollupMode::from_str(chain_mode)?,
None => mode = get_option("Select mode for your app chain:", RollupMode::iter().collect::<Vec<_>>())?,
}

let da_layer: DALayer;
match da {
Some(da) => da_layer = DALayer::from_str(da)?,
None => da_layer = get_option("Select DA layer for your app chain:", DALayer::iter().collect::<Vec<_>>())?,
}

let madara_version = get_latest_commit_hash(MADARA_REPO_ORG, MADARA_REPO_NAME, MADARA_BRANCH_NAME).await?;
let config_version = ConfigVersion::Version2;

Expand Down
20 changes: 13 additions & 7 deletions src/cli/run.rs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ pub enum RunError {
Other(#[from] eyre::Error),
}

pub async fn run() {
match start_app_chain().await {
pub async fn run(chain_name: &Option<String>) {
match start_app_chain(chain_name).await {
Ok(_) => {
log::info!("Madara setup successful");
}
Expand All @@ -35,12 +35,18 @@ pub async fn run() {
}
}

async fn start_app_chain() -> Result<(), RunError> {
let app_chains_list = get_apps_list()?;
let app = get_option("Select the app chain:", app_chains_list)?;
let app_chain: &str = &app;
async fn start_app_chain(chain_name: &Option<String>) -> Result<(), RunError> {
let app_chain: String;
match chain_name {
Some(chain_name) => app_chain = chain_name.to_string(),
None => {
let app_chains_list = get_apps_list()?;
let app = get_option("Select the app chain:", app_chains_list)?;
app_chain = app;
}
}

let (config, _) = match regenerate_app_config(app_chain) {
let (config, _) = match regenerate_app_config(&app_chain) {
Ok((config, valid)) => (config, valid),
Err(err) => {
log::error!("Failed to fetch the required app chain: {}", err);
Expand Down
4 changes: 2 additions & 2 deletions src/da/da_layers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ use std::io;
use std::path::PathBuf;

use serde::{Deserialize, Serialize};
use strum_macros::{Display, EnumIter};
use strum_macros::{Display, EnumIter, EnumString};
use thiserror::Error;

use crate::app::config::AppChainConfig;
Expand All @@ -15,7 +15,7 @@ use crate::utils::constants::APP_DA_CONFIG_NAME;
use crate::utils::paths::get_app_home;
use eyre::Result as EyreResult;

#[derive(Debug, Serialize, Deserialize, EnumIter, Display, Clone)]
#[derive(Debug, Serialize, Deserialize, EnumIter, Display, Clone, EnumString)]
pub enum DALayer {
Avail,
Ethereum,
Expand Down
22 changes: 18 additions & 4 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,25 @@ struct Cli {
#[derive(Subcommand)]
enum Commands {
/// Init a new App Chain config
Init,
Init {
/// App chain name
#[arg(short, long)]
chain_name: Option<String>,
/// Select Sovereign
#[arg(short, long)]
chain_mode: Option<String>,
/// Select between Avail, Celestia, Ethereum, NoDA
#[arg(short, long)]
da: Option<String>
},
/// Lists all the existing App Chain configs
List,
/// Runs the App Chain using Madara
Run,
Run {
/// App chain name
#[arg(short, long)]
chain_name: Option<String>,
},
/// Runs the L2 explorer
Explorer(ExplorerOpts),
}
Expand All @@ -34,9 +48,9 @@ async fn main() {
let cli = Cli::parse();

match &cli.command {
Some(Commands::Init) => cli::init::init().await,
Some(Commands::Init{chain_name, chain_mode, da}) => cli::init::init(chain_name, chain_mode, da).await,
Some(Commands::List) => cli::list::list(),
Some(Commands::Run) => cli::run::run().await,
Some(Commands::Run{chain_name}) => cli::run::run(chain_name).await,
Some(Commands::Explorer(opts)) => cli::explorer::explorer(opts).await,
None => log::info!("Use --help to see the complete list of available commands"),
}
Expand Down

0 comments on commit 0d04e45

Please sign in to comment.