@@ -5,6 +5,9 @@ extern crate license;
5
5
extern crate tokei;
6
6
#[ macro_use]
7
7
extern crate clap;
8
+ extern crate strum;
9
+ #[ macro_use]
10
+ extern crate strum_macros;
8
11
9
12
use colored:: Color ;
10
13
use colored:: * ;
@@ -40,6 +43,7 @@ struct Info {
40
43
repo_size : String ,
41
44
number_of_lines : usize ,
42
45
license : String ,
46
+ custom_logo : Language ,
43
47
}
44
48
45
49
impl fmt:: Display for Info {
@@ -268,7 +272,8 @@ impl fmt::Display for CommitInfo {
268
272
}
269
273
}
270
274
271
- #[ derive( PartialEq , Eq , Hash , Clone ) ]
275
+ #[ derive( PartialEq , Eq , Hash , Clone , EnumString ) ]
276
+ #[ strum( serialize_all = "lowercase" ) ]
272
277
enum Language {
273
278
Assembly ,
274
279
C ,
@@ -305,6 +310,7 @@ enum Language {
305
310
Perl ,
306
311
Php ,
307
312
Zig ,
313
+ Unknown
308
314
}
309
315
310
316
impl fmt:: Display for Language {
@@ -345,6 +351,7 @@ impl fmt::Display for Language {
345
351
Language :: Perl => write ! ( f, "Perl" ) ,
346
352
Language :: Php => write ! ( f, "Php" ) ,
347
353
Language :: Zig => write ! ( f, "Zig" ) ,
354
+ Language :: Unknown => write ! ( f, "Unknown" ) ,
348
355
}
349
356
}
350
357
}
@@ -363,8 +370,20 @@ fn main() -> Result<()> {
363
370
. long ( "dir" )
364
371
. takes_value ( true )
365
372
. 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" ) )
366
379
. get_matches ( ) ;
367
380
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 ) ;
368
387
369
388
let tokei_langs = project_languages ( & dir) ;
370
389
let languages_stat = get_languages_stat ( & tokei_langs) . ok_or ( Error :: SourceCodeNotFound ) ?;
@@ -395,6 +414,7 @@ fn main() -> Result<()> {
395
414
repo_size,
396
415
number_of_lines : get_total_loc ( & tokei_langs) ,
397
416
license : project_license ( & dir) ?,
417
+ custom_logo,
398
418
} ;
399
419
400
420
println ! ( "{}" , info) ;
@@ -795,7 +815,14 @@ fn get_all_language_types() -> Vec<tokei::LanguageType> {
795
815
796
816
impl Info {
797
817
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 {
799
826
Language :: Assembly => include_str ! ( "../resources/assembly.ascii" ) ,
800
827
Language :: C => include_str ! ( "../resources/c.ascii" ) ,
801
828
Language :: Clojure => include_str ! ( "../resources/clojure.ascii" ) ,
@@ -831,12 +858,20 @@ impl Info {
831
858
Language :: Perl => include_str ! ( "../resources/perl.ascii" ) ,
832
859
Language :: Php => include_str ! ( "../resources/php.ascii" ) ,
833
860
Language :: Zig => include_str ! ( "../resources/zig.ascii" ) ,
861
+ Language :: Unknown => include_str ! ( "../resources/unknown.ascii" ) ,
834
862
// _ => include_str!("../resources/unknown.ascii"),
835
863
}
836
864
}
837
865
838
866
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 {
840
875
Language :: Assembly => vec ! [ Color :: Cyan ] ,
841
876
Language :: C => vec ! [ Color :: BrightBlue , Color :: Blue ] ,
842
877
Language :: Clojure => vec ! [ Color :: BrightBlue , Color :: BrightGreen ] ,
@@ -872,6 +907,7 @@ impl Info {
872
907
Language :: Perl => vec ! [ Color :: BrightBlue ] ,
873
908
Language :: Php => vec ! [ Color :: BrightWhite ] ,
874
909
Language :: Zig => vec ! [ Color :: Yellow ] ,
910
+ Language :: Unknown => vec ! [ Color :: White ] ,
875
911
}
876
912
}
877
913
}
0 commit comments