@@ -6,8 +6,9 @@ use clap::{Parser, ValueEnum, arg, command};
66#[ derive( Debug , Parser ) ]
77#[ command( name = "cargo" , bin_name = "cargo" ) ]
88pub enum Command {
9- /// Recursively finds and optionally wipes all "target" (Rust) or
10- /// "node_modules" (Node) folders that are found in the current path.
9+ /// Recursively finds and optionally wipes all "target" (Rust),
10+ /// "node_modules" (Node), or ".terraform" (Terraform) folders that
11+ /// are found in the current path.
1112 /// Add the `-w` flag to wipe all folders found. USE WITH CAUTION!
1213 Wipe ( Args ) ,
1314}
@@ -33,12 +34,14 @@ pub struct Args {
3334pub enum LanguageEnum {
3435 Node ,
3536 Rust ,
37+ Terraform ,
3638}
3739
3840#[ derive( Debug , PartialEq , Eq ) ]
3941pub enum DirectoryEnum {
4042 NodeModules ,
4143 Target ,
44+ Terraform ,
4245}
4346
4447impl str:: FromStr for LanguageEnum {
@@ -48,9 +51,10 @@ impl str::FromStr for LanguageEnum {
4851 match value. to_lowercase ( ) . trim ( ) {
4952 "node" => Ok ( LanguageEnum :: Node ) ,
5053 "rust" => Ok ( LanguageEnum :: Rust ) ,
54+ "terraform" => Ok ( LanguageEnum :: Terraform ) ,
5155 _ => Err ( io:: Error :: new (
5256 io:: ErrorKind :: InvalidInput ,
53- "Valid options are: node | rust" ,
57+ "Valid options are: node | rust | terraform " ,
5458 ) ) ,
5559 }
5660 }
@@ -61,6 +65,7 @@ impl fmt::Display for LanguageEnum {
6165 match self {
6266 LanguageEnum :: Node => write ! ( f, "node" ) ,
6367 LanguageEnum :: Rust => write ! ( f, "rust" ) ,
68+ LanguageEnum :: Terraform => write ! ( f, "terraform" ) ,
6469 }
6570 }
6671}
@@ -70,6 +75,7 @@ impl From<LanguageEnum> for DirectoryEnum {
7075 match language {
7176 LanguageEnum :: Node => DirectoryEnum :: NodeModules ,
7277 LanguageEnum :: Rust => DirectoryEnum :: Target ,
78+ LanguageEnum :: Terraform => DirectoryEnum :: Terraform ,
7379 }
7480 }
7581}
@@ -79,6 +85,7 @@ impl From<&LanguageEnum> for DirectoryEnum {
7985 match language {
8086 LanguageEnum :: Node => DirectoryEnum :: NodeModules ,
8187 LanguageEnum :: Rust => DirectoryEnum :: Target ,
88+ LanguageEnum :: Terraform => DirectoryEnum :: Terraform ,
8289 }
8390 }
8491}
@@ -88,6 +95,7 @@ impl fmt::Display for DirectoryEnum {
8895 match self {
8996 DirectoryEnum :: NodeModules => write ! ( f, "node_modules" ) ,
9097 DirectoryEnum :: Target => write ! ( f, "target" ) ,
98+ DirectoryEnum :: Terraform => write ! ( f, ".terraform" ) ,
9199 }
92100 }
93101}
@@ -103,6 +111,7 @@ mod tests {
103111 #[ rstest]
104112 #[ case( "node" , LanguageEnum :: Node ) ]
105113 #[ case( "rust" , LanguageEnum :: Rust ) ]
114+ #[ case( "terraform" , LanguageEnum :: Terraform ) ]
106115 #[ case( "RUST" , LanguageEnum :: Rust ) ]
107116 #[ case( "ruSt " , LanguageEnum :: Rust ) ]
108117 fn language_string_to_enum ( #[ case] language_string : & str , #[ case] language_enum : LanguageEnum ) {
@@ -120,19 +129,24 @@ mod tests {
120129 let err = result. err ( ) . unwrap ( ) ;
121130
122131 assert_eq ! ( err. kind( ) , io:: ErrorKind :: InvalidInput ) ;
123- assert_eq ! ( err. to_string( ) , "Valid options are: node | rust" ) ;
132+ assert_eq ! (
133+ err. to_string( ) ,
134+ "Valid options are: node | rust | terraform"
135+ ) ;
124136 }
125137
126138 #[ rstest]
127139 #[ case( LanguageEnum :: Node , "node" ) ]
128140 #[ case( LanguageEnum :: Rust , "rust" ) ]
141+ #[ case( LanguageEnum :: Terraform , "terraform" ) ]
129142 fn language_enum_to_string ( #[ case] language_enum : LanguageEnum , #[ case] language_string : & str ) {
130143 assert_eq ! ( language_enum. to_string( ) , language_string) ;
131144 }
132145
133146 #[ rstest]
134147 #[ case( LanguageEnum :: Node , DirectoryEnum :: NodeModules ) ]
135148 #[ case( LanguageEnum :: Rust , DirectoryEnum :: Target ) ]
149+ #[ case( LanguageEnum :: Terraform , DirectoryEnum :: Terraform ) ]
136150 fn language_enum_to_directory_enum (
137151 #[ case] language_enum : LanguageEnum ,
138152 #[ case] expected_directory_enum : DirectoryEnum ,
@@ -144,6 +158,7 @@ mod tests {
144158 #[ rstest]
145159 #[ case( DirectoryEnum :: NodeModules , "node_modules" ) ]
146160 #[ case( DirectoryEnum :: Target , "target" ) ]
161+ #[ case( DirectoryEnum :: Terraform , ".terraform" ) ]
147162 fn directory_enum_to_string (
148163 #[ case] directory_enum : DirectoryEnum ,
149164 #[ case] directory_string : & str ,
0 commit comments