@@ -33,7 +33,9 @@ use crate::workspace::ConfigReadError;
33
33
use crate :: workspace:: Workspace ;
34
34
35
35
use super :: ResolveWorkspaceMemberError ;
36
+ use super :: ResolveWorkspaceMemberErrorKind ;
36
37
use super :: ResolveWorkspacePatchError ;
38
+ use super :: ResolveWorkspacePatchErrorKind ;
37
39
use super :: UrlRc ;
38
40
use super :: VendorEnablement ;
39
41
use super :: WorkspaceDiscoverError ;
@@ -308,7 +310,7 @@ fn discover_workspace_config_files_for_single_dir<
308
310
start_dir = Some ( dir) ;
309
311
}
310
312
DirOrConfigFile :: ConfigFile ( file) => {
311
- let specifier = url_from_file_path ( file) . unwrap ( ) ;
313
+ let specifier = url_from_file_path ( file) ? ;
312
314
let config_file = new_rc (
313
315
ConfigFile :: from_specifier ( sys, specifier. clone ( ) )
314
316
. map_err ( ConfigReadError :: DenoJsonRead ) ?,
@@ -637,11 +639,12 @@ fn handle_workspace_with_members<TSys: FsRead + FsMetadata + FsReadDir>(
637
639
if let Some ( name) = deno_json. json . name . as_deref ( ) {
638
640
if let Some ( other_member_url) = seen_names. get ( name) {
639
641
return Err (
640
- ResolveWorkspaceMemberError :: DuplicatePackageName {
642
+ ResolveWorkspaceMemberErrorKind :: DuplicatePackageName {
641
643
name : name. to_string ( ) ,
642
644
deno_json_url : deno_json. specifier . clone ( ) ,
643
645
other_deno_json_url : ( * other_member_url) . clone ( ) ,
644
646
}
647
+ . into_box ( )
645
648
. into ( ) ,
646
649
) ;
647
650
} else {
@@ -679,10 +682,13 @@ fn resolve_workspace_for_config_folder<
679
682
let member = ensure_trailing_slash ( raw_member) ;
680
683
let member_dir_url = root_config_file_directory_url
681
684
. join ( & member)
682
- . map_err ( |err| ResolveWorkspaceMemberError :: InvalidMember {
683
- base : root_config_folder. folder_url ( ) ,
684
- member : raw_member. to_owned ( ) ,
685
- source : err,
685
+ . map_err ( |err| {
686
+ ResolveWorkspaceMemberErrorKind :: InvalidMember {
687
+ base : root_config_folder. folder_url ( ) ,
688
+ member : raw_member. to_owned ( ) ,
689
+ source : err,
690
+ }
691
+ . into_box ( )
686
692
} ) ?;
687
693
Ok ( member_dir_url)
688
694
} ;
@@ -692,10 +698,13 @@ fn resolve_workspace_for_config_folder<
692
698
. as_str ( )
693
699
. starts_with ( root_config_file_directory_url. as_str ( ) )
694
700
{
695
- return Err ( ResolveWorkspaceMemberError :: NonDescendant {
696
- workspace_url : root_config_file_directory_url. clone ( ) ,
697
- member_url : member_dir_url. clone ( ) ,
698
- } ) ;
701
+ return Err (
702
+ ResolveWorkspaceMemberErrorKind :: NonDescendant {
703
+ workspace_url : root_config_file_directory_url. clone ( ) ,
704
+ member_url : member_dir_url. clone ( ) ,
705
+ }
706
+ . into_box ( ) ,
707
+ ) ;
699
708
}
700
709
Ok ( ( ) )
701
710
} ;
@@ -708,21 +717,23 @@ fn resolve_workspace_for_config_folder<
708
717
}
709
718
710
719
let maybe_config_folder =
711
- load_config_folder ( & url_to_file_path ( member_dir_url) . unwrap ( ) ) ?;
720
+ load_config_folder ( & url_to_file_path ( member_dir_url) ? ) ?;
712
721
maybe_config_folder. ok_or_else ( || {
713
722
// it's fine this doesn't use all the possible config file names
714
723
// as this is only used to enhance the error message
715
724
if member_dir_url. as_str ( ) . ends_with ( "/deno.json/" )
716
725
|| member_dir_url. as_str ( ) . ends_with ( "/deno.jsonc/" )
717
726
|| member_dir_url. as_str ( ) . ends_with ( "/package.json/" )
718
727
{
719
- ResolveWorkspaceMemberError :: NotFoundMaybeSpecifiedFile {
728
+ ResolveWorkspaceMemberErrorKind :: NotFoundMaybeSpecifiedFile {
720
729
dir_url : member_dir_url. clone ( ) ,
721
730
}
731
+ . into_box ( )
722
732
} else {
723
- ResolveWorkspaceMemberError :: NotFound {
733
+ ResolveWorkspaceMemberErrorKind :: NotFound {
724
734
dir_url : member_dir_url. clone ( ) ,
725
735
}
736
+ . into_box ( )
726
737
}
727
738
} )
728
739
} ;
@@ -746,12 +757,13 @@ fn resolve_workspace_for_config_folder<
746
757
) ,
747
758
)
748
759
. map_err ( |err| {
749
- ResolveWorkspaceMemberError :: MemberToPattern {
760
+ ResolveWorkspaceMemberErrorKind :: MemberToPattern {
750
761
kind,
751
762
base : root_config_file_directory_url. clone ( ) ,
752
763
member : raw_member. to_string ( ) ,
753
764
source : err,
754
765
}
766
+ . into_box ( )
755
767
} )
756
768
} )
757
769
} )
@@ -816,9 +828,10 @@ fn resolve_workspace_for_config_folder<
816
828
for ( raw_member, member_dir_url) in member_dir_urls {
817
829
if member_dir_url == root_config_file_directory_url {
818
830
return Err (
819
- ResolveWorkspaceMemberError :: InvalidSelfReference {
831
+ ResolveWorkspaceMemberErrorKind :: InvalidSelfReference {
820
832
member : raw_member. to_string ( ) ,
821
833
}
834
+ . into_box ( )
822
835
. into ( ) ,
823
836
) ;
824
837
}
@@ -828,9 +841,10 @@ fn resolve_workspace_for_config_folder<
828
841
. insert ( new_rc ( member_dir_url. clone ( ) ) , member_config_folder) ;
829
842
if previous_member. is_some ( ) {
830
843
return Err (
831
- ResolveWorkspaceMemberError :: Duplicate {
844
+ ResolveWorkspaceMemberErrorKind :: Duplicate {
832
845
member : raw_member. to_string ( ) ,
833
846
}
847
+ . into_box ( )
834
848
. into ( ) ,
835
849
) ;
836
850
}
@@ -860,7 +874,7 @@ fn resolve_workspace_for_config_folder<
860
874
}
861
875
for pkg_json_path in pkg_json_paths {
862
876
let member_dir_url =
863
- url_from_directory_path ( pkg_json_path. parent ( ) . unwrap ( ) ) . unwrap ( ) ;
877
+ url_from_directory_path ( pkg_json_path. parent ( ) . unwrap ( ) ) ? ;
864
878
member_dir_urls. insert ( member_dir_url) ;
865
879
}
866
880
@@ -872,20 +886,28 @@ fn resolve_workspace_for_config_folder<
872
886
let member_config_folder =
873
887
match find_member_config_folder ( & member_dir_url) {
874
888
Ok ( config_folder) => config_folder,
875
- Err ( ResolveWorkspaceMemberError :: NotFound { dir_url } ) => {
876
- // enhance the error to say we didn't find a package.json
889
+ Err ( err) => {
877
890
return Err (
878
- ResolveWorkspaceMemberError :: NotFoundPackageJson { dir_url }
879
- . into ( ) ,
891
+ match err. into_kind ( ) {
892
+ ResolveWorkspaceMemberErrorKind :: NotFound { dir_url } => {
893
+ // enhance the error to say we didn't find a package.json
894
+ ResolveWorkspaceMemberErrorKind :: NotFoundPackageJson {
895
+ dir_url,
896
+ }
897
+ . into_box ( )
898
+ }
899
+ err => err. into_box ( ) ,
900
+ }
901
+ . into ( ) ,
880
902
) ;
881
903
}
882
- Err ( err) => return Err ( err. into ( ) ) ,
883
904
} ;
884
905
if member_config_folder. pkg_json ( ) . is_none ( ) {
885
906
return Err (
886
- ResolveWorkspaceMemberError :: NotFoundPackageJson {
907
+ ResolveWorkspaceMemberErrorKind :: NotFoundPackageJson {
887
908
dir_url : member_dir_url,
888
909
}
910
+ . into_box ( )
889
911
. into ( ) ,
890
912
) ;
891
913
}
@@ -950,7 +972,8 @@ fn resolve_patch_config_folders<TSys: FsRead + FsMetadata + FsReadDir>(
950
972
WorkspaceDiscoverErrorKind :: ResolvePatch {
951
973
base : root_config_file_directory_url. clone ( ) ,
952
974
patch : raw_member. to_string ( ) ,
953
- source : ResolveWorkspacePatchError :: WorkspaceMemberNotAllowed ,
975
+ source : ResolveWorkspacePatchErrorKind :: WorkspaceMemberNotAllowed
976
+ . into_box ( ) ,
954
977
}
955
978
. into ( ) ,
956
979
) ) ;
@@ -972,12 +995,15 @@ fn resolve_patch_member_config_folders<
972
995
& Path ,
973
996
) -> Result < Option < ConfigFolder > , ConfigReadError > ,
974
997
) -> Result < BTreeMap < UrlRc , ConfigFolder > , ResolveWorkspacePatchError > {
975
- let patch_dir_path = url_to_file_path ( patch_dir_url) . unwrap ( ) ;
998
+ let patch_dir_path = url_to_file_path ( patch_dir_url) ? ;
976
999
let maybe_config_folder = load_config_folder ( & patch_dir_path) ?;
977
1000
let Some ( config_folder) = maybe_config_folder else {
978
- return Err ( ResolveWorkspacePatchError :: NotFound {
979
- dir_url : patch_dir_url. clone ( ) ,
980
- } ) ;
1001
+ return Err (
1002
+ ResolveWorkspacePatchErrorKind :: NotFound {
1003
+ dir_url : patch_dir_url. clone ( ) ,
1004
+ }
1005
+ . into_box ( ) ,
1006
+ ) ;
981
1007
} ;
982
1008
if config_folder. has_workspace_members ( ) {
983
1009
let maybe_vendor_dir =
@@ -989,7 +1015,7 @@ fn resolve_patch_member_config_folders<
989
1015
& mut HashMap :: new ( ) ,
990
1016
& load_config_folder,
991
1017
)
992
- . map_err ( |err| ResolveWorkspacePatchError :: Workspace ( Box :: new ( err) ) ) ?;
1018
+ . map_err ( |err| ResolveWorkspacePatchErrorKind :: Workspace ( Box :: new ( err) ) ) ?;
993
1019
raw_workspace
994
1020
. members
995
1021
. insert ( new_rc ( raw_workspace. root . folder_url ( ) ) , raw_workspace. root ) ;
0 commit comments