1
0

fix: fix all build issue of lcrconn-cli

This commit is contained in:
2026-06-29 21:52:39 +08:00
parent bbd47006d4
commit 5bfdfb71c2
9 changed files with 673 additions and 640 deletions

View File

@@ -0,0 +1,103 @@
use std::path::{Path, PathBuf};
use clap::{Parser, ValueEnum};
/// The configuration for the app.
pub struct AppConfig {
/// The resolver for the app.
resolver: AppResolver,
/// The path to the resistor dataset file.
resistor_dataset: PathBuf,
/// The path to the capacitor dataset file.
capacitor_dataset: PathBuf,
/// The path to the inductor dataset file.
inductor_dataset: PathBuf,
}
impl AppConfig {
/// Get the resolver.
pub fn get_resolver(&self) -> &AppResolver {
&self.resolver
}
/// Get the path to the resistor dataset file.
pub fn get_resistor_dataset(&self) -> &Path {
&self.resistor_dataset
}
/// Get the path to the capacitor dataset file.
pub fn get_capacitor_dataset(&self) -> &Path {
&self.capacitor_dataset
}
/// Get the path to the inductor dataset file.
pub fn get_inductor_dataset(&self) -> &Path {
&self.inductor_dataset
}
}
/// The resolver for the app.
#[derive(Debug, Clone, ValueEnum)]
pub enum AppResolver {
/// The look-up table resolver.
#[value(name = "lut")]
Lut,
/// The BFS resolver.
#[value(name = "bfs")]
Bfs,
}
/// Get the resistor, capacitor, or inductor circuit which has the closest value
/// for your given value within at most 3 devices.
#[derive(Parser)]
#[command(
name = "LCR Connector",
version,
about = "Get the resistor, capacitor, or inductor circuit which has the closest value for your given value within at most 3 devices."
)]
struct Cli {
/// The resolver you want to use.
#[arg(short = 's', long = "resolver", required = true, value_enum)]
resolver: AppResolver,
/// The path to the resistor dataset file.
#[arg(
short = 'r',
long = "resistor",
required = true,
value_name = "RESISTOR.TXT"
)]
resistor_dataset: PathBuf,
/// The path to the inductor dataset file.
#[arg(
short = 'l',
long = "inductor",
required = true,
value_name = "INDUCTOR.TXT"
)]
inductor_dataset: PathBuf,
/// The path to the capacitor dataset file.
#[arg(
short = 'c',
long = "capacitor",
required = true,
value_name = "CAPACITOR.TXT"
)]
capacitor_dataset: PathBuf,
}
impl From<Cli> for AppConfig {
fn from(args: Cli) -> Self {
Self {
resolver: args.resolver,
resistor_dataset: args.resistor_dataset,
capacitor_dataset: args.capacitor_dataset,
inductor_dataset: args.inductor_dataset,
}
}
}
pub fn parse_args() -> AppConfig {
let args = Cli::parse();
let config = AppConfig::from(args);
config
}