@@ -970,33 +970,34 @@ fn update_manifest_with_new_member(
970970 // in the array already includes the new package's relative path.
971971 // - Add the relative path if the members don't match the new package's path.
972972 // - Create a new members array if there are no members element in the workspace yet.
973- if let Some ( members) = workspace_document
974- . get_mut ( "workspace" )
975- . and_then ( |workspace| workspace. get_mut ( "members" ) )
976- . and_then ( |members| members. as_array_mut ( ) )
977- {
978- for member in members. iter ( ) {
979- let pat = member
980- . as_str ( )
981- . with_context ( || format ! ( "invalid non-string member `{}`" , member) ) ?;
982- let pattern = glob:: Pattern :: new ( pat)
983- . with_context ( || format ! ( "cannot build glob pattern from `{}`" , pat) ) ?;
973+ if let Some ( workspace) = workspace_document. get_mut ( "workspace" ) {
974+ if let Some ( members) = workspace
975+ . get_mut ( "members" )
976+ . and_then ( |members| members. as_array_mut ( ) )
977+ {
978+ for member in members. iter ( ) {
979+ let pat = member
980+ . as_str ( )
981+ . with_context ( || format ! ( "invalid non-string member `{}`" , member) ) ?;
982+ let pattern = glob:: Pattern :: new ( pat)
983+ . with_context ( || format ! ( "cannot build glob pattern from `{}`" , pat) ) ?;
984+
985+ if pattern. matches ( & display_path) {
986+ return Ok ( ( ) ) ;
987+ }
988+ }
984989
985- if pattern. matches ( & display_path) {
986- return Ok ( ( ) ) ;
990+ let was_sorted = is_sorted ( members. iter ( ) . map ( Value :: as_str) ) ;
991+ members. push ( display_path) ;
992+ if was_sorted {
993+ members. sort_by ( |lhs, rhs| lhs. as_str ( ) . cmp ( & rhs. as_str ( ) ) ) ;
987994 }
988- }
995+ } else {
996+ let mut array = Array :: new ( ) ;
997+ array. push ( display_path) ;
989998
990- let was_sorted = is_sorted ( members. iter ( ) . map ( Value :: as_str) ) ;
991- members. push ( display_path) ;
992- if was_sorted {
993- members. sort_by ( |lhs, rhs| lhs. as_str ( ) . cmp ( & rhs. as_str ( ) ) ) ;
999+ workspace_document[ "workspace" ] [ "members" ] = toml_edit:: value ( array) ;
9941000 }
995- } else {
996- let mut array = Array :: new ( ) ;
997- array. push ( display_path) ;
998-
999- workspace_document[ "workspace" ] [ "members" ] = toml_edit:: value ( array) ;
10001001 }
10011002
10021003 write_atomic (
0 commit comments