Skip to content

Commit

Permalink
Factor out error for erase failure when --no-stub is specified.
Browse files Browse the repository at this point in the history
  • Loading branch information
jnross committed Sep 29, 2023
1 parent e19ff23 commit 22d792a
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 10 deletions.
5 changes: 3 additions & 2 deletions cargo-espflash/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@ use espflash::{
save_elf_as_image, serial_monitor, CompletionsArgs, ConnectArgs, EspflashProgress,
FlashConfigArgs, MonitorArgs, PartitionTableArgs,
},
error::Error as EspflashError,
image_format::ImageFormatKind,
logging::initialize_logger,
targets::Chip,
update::check_for_update,
};
use log::{debug, info, LevelFilter};
use miette::{bail, IntoDiagnostic, Result, WrapErr};
use miette::{IntoDiagnostic, Result, WrapErr};

use crate::{
cargo_config::CargoConfig,
Expand Down Expand Up @@ -228,7 +229,7 @@ struct BuildContext {

pub fn erase_parts(args: ErasePartsArgs, config: &Config) -> Result<()> {
if args.connect_args.no_stub {
bail!("Cannot erase flash without the RAM stub")
return Err(EspflashError::StubRequiredToEraseFlash).into_diagnostic();
}

let metadata_partition_table = PackageMetadata::load(&args.package)
Expand Down
9 changes: 5 additions & 4 deletions espflash/src/bin/espflash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,22 @@ use std::{
};

use clap::{Args, CommandFactory, Parser, Subcommand};
use espflash::cli::{EraseFlashArgs, EraseRegionArgs};
use espflash::{
cli::{
self, board_info, completions, config::Config, connect, erase_flash, erase_partitions,
erase_region, flash_elf_image, monitor::monitor, parse_partition_table, parse_uint32,
partition_table, print_board_info, save_elf_as_image, serial_monitor, CompletionsArgs,
ConnectArgs, EspflashProgress, FlashConfigArgs, MonitorArgs, PartitionTableArgs,
ConnectArgs, EraseFlashArgs, EraseRegionArgs, EspflashProgress, FlashConfigArgs,
MonitorArgs, PartitionTableArgs,
},
error::Error,
image_format::ImageFormatKind,
logging::initialize_logger,
targets::Chip,
update::check_for_update,
};
use log::{debug, info, LevelFilter};
use miette::{bail, IntoDiagnostic, Result, WrapErr};
use miette::{IntoDiagnostic, Result, WrapErr};

#[derive(Debug, Parser)]
#[command(about, max_term_width = 100, propagate_version = true, version)]
Expand Down Expand Up @@ -178,7 +179,7 @@ fn main() -> Result<()> {

pub fn erase_parts(args: ErasePartsArgs, config: &Config) -> Result<()> {
if args.connect_args.no_stub {
bail!("Cannot erase flash without the RAM stub")
return Err(Error::StubRequiredToEraseFlash).into_diagnostic();
}

let mut flash = connect(&args.connect_args, config)?;
Expand Down
8 changes: 4 additions & 4 deletions espflash/src/cli/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,13 @@ use comfy_table::{modifiers, presets::UTF8_FULL, Attribute, Cell, Color, Table};
use esp_idf_part::{DataType, Partition, PartitionTable};
use indicatif::{style::ProgressStyle, HumanCount, ProgressBar};
use log::{debug, info};
use miette::{bail, IntoDiagnostic, Result, WrapErr};
use miette::{IntoDiagnostic, Result, WrapErr};
use serialport::{SerialPortType, UsbPortInfo};

use self::{config::Config, monitor::monitor, serial::get_serial_port_info};
use crate::{
elf::ElfFirmwareImage,
error::{MissingPartition, MissingPartitionTable},
error::{Error, MissingPartition, MissingPartitionTable},
flasher::{FlashFrequency, FlashMode, FlashSize, Flasher, ProgressCallbacks},
image_format::ImageFormatKind,
interface::Interface,
Expand Down Expand Up @@ -472,7 +472,7 @@ impl ProgressCallbacks for EspflashProgress {

pub fn erase_flash(args: EraseFlashArgs, config: &Config) -> Result<()> {
if args.connect_args.no_stub {
bail!("Cannot erase flash without the RAM stub")
return Err(Error::StubRequiredToEraseFlash).into_diagnostic();
}

let mut flash = connect(&args.connect_args, config)?;
Expand All @@ -487,7 +487,7 @@ pub fn erase_flash(args: EraseFlashArgs, config: &Config) -> Result<()> {

pub fn erase_region(args: EraseRegionArgs, config: &Config) -> Result<()> {
if args.connect_args.no_stub {
bail!("Cannot erase flash without the RAM stub")
return Err(Error::StubRequiredToEraseFlash).into_diagnostic();
}

let mut flash = connect(&args.connect_args, config)?;
Expand Down
7 changes: 7 additions & 0 deletions espflash/src/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,13 @@ pub enum Error {
)]
NoSerial,

#[error("Cannot erase flash without the RAM stub")]
#[diagnostic(
code(espflash::stub_required_to_erase_flash),
help("Don't use the `--no-ram-stub` option with `erase` commands")
)]
StubRequiredToEraseFlash,

#[error("Incorrect serial port configuration")]
#[diagnostic(
code(espflash::serial_config),
Expand Down

0 comments on commit 22d792a

Please sign in to comment.