Skip to content

Commit 79164fd

Browse files
authored
Merge pull request #75 from ktsuench/master
Feature: allow user to pick ASCII art with flag --ascii_language
2 parents 983424d + bc7972e commit 79164fd

File tree

2 files changed

+41
-3
lines changed

2 files changed

+41
-3
lines changed

Diff for: Cargo.toml

+2
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,5 @@ tokei = "10.0"
1515
license = "0.7.1"
1616
bytecount = "0.5.1"
1717
clap = "2.33.0"
18+
strum = "0.16.0"
19+
strum_macros = "0.16.0"

Diff for: src/main.rs

+39-3
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ extern crate license;
55
extern crate tokei;
66
#[macro_use]
77
extern crate clap;
8+
extern crate strum;
9+
#[macro_use]
10+
extern crate strum_macros;
811

912
use colored::Color;
1013
use colored::*;
@@ -40,6 +43,7 @@ struct Info {
4043
repo_size: String,
4144
number_of_lines: usize,
4245
license: String,
46+
custom_logo: Language,
4347
}
4448

4549
impl fmt::Display for Info {
@@ -268,7 +272,8 @@ impl fmt::Display for CommitInfo {
268272
}
269273
}
270274

271-
#[derive(PartialEq, Eq, Hash, Clone)]
275+
#[derive(PartialEq, Eq, Hash, Clone, EnumString)]
276+
#[strum(serialize_all = "lowercase")]
272277
enum Language {
273278
Assembly,
274279
C,
@@ -305,6 +310,7 @@ enum Language {
305310
Perl,
306311
Php,
307312
Zig,
313+
Unknown
308314
}
309315

310316
impl fmt::Display for Language {
@@ -345,6 +351,7 @@ impl fmt::Display for Language {
345351
Language::Perl => write!(f, "Perl"),
346352
Language::Php => write!(f, "Php"),
347353
Language::Zig => write!(f, "Zig"),
354+
Language::Unknown => write!(f, "Unknown"),
348355
}
349356
}
350357
}
@@ -363,8 +370,20 @@ fn main() -> Result<()> {
363370
.long("dir")
364371
.takes_value(true)
365372
.default_value("."))
373+
.arg(Arg::with_name("ascii_language")
374+
.short("a")
375+
.long("ascii_language")
376+
.takes_value(true)
377+
.default_value("")
378+
.help("Overrides showing the dominant language ascii logo"))
366379
.get_matches();
367380
let dir = String::from(matches.value_of("directory").unwrap());
381+
let custom_logo: Language = Language::from_str(
382+
&matches
383+
.value_of("ascii_language")
384+
.unwrap()
385+
.to_lowercase())
386+
.unwrap_or(Language::Unknown);
368387

369388
let tokei_langs = project_languages(&dir);
370389
let languages_stat = get_languages_stat(&tokei_langs).ok_or(Error::SourceCodeNotFound)?;
@@ -395,6 +414,7 @@ fn main() -> Result<()> {
395414
repo_size,
396415
number_of_lines: get_total_loc(&tokei_langs),
397416
license: project_license(&dir)?,
417+
custom_logo,
398418
};
399419

400420
println!("{}", info);
@@ -795,7 +815,14 @@ fn get_all_language_types() -> Vec<tokei::LanguageType> {
795815

796816
impl Info {
797817
pub fn get_ascii(&self) -> &str {
798-
match self.dominant_language {
818+
let language =
819+
if let Language::Unknown = self.custom_logo {
820+
&self.dominant_language
821+
} else {
822+
&self.custom_logo
823+
};
824+
825+
match language {
799826
Language::Assembly => include_str!("../resources/assembly.ascii"),
800827
Language::C => include_str!("../resources/c.ascii"),
801828
Language::Clojure => include_str!("../resources/clojure.ascii"),
@@ -831,12 +858,20 @@ impl Info {
831858
Language::Perl => include_str!("../resources/perl.ascii"),
832859
Language::Php => include_str!("../resources/php.ascii"),
833860
Language::Zig => include_str!("../resources/zig.ascii"),
861+
Language::Unknown => include_str!("../resources/unknown.ascii"),
834862
// _ => include_str!("../resources/unknown.ascii"),
835863
}
836864
}
837865

838866
fn colors(&self) -> Vec<Color> {
839-
match self.dominant_language {
867+
let language =
868+
if let Language::Unknown = self.custom_logo {
869+
&self.dominant_language
870+
} else {
871+
&self.custom_logo
872+
};
873+
874+
match language {
840875
Language::Assembly => vec![Color::Cyan],
841876
Language::C => vec![Color::BrightBlue, Color::Blue],
842877
Language::Clojure => vec![Color::BrightBlue, Color::BrightGreen],
@@ -872,6 +907,7 @@ impl Info {
872907
Language::Perl => vec![Color::BrightBlue],
873908
Language::Php => vec![Color::BrightWhite],
874909
Language::Zig => vec![Color::Yellow],
910+
Language::Unknown => vec![Color::White],
875911
}
876912
}
877913
}

0 commit comments

Comments
 (0)