aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--CHANGELOG.md1
-rw-r--r--Cargo.lock54
-rw-r--r--Cargo.toml4
-rw-r--r--src/main.rs26
4 files changed, 46 insertions, 39 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8cf312a..36caca7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
<!-- next-header -->
## [Unreleased] - ReleaseDate
+- Fix ANSI color codes are printed when not a tty [#1095](https://github.com/svenstaro/miniserve/pull/1095)
- Allow parameters to be provided via environment variables [#1160](https://github.com/svenstaro/miniserve/pull/1160)
## [0.23.2] - 2023-04-28
diff --git a/Cargo.lock b/Cargo.lock
index f3e1f3c..ae09ebf 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -539,13 +539,12 @@ dependencies = [
[[package]]
name = "bstr"
-version = "1.5.0"
+version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "a246e68bb43f6cd9db24bea052a53e40405417c5fb372e3d1a8a7f770a564ef5"
+checksum = "6798148dccfbff0fae41c7574d2fa8f1ef3492fba0face179de5d8d447d67b05"
dependencies = [
"memchr",
- "once_cell",
- "regex-automata 0.1.10",
+ "regex-automata",
"serde",
]
@@ -623,9 +622,9 @@ dependencies = [
[[package]]
name = "clap"
-version = "4.3.10"
+version = "4.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "384e169cc618c613d5e3ca6404dda77a8685a63e08660dcc64abaf7da7cb0c7a"
+checksum = "1640e5cc7fb47dbb8338fd471b105e7ed6c3cb2aeb00c2e067127ffd3764a05d"
dependencies = [
"clap_builder",
"clap_derive",
@@ -634,9 +633,9 @@ dependencies = [
[[package]]
name = "clap_builder"
-version = "4.3.10"
+version = "4.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "ef137bbe35aab78bdb468ccfba75a5f4d8321ae011d34063770780545176af2d"
+checksum = "98c59138d527eeaf9b53f35a77fcc1fad9d883116070c63d5de1c7dc7b00c72b"
dependencies = [
"anstream",
"anstyle",
@@ -648,9 +647,9 @@ dependencies = [
[[package]]
name = "clap_complete"
-version = "4.3.1"
+version = "4.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "7f6b5c519bab3ea61843a7923d074b04245624bb84a64a8c150f5deb014e388b"
+checksum = "5fc443334c81a804575546c5a8a79b4913b50e28d69232903604cada1de817ce"
dependencies = [
"clap",
]
@@ -696,6 +695,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7"
[[package]]
+name = "colored"
+version = "2.0.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6"
+dependencies = [
+ "is-terminal",
+ "lazy_static",
+ "windows-sys 0.48.0",
+]
+
+[[package]]
name = "comrak"
version = "0.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1251,7 +1261,7 @@ dependencies = [
"futures-util",
"http",
"hyper",
- "rustls 0.21.2",
+ "rustls 0.21.3",
"tokio",
"tokio-rustls 0.24.1",
]
@@ -1583,6 +1593,7 @@ dependencies = [
"clap",
"clap_complete",
"clap_mangen",
+ "colored",
"comrak",
"fake-tty",
"fast_qr",
@@ -1615,7 +1626,6 @@ dependencies = [
"tar",
"thiserror",
"url",
- "yansi",
"zip",
]
@@ -1985,18 +1995,12 @@ checksum = "89089e897c013b3deb627116ae56a6955a72b8bed395c9526af31c9fe528b484"
dependencies = [
"aho-corasick 1.0.2",
"memchr",
- "regex-automata 0.3.0",
+ "regex-automata",
"regex-syntax",
]
[[package]]
name = "regex-automata"
-version = "0.1.10"
-source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
-
-[[package]]
-name = "regex-automata"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa250384981ea14565685dea16a9ccc4d1c541a13f82b9c168572264d1df8c56"
@@ -2042,7 +2046,7 @@ dependencies = [
"once_cell",
"percent-encoding",
"pin-project-lite",
- "rustls 0.21.2",
+ "rustls 0.21.3",
"rustls-pemfile",
"serde",
"serde_json",
@@ -2170,9 +2174,9 @@ dependencies = [
[[package]]
name = "rustls"
-version = "0.21.2"
+version = "0.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "e32ca28af694bc1bbf399c33a516dbdf1c90090b8ab23c2bc24f834aa2247f5f"
+checksum = "b19faa85ecb5197342b54f987b142fb3e30d0c90da40f80ef4fa9a726e6676ed"
dependencies = [
"log",
"ring",
@@ -2191,9 +2195,9 @@ dependencies = [
[[package]]
name = "rustls-webpki"
-version = "0.100.1"
+version = "0.101.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d6207cd5ed3d8dca7816f8f3725513a34609c0c765bf652b8c3cb4cfd87db46b"
+checksum = "89efed4bd0af2a8de0feb22ba38030244c93db56112b8aa67d27022286852b1c"
dependencies = [
"ring",
"untrusted",
@@ -2652,7 +2656,7 @@ version = "0.24.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081"
dependencies = [
- "rustls 0.21.2",
+ "rustls 0.21.3",
"tokio",
]
diff --git a/Cargo.toml b/Cargo.toml
index d79600b..46776b8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -31,13 +31,14 @@ chrono-humanize = "0.2"
clap = { version = "4", features = ["derive", "cargo", "wrap_help", "deprecated", "env"] }
clap_complete = "4"
clap_mangen = "0.2"
+colored = "2"
comrak = { version = "0.18", default-features = false }
fast_qr = { version = "0.9", features = ["svg"] }
futures = "0.3"
-if-addrs = "0.10"
hex = "0.4"
http = "0.2"
httparse = "1"
+if-addrs = "0.10"
libflate = "1"
log = "0.4"
maud = "0.25"
@@ -55,7 +56,6 @@ socket2 = "0.5"
strum = { version = "0.25", features = ["derive"] }
tar = "0.4"
thiserror = "1"
-yansi = "0.5"
zip = { version = "0.6.5", default-features = false }
[features]
diff --git a/src/main.rs b/src/main.rs
index 47d4303..2f81baa 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -10,9 +10,9 @@ use actix_web::{
use actix_web_httpauth::middleware::HttpAuthentication;
use anyhow::Result;
use clap::{crate_version, CommandFactory, Parser};
+use colored::*;
use fast_qr::QRBuilder;
use log::{error, warn};
-use yansi::{Color, Paint};
mod archive;
mod args;
@@ -57,10 +57,6 @@ fn main() -> Result<()> {
#[actix_web::main(miniserve)]
async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> {
- if cfg!(windows) && !Paint::enable_windows_ascii() {
- Paint::disable();
- }
-
let log_level = if miniserve_config.verbose {
simplelog::LevelFilter::Info
} else {
@@ -69,9 +65,15 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> {
simplelog::TermLogger::init(
log_level,
- simplelog::Config::default(),
+ simplelog::ConfigBuilder::new()
+ .set_time_format_rfc2822()
+ .build(),
simplelog::TerminalMode::Mixed,
- simplelog::ColorChoice::Auto,
+ if io::stdout().is_terminal() {
+ simplelog::ColorChoice::Auto
+ } else {
+ simplelog::ColorChoice::Never
+ },
)
.or_else(|_| simplelog::SimpleLogger::init(log_level, simplelog::Config::default()))
.expect("Couldn't initialize logger");
@@ -102,7 +104,7 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> {
println!(
"{name} v{version}",
- name = Paint::new("miniserve").bold(),
+ name = "miniserve".bold(),
version = crate_version!()
);
if !miniserve_config.path_explicitly_chosen {
@@ -176,7 +178,7 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> {
let display_sockets = socket_addresses
.iter()
- .map(|sock| Color::Green.paint(sock.to_string()).bold().to_string())
+ .map(|sock| sock.to_string().green().bold().to_string())
.collect::<Vec<_>>();
let srv = actix_web::HttpServer::new(move || {
@@ -220,13 +222,13 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> {
println!("Bound to {}", display_sockets.join(", "));
- println!("Serving path {}", Color::Yellow.paint(path_string).bold());
+ println!("Serving path {}", path_string.yellow().bold());
println!(
"Available at (non-exhaustive list):\n {}\n",
display_urls
.iter()
- .map(|url| Color::Green.paint(url).bold().to_string())
+ .map(|url| url.green().bold().to_string())
.collect::<Vec<_>>()
.join("\n "),
);
@@ -239,7 +241,7 @@ async fn run(miniserve_config: MiniserveConfig) -> Result<(), ContextualError> {
{
match QRBuilder::new(url.clone()).ecl(consts::QR_EC_LEVEL).build() {
Ok(qr) => {
- println!("QR code for {}:", Color::Green.paint(url).bold());
+ println!("QR code for {}:", url.green().bold());
qr.print();
}
Err(e) => {