generated from PlexSheep/baserepo
restructure
Cargo Check, Format, Fix and Test / cargo CI (push) Failing after 1s
Details
Cargo Check, Format, Fix and Test / cargo CI (push) Failing after 1s
Details
This commit is contained in:
parent
1100aef59c
commit
4dfb406290
41
Cargo.toml
41
Cargo.toml
|
@ -5,12 +5,10 @@ members = [
|
|||
"members/libpt-core",
|
||||
"members/libpt-bintols",
|
||||
"members/libpt-math",
|
||||
"members/libpt-bin",
|
||||
"members/libpt-log",
|
||||
"members/libpt-net",
|
||||
"members/libpt-hedu",
|
||||
]
|
||||
default-members = [".", "members/libpt-bin", "members/libpt-core"]
|
||||
default-members = [".", "members/libpt-core"]
|
||||
[workspace.package]
|
||||
publish = true
|
||||
version = "0.2.5"
|
||||
|
@ -36,6 +34,7 @@ libpt-bintols = { version = "0.2.5", ath = "../libpt-bintols" }
|
|||
|
||||
[package]
|
||||
name = "libpt"
|
||||
autobins = true
|
||||
publish.workspace = true
|
||||
version.workspace = true
|
||||
edition.workspace = true
|
||||
|
@ -50,15 +49,13 @@ categories.workspace = true
|
|||
|
||||
[features]
|
||||
default = ["log", "core"]
|
||||
all = ["default", "math", "log", "bintols", "net", "ccc", "hedu", "core"]
|
||||
core = []
|
||||
fw = []
|
||||
math = []
|
||||
log = []
|
||||
bintols = []
|
||||
net = []
|
||||
math = ["dep:libpt-math"]
|
||||
log = ["dep:libpt-log"]
|
||||
bintols = ["dep:libpt-bintols"]
|
||||
net = ["dep:libpt-net"]
|
||||
ccc = ["math"]
|
||||
hedu = ["bintols"]
|
||||
bin = ["bintols", "net", "dep:clap", "dep:clap-num", "dep:clap-verbosity-flag"]
|
||||
|
||||
[lib]
|
||||
name = "libpt"
|
||||
|
@ -68,13 +65,21 @@ crate-type = [
|
|||
"rlib",
|
||||
]
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
[[bin]]
|
||||
name = "ccc"
|
||||
path = "src/ccc/mod.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "hedu"
|
||||
path = "src/hedu/mod.rs"
|
||||
|
||||
[dependencies]
|
||||
libpt-bintols = { version = "0.2.5", path = "members/libpt-bintols" }
|
||||
libpt-core = { version = "0.2.5", path = "members/libpt-core" }
|
||||
libpt-hedu = { version = "0.2.5", path = "members/libpt-hedu" }
|
||||
libpt-log = { version = "0.2.5", path = "members/libpt-log" }
|
||||
libpt-math = { version = "0.2.5", path = "members/libpt-math" }
|
||||
libpt-ccc = { version = "0.2.5", path = "members/libpt-ccc" }
|
||||
libpt-net = { version = "0.2.5", path = "members/libpt-net" }
|
||||
libpt-core = { version = "0.2.0-alpha.2", path = "members/libpt-core", registry = "cscherr" }
|
||||
libpt-bintols = { version = "0.2.0-alpha.2", optional = true, path = "members/libpt-bintols", registry = "cscherr" }
|
||||
libpt-log = { version = "0.2.0-alpha.2", optional = true, path = "members/libpt-log", registry = "cscherr" }
|
||||
libpt-math = { version = "0.2.0-alpha.2", optional = true, path = "members/libpt-math", registry = "cscherr" }
|
||||
libpt-ccc = { version = "0.2.0-alpha.2", optional = true, path = "members/libpt-ccc", registry = "cscherr" }
|
||||
libpt-net = { version = "0.2.0-alpha.2", optional = true, path = "members/libpt-net", registry = "cscherr" }
|
||||
clap = { version = "4.4.4", features = ["derive"], optional = true }
|
||||
clap-num = { version = "1.0.2", optional = true }
|
||||
clap-verbosity-flag = { version = "2.0.1", optional = true }
|
||||
|
|
|
@ -1,124 +0,0 @@
|
|||
//! # args module
|
||||
//!
|
||||
//! The args module of libpt is used to parse commandline arguments. For this, it makes use of
|
||||
//! [`clap`].
|
||||
|
||||
//// ATTRIBUTES ////////////////////////////////////////////////////////////////////////////////////
|
||||
// we want docs
|
||||
#![warn(missing_docs)]
|
||||
#![warn(rustdoc::missing_crate_level_docs)]
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// we want Debug everywhere.
|
||||
#![warn(missing_debug_implementations)]
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// enable clippy's extra lints, the pedantic version
|
||||
#![warn(clippy::pedantic)]
|
||||
|
||||
//// IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
|
||||
use clap::{Parser, Subcommand};
|
||||
|
||||
use clap_num::number_range;
|
||||
|
||||
use clap_verbosity_flag::{InfoLevel, Verbosity};
|
||||
|
||||
//// CONSTANTS /////////////////////////////////////////////////////////////////////////////////////
|
||||
/// short about section displayed in help
|
||||
const ABOUT_ROOT: &'static str = r##"
|
||||
Personal multi tool
|
||||
|
||||
A collection of tools made for personal use
|
||||
"##;
|
||||
/// longer about section displayed in help, is combined with [the short help](ABOUT_ROOT)
|
||||
static LONG_ABOUT_ROOT: &'static str = r##"
|
||||
|
||||
libpt is a personal general purpose library, offering this executable, a python module and a
|
||||
dynamic library.
|
||||
"##;
|
||||
|
||||
//// STATICS ///////////////////////////////////////////////////////////////////////////////////////
|
||||
/// ## Main struct for parsing CLI arguments
|
||||
///
|
||||
/// This struct describes the complete commandline options/arguments that [pt](crate) can take. It
|
||||
/// makes use of composition to build a complex system of commands, subcommands, flags and options.
|
||||
#[derive(Debug, Clone, Parser)]
|
||||
#[command(
|
||||
author,
|
||||
version,
|
||||
about = ABOUT_ROOT,
|
||||
long_about = format!("{}{}", ABOUT_ROOT ,LONG_ABOUT_ROOT),
|
||||
help_template =
|
||||
r#"libpt: {version}{about-section}Author:
|
||||
{author-with-newline}
|
||||
{usage-heading} {usage}{all-args}{tab}"#
|
||||
)]
|
||||
pub struct Cli {
|
||||
// clap_verbosity_flag seems to make this a global option implicitly
|
||||
/// set a verbosity, multiple allowed (f.e. -vvv)
|
||||
#[command(flatten)]
|
||||
pub verbose: Verbosity<InfoLevel>,
|
||||
|
||||
/// show logger meta
|
||||
#[arg(short, long, global = true)]
|
||||
pub log_meta: bool,
|
||||
|
||||
/// choose a subcommand
|
||||
#[command(subcommand)]
|
||||
pub command: Commands,
|
||||
}
|
||||
|
||||
//// ENUMS /////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// ## defines the top level commands
|
||||
#[derive(Debug, Clone, Subcommand)]
|
||||
#[non_exhaustive]
|
||||
pub enum Commands {
|
||||
/// networking commands
|
||||
Net {
|
||||
/// Networking subcommands
|
||||
#[command(subcommand)]
|
||||
command: NetCommands,
|
||||
},
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// ## defines the networking commands
|
||||
#[derive(Debug, Clone, Subcommand)]
|
||||
#[non_exhaustive]
|
||||
pub enum NetCommands {
|
||||
/// monitor your network
|
||||
Monitor {
|
||||
/// repeat every N seconds, 0 means no repeat
|
||||
#[clap(short, long, default_value_t = 0, name = "N")]
|
||||
repeat: u64,
|
||||
|
||||
/// At what percentage should the try be considered successful
|
||||
#[clap(short, long, default_value_t = 100, value_parser=max100)]
|
||||
success_ratio: u8,
|
||||
|
||||
/// extra URLs to check with
|
||||
extra_urls: Vec<String>,
|
||||
|
||||
/// Don't check for default URLs
|
||||
#[clap(short, long)]
|
||||
no_default: bool,
|
||||
|
||||
/// set a timeout (in ms)
|
||||
#[clap(short, long, default_value_t = 100)]
|
||||
timeout: u64,
|
||||
},
|
||||
/// discover hosts in your network
|
||||
Discover {},
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// STRUCTS ///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// IMPLEMENTATION ////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// PUBLIC FUNCTIONS //////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// PRIVATE FUNCTIONS /////////////////////////////////////////////////////////////////////////////
|
||||
/// custom value parser, only allow 0 to 100
|
||||
fn max100(s: &str) -> Result<u8, String> {
|
||||
number_range(s, 0, 100)
|
||||
}
|
|
@ -1,102 +0,0 @@
|
|||
//! # Main executable of libpt
|
||||
//!
|
||||
//! This module contains all code specific to the executable version of [`pt`]: [`pt`](crate).
|
||||
//!
|
||||
//!
|
||||
|
||||
//// ATTRIBUTES ////////////////////////////////////////////////////////////////////////////////////
|
||||
// we want docs
|
||||
#![warn(missing_docs)]
|
||||
#![warn(rustdoc::missing_crate_level_docs)]
|
||||
// we want Debug everywhere.
|
||||
#![warn(missing_debug_implementations)]
|
||||
// enable clippy's extra lints, the pedantic version
|
||||
#![warn(clippy::pedantic)]
|
||||
|
||||
//// IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
|
||||
use libpt::{log::*, net::monitoring::uptime};
|
||||
|
||||
use clap::Parser;
|
||||
|
||||
pub mod args;
|
||||
use args::*;
|
||||
|
||||
//// CONSTANTS /////////////////////////////////////////////////////////////////////////////////////
|
||||
#[allow(dead_code)]
|
||||
//// STATICS ///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// MACROS ////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// ENUMS /////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// STRUCTS ///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// IMPLEMENTATION ////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
//// PUBLIC FUNCTIONS //////////////////////////////////////////////////////////////////////////////
|
||||
/// ## Main function of the [`pt`](crate) binary
|
||||
pub fn main() {
|
||||
let cli = Cli::parse();
|
||||
let ll: Level = match cli.verbose.log_level().unwrap().as_str() {
|
||||
"TRACE" => Level::TRACE,
|
||||
"DEBUG" => Level::DEBUG,
|
||||
"INFO" => Level::INFO,
|
||||
"WARN" => Level::WARN,
|
||||
"ERROR" => Level::ERROR,
|
||||
_ => {
|
||||
eprintln!("'{}' is not a valid loglevel", cli.verbose.to_string());
|
||||
std::process::exit(1);
|
||||
}
|
||||
};
|
||||
if cli.log_meta {
|
||||
Logger::init(None, Some(ll)).expect("could not initialize Logger");
|
||||
} else {
|
||||
// less verbose version
|
||||
Logger::init_mini(Some(ll)).expect("could not initialize Logger");
|
||||
}
|
||||
|
||||
trace!("started the main function");
|
||||
trace!("{:?}", &cli);
|
||||
|
||||
match cli.clone().command {
|
||||
Commands::Net { command } => net(&cli, command),
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
/// ## Process [`Net`](args::NetCommands) subcommands
|
||||
pub fn net(cli: &Cli, command: NetCommands) {
|
||||
match command {
|
||||
NetCommands::Monitor {
|
||||
repeat,
|
||||
success_ratio,
|
||||
extra_urls,
|
||||
no_default,
|
||||
timeout,
|
||||
} => {
|
||||
let urls: Vec<String>;
|
||||
if no_default {
|
||||
urls = extra_urls;
|
||||
} else {
|
||||
let mut combined: Vec<String> = Vec::new();
|
||||
for i in uptime::DEFAULT_CHECK_URLS {
|
||||
combined.push(i.to_string());
|
||||
}
|
||||
combined.extend(extra_urls);
|
||||
urls = combined;
|
||||
}
|
||||
let _verbose = cli.verbose.log_level().is_some();
|
||||
if repeat > 0 {
|
||||
uptime::continuous_uptime_monitor(success_ratio, urls, repeat * 1000, timeout);
|
||||
} else {
|
||||
let status = uptime::UptimeStatus::new(success_ratio, urls, timeout);
|
||||
info!("status:\n{}", status);
|
||||
}
|
||||
}
|
||||
NetCommands::Discover {} => {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//// PRIVATE FUNCTIONS /////////////////////////////////////////////////////////////////////////////
|
|
@ -16,5 +16,7 @@ categories.workspace = true
|
|||
|
||||
[dependencies]
|
||||
num-traits = "0.2.16"
|
||||
libpt-core = { version = "0.2.3", path = "../libpt-core" }
|
||||
libpt-log = { version = "0.2.3", path = "../libpt-log" }
|
||||
libpt-core = { version = "0.2.0-alpha.2", path = "../libpt-core", registry = "cscherr" }
|
||||
libpt-log = { version = "0.2.0-alpha.2", path = "../libpt-log", registry = "cscherr" }
|
||||
anyhow = { workspace = true }
|
||||
thiserror = { workspace = true }
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
//! This crate is currently empty.
|
||||
|
||||
use anyhow::{bail, Result};
|
||||
use libpt_bintols::display::{bytes_to_bin, humanbytes};
|
||||
use crate::display::{bytes_to_bin, humanbytes};
|
||||
use libpt_log::{debug, error, info, trace, warn};
|
||||
use std::io::{prelude::*, BufReader, Read, SeekFrom};
|
||||
|
|
@ -22,6 +22,6 @@ pub const ZEBI: u128 = 2u128.pow(70);
|
|||
/// 2^80
|
||||
pub const YOBI: u128 = 2u128.pow(80);
|
||||
|
||||
// use libpt_core;
|
||||
pub mod datalayout;
|
||||
pub mod display;
|
||||
pub mod hedu;
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
//! expression.
|
||||
|
||||
//// ATTRIBUTES ////////////////////////////////////////////////////////////////////////////////////
|
||||
#![cfg(feature = "bin")]
|
||||
// we want docs
|
||||
#![warn(missing_docs)]
|
||||
#![warn(rustdoc::missing_crate_level_docs)]
|
|
@ -3,6 +3,7 @@
|
|||
//! Dump data to a fancy format.
|
||||
|
||||
//// ATTRIBUTES ////////////////////////////////////////////////////////////////////////////////////
|
||||
#![cfg(feature = "bin")]
|
||||
// we want docs
|
||||
#![warn(missing_docs)]
|
||||
#![warn(rustdoc::missing_crate_level_docs)]
|
||||
|
@ -13,12 +14,12 @@
|
|||
|
||||
//// IMPORTS ///////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
use libpt::{hedu::*, log::*};
|
||||
use libpt::{bintols::hedu::*, log::*};
|
||||
|
||||
use clap::Parser;
|
||||
use clap_verbosity_flag::{InfoLevel, Verbosity};
|
||||
|
||||
use std::{fs::File, io::IsTerminal};
|
||||
use std::{fs::File, io::IsTerminal, eprintln};
|
||||
|
||||
//// TYPES /////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
@ -12,8 +12,6 @@ pub use libpt_bintols as bintols;
|
|||
pub use libpt_ccc as ccc;
|
||||
#[cfg(feature = "core")]
|
||||
pub use libpt_core as core;
|
||||
#[cfg(feature = "hedu")]
|
||||
pub use libpt_hedu as hedu;
|
||||
#[cfg(feature = "log")]
|
||||
pub use libpt_log as log;
|
||||
#[cfg(feature = "math")]
|
||||
|
|
Reference in New Issue