@@ -14,6 +14,7 @@ pub enum PackageManager {
14
14
Yarn ,
15
15
YarnBerry ,
16
16
Bun ,
17
+ Deno ,
17
18
}
18
19
19
20
impl Display for PackageManager {
@@ -27,53 +28,34 @@ impl Display for PackageManager {
27
28
PackageManager :: Yarn => "yarn" ,
28
29
PackageManager :: YarnBerry => "yarn berry" ,
29
30
PackageManager :: Bun => "bun" ,
31
+ PackageManager :: Deno => "deno" ,
30
32
}
31
33
)
32
34
}
33
35
}
34
36
35
37
impl PackageManager {
36
38
pub fn from_project < P : AsRef < Path > > ( path : P ) -> Vec < Self > {
37
- let mut use_npm = false ;
38
- let mut use_pnpm = false ;
39
- let mut use_yarn = false ;
40
- let mut use_bun = false ;
39
+ let mut found = Vec :: new ( ) ;
41
40
42
41
if let Ok ( entries) = std:: fs:: read_dir ( path) {
43
42
for entry in entries. flatten ( ) {
44
43
let path = entry. path ( ) ;
45
44
let name = path. file_name ( ) . unwrap ( ) . to_string_lossy ( ) ;
46
45
if name. as_ref ( ) == "package-lock.json" {
47
- use_npm = true ;
46
+ found . push ( PackageManager :: Npm ) ;
48
47
} else if name. as_ref ( ) == "pnpm-lock.yaml" {
49
- use_pnpm = true ;
48
+ found . push ( PackageManager :: Pnpm ) ;
50
49
} else if name. as_ref ( ) == "yarn.lock" {
51
- use_yarn = true ;
50
+ found . push ( PackageManager :: Yarn ) ;
52
51
} else if name. as_ref ( ) == "bun.lockb" {
53
- use_bun = true ;
52
+ found. push ( PackageManager :: Bun ) ;
53
+ } else if name. as_ref ( ) == "deno.lock" {
54
+ found. push ( PackageManager :: Deno ) ;
54
55
}
55
56
}
56
57
}
57
58
58
- if !use_npm && !use_pnpm && !use_yarn && !use_bun {
59
- return Vec :: new ( ) ;
60
- }
61
-
62
- let mut found = Vec :: new ( ) ;
63
-
64
- if use_npm {
65
- found. push ( PackageManager :: Npm ) ;
66
- }
67
- if use_pnpm {
68
- found. push ( PackageManager :: Pnpm ) ;
69
- }
70
- if use_yarn {
71
- found. push ( PackageManager :: Yarn ) ;
72
- }
73
- if use_bun {
74
- found. push ( PackageManager :: Bun ) ;
75
- }
76
-
77
59
found
78
60
}
79
61
@@ -84,6 +66,7 @@ impl PackageManager {
84
66
PackageManager :: Npm => cross_command ( "npm" ) ,
85
67
PackageManager :: Pnpm => cross_command ( "pnpm" ) ,
86
68
PackageManager :: Bun => cross_command ( "bun" ) ,
69
+ PackageManager :: Deno => cross_command ( "deno" ) ,
87
70
}
88
71
}
89
72
@@ -175,15 +158,6 @@ impl PackageManager {
175
158
. output ( ) ?,
176
159
Some ( regex:: Regex :: new ( "\" Version\" :\" ([\\ da-zA-Z\\ -\\ .]+)\" " ) . unwrap ( ) ) ,
177
160
) ,
178
- PackageManager :: Npm => (
179
- cross_command ( "npm" )
180
- . arg ( "list" )
181
- . arg ( name)
182
- . args ( [ "version" , "--depth" , "0" ] )
183
- . current_dir ( app_dir)
184
- . output ( ) ?,
185
- None ,
186
- ) ,
187
161
PackageManager :: Pnpm => (
188
162
cross_command ( "pnpm" )
189
163
. arg ( "list" )
@@ -193,8 +167,8 @@ impl PackageManager {
193
167
. output ( ) ?,
194
168
None ,
195
169
) ,
196
- // Bun doesn 't support `list` command
197
- PackageManager :: Bun => (
170
+ // Bun and Deno don 't support `list` command
171
+ PackageManager :: Npm | PackageManager :: Bun | PackageManager :: Deno => (
198
172
cross_command ( "npm" )
199
173
. arg ( "list" )
200
174
. arg ( name)
0 commit comments