@@ -14,6 +14,7 @@ pub enum PackageManager {
1414 Yarn ,
1515 YarnBerry ,
1616 Bun ,
17+ Deno ,
1718}
1819
1920impl Display for PackageManager {
@@ -27,53 +28,34 @@ impl Display for PackageManager {
2728 PackageManager :: Yarn => "yarn" ,
2829 PackageManager :: YarnBerry => "yarn berry" ,
2930 PackageManager :: Bun => "bun" ,
31+ PackageManager :: Deno => "deno" ,
3032 }
3133 )
3234 }
3335}
3436
3537impl PackageManager {
3638 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 ( ) ;
4140
4241 if let Ok ( entries) = std:: fs:: read_dir ( path) {
4342 for entry in entries. flatten ( ) {
4443 let path = entry. path ( ) ;
4544 let name = path. file_name ( ) . unwrap ( ) . to_string_lossy ( ) ;
4645 if name. as_ref ( ) == "package-lock.json" {
47- use_npm = true ;
46+ found . push ( PackageManager :: Npm ) ;
4847 } else if name. as_ref ( ) == "pnpm-lock.yaml" {
49- use_pnpm = true ;
48+ found . push ( PackageManager :: Pnpm ) ;
5049 } else if name. as_ref ( ) == "yarn.lock" {
51- use_yarn = true ;
50+ found . push ( PackageManager :: Yarn ) ;
5251 } 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 ) ;
5455 }
5556 }
5657 }
5758
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-
7759 found
7860 }
7961
@@ -84,6 +66,7 @@ impl PackageManager {
8466 PackageManager :: Npm => cross_command ( "npm" ) ,
8567 PackageManager :: Pnpm => cross_command ( "pnpm" ) ,
8668 PackageManager :: Bun => cross_command ( "bun" ) ,
69+ PackageManager :: Deno => cross_command ( "deno" ) ,
8770 }
8871 }
8972
@@ -175,15 +158,6 @@ impl PackageManager {
175158 . output ( ) ?,
176159 Some ( regex:: Regex :: new ( "\" Version\" :\" ([\\ da-zA-Z\\ -\\ .]+)\" " ) . unwrap ( ) ) ,
177160 ) ,
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- ) ,
187161 PackageManager :: Pnpm => (
188162 cross_command ( "pnpm" )
189163 . arg ( "list" )
@@ -193,8 +167,8 @@ impl PackageManager {
193167 . output ( ) ?,
194168 None ,
195169 ) ,
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 => (
198172 cross_command ( "npm" )
199173 . arg ( "list" )
200174 . arg ( name)
0 commit comments