File tree 1 file changed +13
-0
lines changed
1 file changed +13
-0
lines changed Original file line number Diff line number Diff line change 1
1
use {
2
2
crate :: onefetch:: error:: * ,
3
+ regex:: Regex ,
3
4
std:: collections:: HashMap ,
4
5
std:: { ffi:: OsStr , fs} ,
5
6
} ;
6
7
7
8
pub enum PackageManager {
8
9
Npm ,
10
+ GoModules ,
9
11
}
10
12
11
13
impl std:: fmt:: Display for PackageManager {
12
14
fn fmt ( & self , f : & mut std:: fmt:: Formatter ) -> std:: fmt:: Result {
13
15
match * self {
14
16
PackageManager :: Npm => write ! ( f, "Npm" ) ,
17
+ PackageManager :: GoModules => write ! ( f, "Go Modules" ) ,
15
18
}
16
19
}
17
20
}
@@ -28,11 +31,21 @@ fn npm(contents: &str) -> Option<i32> {
28
31
Some ( parsed[ "dependencies" ] . len ( ) as i32 )
29
32
}
30
33
34
+ fn gomodules ( contents : & str ) -> Option < i32 > {
35
+ let count = Regex :: new ( r"v[0-9]." ) . unwrap ( ) . find_iter ( contents) . count ( ) ;
36
+
37
+ Some ( count as i32 )
38
+ }
39
+
31
40
impl Detector {
32
41
pub fn new ( ) -> Self {
33
42
let mut package_managers: HashMap < String , ( DependencyParser , PackageManager ) > =
34
43
HashMap :: new ( ) ;
35
44
package_managers. insert ( String :: from ( "package.json" ) , ( npm, PackageManager :: Npm ) ) ;
45
+ package_managers. insert (
46
+ String :: from ( "go.mod" ) ,
47
+ ( gomodules, PackageManager :: GoModules ) ,
48
+ ) ;
36
49
37
50
Self { package_managers }
38
51
}
You can’t perform that action at this time.
0 commit comments