diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index a3402ba..aa7a3e0 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -13,15 +13,12 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - rust: - - stable - - beta os: - ubuntu-latest - windows-latest toolchain: - stable - - 1.70.0 + - 1.80.0 steps: - uses: actions/checkout@v4 - run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} @@ -31,6 +28,7 @@ jobs: - run: cargo test - run: cargo test --no-default-features - run: cargo test --features=colored + - run: cargo test --features=colored-3 - run: cargo test --features=syslog-3 - run: cargo test --features=syslog-4 - run: cargo test --features=syslog-6 @@ -54,12 +52,9 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - rust: - - stable - - beta toolchain: - stable - - 1.70.0 + - 1.80.0 steps: - uses: actions/checkout@v4 - run: rustup update ${{ matrix.toolchain }} && rustup default ${{ matrix.toolchain }} diff --git a/Cargo.toml b/Cargo.toml index 730d343..b6318d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,8 @@ include = ["Cargo.toml", "src/**/*", "tests/**/*", "examples/**/*", "LICENSE", " [dependencies] log = { version = "0.4", features = ["std"] } -colored = { version = "2.1.0", optional = true } +colored2 = { version = "2.1.0", package = "colored", optional = true } +colored3 = { version = "3", package = "colored", optional = true } chrono = { version = "0.4", default-features = false, features = ["std", "clock"], optional = true } [target."cfg(not(windows))".dependencies] @@ -41,10 +42,12 @@ reopen-03 = ["reopen03", "libc"] reopen-1 = ["reopen1", "libc"] meta-logging-in-format = [] date-based = ["chrono"] +colored = ["colored2"] +colored-3 = ["colored3"] [dev-dependencies] tempfile = "3" -clap = "2.22" +clap = "4" humantime = "2.1.0" [[example]] diff --git a/examples/cmd-program.rs b/examples/cmd-program.rs index e810029..3309037 100644 --- a/examples/cmd-program.rs +++ b/examples/cmd-program.rs @@ -2,7 +2,7 @@ use std::{io, time::SystemTime}; use log::{debug, info, trace, warn}; -fn setup_logging(verbosity: u64) -> Result<(), fern::InitError> { +fn setup_logging(verbosity: u8) -> Result<(), fern::InitError> { let mut base_config = fern::Dispatch::new(); base_config = match verbosity { @@ -64,17 +64,17 @@ fn setup_logging(verbosity: u64) -> Result<(), fern::InitError> { } fn main() { - let cmd_arguments = clap::App::new("cmd-program") + let cmd_arguments = clap::Command::new("cmd-program") .arg( - clap::Arg::with_name("verbose") - .short("v") + clap::Arg::new("verbose") + .short('v') .long("verbose") - .multiple(true) - .help("Increases logging verbosity each use for up to 3 times"), + .help("Increases logging verbosity each use for up to 3 times") + .action(clap::ArgAction::Count), ) .get_matches(); - let verbosity: u64 = cmd_arguments.occurrences_of("verbose"); + let verbosity = cmd_arguments.get_count("verbose"); setup_logging(verbosity).expect("failed to initialize logging."); diff --git a/examples/syslog.rs b/examples/syslog.rs index dd441a3..a5a880a 100644 --- a/examples/syslog.rs +++ b/examples/syslog.rs @@ -1,5 +1,5 @@ #[cfg(not(windows))] -// This is necessary because `fern` depends on both version 3 and 4. +// This is necessary because `fern` depends on multiple versions. use syslog6 as syslog; #[cfg(not(windows))] diff --git a/examples/syslog3.rs b/examples/syslog3.rs index 39e0bd4..4454089 100644 --- a/examples/syslog3.rs +++ b/examples/syslog3.rs @@ -1,5 +1,5 @@ #[cfg(not(windows))] -// This is necessary because `fern` depends on both version 3 and 4. +// This is necessary because `fern` depends on multiple versions. use syslog3 as syslog; #[cfg(not(windows))] diff --git a/examples/syslog4.rs b/examples/syslog4.rs index dc99dc8..f725928 100644 --- a/examples/syslog4.rs +++ b/examples/syslog4.rs @@ -1,5 +1,5 @@ #[cfg(not(windows))] -// This is necessary because `fern` depends on both version 3 and 4. +// This is necessary because `fern` depends on multiple versions. use syslog4 as syslog; #[cfg(not(windows))] diff --git a/examples/syslog7.rs b/examples/syslog7.rs index 71d38cf..8444ff1 100644 --- a/examples/syslog7.rs +++ b/examples/syslog7.rs @@ -1,5 +1,5 @@ #[cfg(not(windows))] -// This is necessary because `fern` depends on both version 3, 4 and 6 +// This is necessary because `fern` depends on multiple versions. use syslog7 as syslog; #[cfg(not(windows))] diff --git a/src/colors.rs b/src/colors.rs index 66e08ea..36df633 100644 --- a/src/colors.rs +++ b/src/colors.rs @@ -1,7 +1,7 @@ //! Support for ANSI terminal colors via the colored crate. //! -//! To enable support for colors, add the `"colored"` feature in your -//! `Cargo.toml`: +//! To enable support for colors, add the `"colored"` or `"colored-3"` +//! (version 3, which requires rust 1.80) feature in your `Cargo.toml`: //! //! ```toml //! [dependencies] @@ -56,7 +56,7 @@ //! [ex]: https://github.com/daboross/fern/blob/fern-0.7.0/examples/pretty-colored.rs use std::fmt; -pub use colored::Color; +pub use crate::colored::Color; use log::Level; /// Extension crate allowing the use of `.colored` on Levels. @@ -158,7 +158,7 @@ impl ColoredLevelConfig { pub fn new() -> Self { #[cfg(windows)] { - let _ = colored::control::set_virtual_terminal(true); + let _ = crate::colored::control::set_virtual_terminal(true); } Self::default() } @@ -280,7 +280,7 @@ impl ColoredLogLevel for Level { #[cfg(test)] #[cfg(not(windows))] mod test { - use colored::{Color::*, Colorize}; + use crate::colored::{Color::*, Colorize}; use super::WithFgColor; @@ -304,7 +304,7 @@ mod test { BrightCyan, BrightWhite, ] { - colored::control::SHOULD_COLORIZE.set_override(true); + crate::colored::control::SHOULD_COLORIZE.set_override(true); assert_eq!( format!("{}", "test".color(color)), format!( diff --git a/src/lib.rs b/src/lib.rs index 917fafd..4d7c8f8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -251,8 +251,14 @@ mod builders; mod errors; mod log_impl; -#[cfg(feature = "colored")] +#[cfg(any(feature = "colored", feature = "colored-3"))] pub mod colors; +#[cfg(feature = "colored")] +use colored2 as colored; + +#[cfg(feature = "colored-3")] +use colored3 as colored; + #[cfg(all( feature = "syslog-3", feature = "syslog-4",