diff options
| author | Matt Lebl <lebl.matt@gmail.com> | 2021-03-19 02:16:07 -0700 |
|---|---|---|
| committer | Matt Lebl <lebl.matt@gmail.com> | 2021-03-19 02:16:07 -0700 |
| commit | 8d62a9963708dbecd9312e8bcc4b47049c72d155 (patch) | |
| tree | 3c5b973e1f1250624b709544e0d60bd607bf87a1 | |
| parent | 0d894e6ff739943901e1ae8c904582e5c2f843bd (diff) | |
feat: Replace emojis when NO_EMOJI env variable present
| -rw-r--r-- | src/exercise.rs | 7 | ||||
| -rw-r--r-- | src/ui.rs | 44 | ||||
| -rw-r--r-- | src/verify.rs | 15 |
3 files changed, 53 insertions, 13 deletions
diff --git a/src/exercise.rs b/src/exercise.rs index 18e8d5a..2c5d835 100644 --- a/src/exercise.rs +++ b/src/exercise.rs @@ -1,3 +1,4 @@ +use std::env; use regex::Regex; use serde::Deserialize; use std::fmt::{self, Display, Formatter}; @@ -126,8 +127,12 @@ name = "{}" path = "{}.rs""#, self.name, self.name, self.name ); + let cargo_toml_error_msg = match env::var("NO_EMOJI").is_ok() { + true => "Failed to write Clippy Cargo.toml file.", + false => "Failed to write 📎 Clippy 📎 Cargo.toml file." + }; fs::write(CLIPPY_CARGO_TOML_PATH, cargo_toml) - .expect("Failed to write 📎 Clippy 📎 Cargo.toml file."); + .expect(cargo_toml_error_msg); // To support the ability to run the clipy exercises, build // an executable, in addition to running clippy. With a // compilation failure, this would silently fail. But we expect @@ -1,23 +1,47 @@ macro_rules! warn { ($fmt:literal, $ex:expr) => {{ + use std::env; use console::{style, Emoji}; let formatstr = format!($fmt, $ex); - println!( - "{} {}", - style(Emoji("⚠️ ", "!")).red(), - style(formatstr).red() - ); + match env::var("NO_EMOJI").is_ok() { + true => { + println!( + "{} {}", + style("!").red(), + style(formatstr).red() + ); + }, + false => { + println!( + "{} {}", + style(Emoji("⚠️ ", "!")).red(), + style(formatstr).red() + ); + } + } }}; } macro_rules! success { ($fmt:literal, $ex:expr) => {{ + use std::env; use console::{style, Emoji}; let formatstr = format!($fmt, $ex); - println!( - "{} {}", - style(Emoji("✅", "✓")).green(), - style(formatstr).green() - ); + match env::var("NO_EMOJI").is_ok() { + true => { + println!( + "{} {}", + style("✓").green(), + style(formatstr).green() + ); + }, + false => { + println!( + "{} {}", + style(Emoji("✅", "✓")).green(), + style(formatstr).green() + ); + } + } }}; } diff --git a/src/verify.rs b/src/verify.rs index 00e45c8..04acfc6 100644 --- a/src/verify.rs +++ b/src/verify.rs @@ -1,3 +1,4 @@ +use std::env; use crate::exercise::{CompiledExercise, Exercise, Mode, State}; use console::style; use indicatif::ProgressBar; @@ -137,14 +138,24 @@ fn prompt_for_completion(exercise: &Exercise, prompt_output: Option<String>) -> State::Pending(context) => context, }; + let no_emoji = env::var("NO_EMOJI").is_ok(); + + let clippy_success_msg = match no_emoji { + true => "The code is compiling, and Clippy is happy!", + false => "The code is compiling, and 📎 Clippy 📎 is happy!" + }; + let success_msg = match exercise.mode { Mode::Compile => "The code is compiling!", Mode::Test => "The code is compiling, and the tests pass!", - Mode::Clippy => "The code is compiling, and 📎 Clippy 📎 is happy!", + Mode::Clippy => clippy_success_msg, }; println!(); - println!("🎉 🎉 {} 🎉 🎉", success_msg); + match no_emoji { + true => println!("~*~ {} ~*~", success_msg), + false => println!("🎉 🎉 {} 🎉 🎉", success_msg) + }; println!(); if let Some(output) = prompt_output { |
