@@ -3,9 +3,9 @@ use std::thread;
33
44use crate :: ecosystems:: {
55 CargoDiscoverer , CargoDiscoveryError , CommandMetadataFetcher , ComposerDiscoverer ,
6- ComposerDiscoveryError , GoDiscoverer , GoDiscoveryError , GradleDiscoverer , GradleDiscoveryError ,
7- NodeDiscoverer , NodeDiscoveryError , PythonDiscoverer , PythonDiscoveryError , RenvDiscoverer ,
8- RenvDiscoveryError , RubyDiscoverer , RubyDiscoveryError ,
6+ ComposerDiscoveryError , DartDiscoverer , DartDiscoveryError , GoDiscoverer , GoDiscoveryError ,
7+ GradleDiscoverer , GradleDiscoveryError , NodeDiscoverer , NodeDiscoveryError , PythonDiscoverer ,
8+ PythonDiscoveryError , RenvDiscoverer , RenvDiscoveryError , RubyDiscoverer , RubyDiscoveryError ,
99} ;
1010use url:: Url ;
1111
@@ -22,6 +22,7 @@ pub enum Framework {
2222 Node ,
2323 Cargo ,
2424 Go ,
25+ Dart ,
2526 Composer ,
2627 Ruby ,
2728 Python ,
@@ -38,6 +39,8 @@ pub enum DiscoveryError {
3839 #[ error( transparent) ]
3940 Go ( Box < GoDiscoveryError > ) ,
4041 #[ error( transparent) ]
42+ Dart ( Box < DartDiscoveryError > ) ,
43+ #[ error( transparent) ]
4144 Composer ( Box < ComposerDiscoveryError > ) ,
4245 #[ error( transparent) ]
4346 Ruby ( Box < RubyDiscoveryError > ) ,
@@ -62,6 +65,7 @@ macro_rules! impl_from_discovery_error {
6265impl_from_discovery_error ! ( Node , NodeDiscoveryError ) ;
6366impl_from_discovery_error ! ( Cargo , CargoDiscoveryError ) ;
6467impl_from_discovery_error ! ( Go , GoDiscoveryError ) ;
68+ impl_from_discovery_error ! ( Dart , DartDiscoveryError ) ;
6569impl_from_discovery_error ! ( Composer , ComposerDiscoveryError ) ;
6670impl_from_discovery_error ! ( Ruby , RubyDiscoveryError ) ;
6771impl_from_discovery_error ! ( Python , PythonDiscoveryError ) ;
@@ -83,6 +87,9 @@ pub fn detect_frameworks(project_root: &Path) -> Vec<Framework> {
8387 if project_root. join ( "go.mod" ) . exists ( ) {
8488 frameworks. push ( Framework :: Go ) ;
8589 }
90+ if project_root. join ( "pubspec.yaml" ) . exists ( ) {
91+ frameworks. push ( Framework :: Dart ) ;
92+ }
8693 if project_root. join ( "composer.lock" ) . exists ( ) || project_root. join ( "composer.json" ) . exists ( ) {
8794 frameworks. push ( Framework :: Composer ) ;
8895 }
@@ -132,6 +139,10 @@ pub fn discover_for_frameworks(
132139 let discoverer = GoDiscoverer :: new ( ) ;
133140 discoverer. discover ( project_root) ?
134141 }
142+ Framework :: Dart => {
143+ let discoverer = DartDiscoverer :: new ( ) ;
144+ discoverer. discover ( project_root) ?
145+ }
135146 Framework :: Composer => {
136147 let discoverer = ComposerDiscoverer :: new ( ) ;
137148 discoverer. discover ( project_root) ?
0 commit comments