Skip to content

Commit

Permalink
refactored
Browse files Browse the repository at this point in the history
  • Loading branch information
FroVolod committed Sep 15, 2023
1 parent 6510b3d commit 40d6f2d
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 42 deletions.
48 changes: 20 additions & 28 deletions cargo-near/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ mod types;
pub mod util;

#[derive(Debug, Clone, interactive_clap::InteractiveClap)]
#[interactive_clap(context = near_cli_rs::GlobalContext)]
#[interactive_clap(context = ())]
pub struct NearArgs {
#[interactive_clap(subcommand)]
pub cmd: NearCommand,
}

#[derive(Debug, EnumDiscriminants, Clone, interactive_clap::InteractiveClap)]
#[interactive_clap(context = near_cli_rs::GlobalContext)]
#[interactive_clap(context = ())]
#[strum_discriminants(derive(EnumMessage, EnumIter))]
#[interactive_clap(disable_back)]
/// What are you up to? (select one of the options with the up-down arrows on your keyboard and press Enter)
Expand All @@ -33,7 +33,7 @@ pub enum NearCommand {
}

#[derive(Debug, Clone, interactive_clap::InteractiveClap)]
#[interactive_clap(context = near_cli_rs::GlobalContext)]
#[interactive_clap(context = ())]
#[interactive_clap(skip_default_from_cli)]
pub struct AbiCommand {
/// Include rustdocs in the ABI file
Expand All @@ -58,7 +58,7 @@ pub struct AbiCommand {
}

impl interactive_clap::FromCli for AbiCommand {
type FromCliContext = near_cli_rs::GlobalContext;
type FromCliContext = ();
type FromCliError = color_eyre::eyre::Error;
fn from_cli(
optional_clap_variant: Option<<Self as interactive_clap::ToCli>::CliVariant>,
Expand Down Expand Up @@ -102,38 +102,34 @@ impl interactive_clap::FromCli for AbiCommand {
manifest_path,
color,
};
match abi::run(args) {
Ok(_) => interactive_clap::ResultFromCli::Ok(clap_variant),
Err(err) => interactive_clap::ResultFromCli::Err(
Some(clap_variant),
color_eyre::Report::msg(err),
),
if let Err(err) = abi::run(args) {
interactive_clap::ResultFromCli::Err(Some(clap_variant), color_eyre::Report::msg(err))
} else {
interactive_clap::ResultFromCli::Ok(clap_variant)
}
}
}

impl AbiCommand {
fn input_color(
_context: &near_cli_rs::GlobalContext,
) -> color_eyre::eyre::Result<Option<ColorPreference>> {
fn input_color(_context: &()) -> color_eyre::eyre::Result<Option<ColorPreference>> {
Ok(None)
}

fn input_out_dir(
_context: &near_cli_rs::GlobalContext,
_context: &(),
) -> color_eyre::eyre::Result<Option<crate::types::utf8_path_buf::Utf8PathBuf>> {
Ok(None)
}

fn input_manifest_path(
_context: &near_cli_rs::GlobalContext,
_context: &(),
) -> color_eyre::eyre::Result<Option<crate::types::utf8_path_buf::Utf8PathBuf>> {
Ok(None)
}
}

#[derive(Debug, Clone, interactive_clap::InteractiveClap)]
#[interactive_clap(context = near_cli_rs::GlobalContext)]
#[interactive_clap(context = ())]
#[interactive_clap(skip_default_from_cli)]
pub struct BuildCommand {
/// Build contract in release mode, with optimizations
Expand Down Expand Up @@ -165,7 +161,7 @@ pub struct BuildCommand {
}

impl interactive_clap::FromCli for BuildCommand {
type FromCliContext = near_cli_rs::GlobalContext;
type FromCliContext = ();
type FromCliError = color_eyre::eyre::Error;
fn from_cli(
optional_clap_variant: Option<<Self as interactive_clap::ToCli>::CliVariant>,
Expand Down Expand Up @@ -213,31 +209,27 @@ impl interactive_clap::FromCli for BuildCommand {
manifest_path,
color,
};
match build::run(args).map(|_| ()) {
Ok(_) => interactive_clap::ResultFromCli::Ok(clap_variant),
Err(err) => interactive_clap::ResultFromCli::Err(
Some(clap_variant),
color_eyre::Report::msg(err),
),
if let Err(err) = build::run(args).map(|_| ()) {
interactive_clap::ResultFromCli::Err(Some(clap_variant), color_eyre::Report::msg(err))
} else {
interactive_clap::ResultFromCli::Ok(clap_variant)
}
}
}

impl BuildCommand {
fn input_color(
_context: &near_cli_rs::GlobalContext,
) -> color_eyre::eyre::Result<Option<ColorPreference>> {
fn input_color(_context: &()) -> color_eyre::eyre::Result<Option<ColorPreference>> {
Ok(None)
}

fn input_out_dir(
_context: &near_cli_rs::GlobalContext,
_context: &(),
) -> color_eyre::eyre::Result<Option<crate::types::utf8_path_buf::Utf8PathBuf>> {
Ok(None)
}

fn input_manifest_path(
_context: &near_cli_rs::GlobalContext,
_context: &(),
) -> color_eyre::eyre::Result<Option<crate::types::utf8_path_buf::Utf8PathBuf>> {
Ok(None)
}
Expand Down
18 changes: 4 additions & 14 deletions cargo-near/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ use std::env;
use strum::{EnumDiscriminants, EnumIter, EnumMessage};

#[derive(Debug, Clone, interactive_clap::InteractiveClap)]
#[interactive_clap(context = near_cli_rs::GlobalContext)]
#[interactive_clap(context = ())]
struct Cmd {
#[interactive_clap(subcommand)]
opts: Opts,
}

#[derive(Debug, EnumDiscriminants, Clone, interactive_clap::InteractiveClap)]
#[interactive_clap(context = near_cli_rs::GlobalContext)]
#[interactive_clap(context = ())]
#[strum_discriminants(derive(EnumMessage, EnumIter))]
#[interactive_clap(disable_back)]
/// Near
Expand All @@ -29,25 +29,15 @@ fn main() -> CliResult {
_ => colored::control::set_override(atty::is(atty::Stream::Stderr)),
}

let config = near_cli_rs::common::get_config_toml()?;

color_eyre::install()?;

let cli = match Cmd::try_parse() {
Ok(cli) => cli,
Err(error) => error.exit(),
};

let global_context = near_cli_rs::GlobalContext {
config,
offline: false,
};

loop {
match <Cmd as interactive_clap::FromCli>::from_cli(
Some(cli.clone()),
global_context.clone(),
) {
match <Cmd as interactive_clap::FromCli>::from_cli(Some(cli.clone()), ()) {
interactive_clap::ResultFromCli::Ok(cli_cmd)
| interactive_clap::ResultFromCli::Cancel(Some(cli_cmd)) => {
eprintln!(
Expand All @@ -66,7 +56,7 @@ fn main() -> CliResult {
if let Some(cli_cmd) = optional_cli_cmd {
eprintln!(
"Your console command:\n{} {}",
std::env::args().next().as_deref().unwrap_or("./bos"),
std::env::args().next().as_deref().unwrap_or("./cargo-near"),
shell_words::join(cli_cmd.to_cli_args())
);
}
Expand Down

0 comments on commit 40d6f2d

Please sign in to comment.