@@ -9,7 +9,7 @@ toml = "0.8.10"
99---
1010
1111use cargo_util_schemas:: manifest:: TomlManifest ;
12- use std:: { fs , path:: PathBuf } ;
12+ use std:: { ffi :: OsStr , fs , io :: Write as _ , path:: PathBuf } ;
1313
1414fn main ( ) {
1515 let workspace_root = get_workspace_root ( ) ;
@@ -21,13 +21,34 @@ fn main() {
2121 let workspace_manifest: TomlManifest =
2222 toml:: from_str ( & workspace_manifest) . expect ( "deserialize workspace manifest" ) ;
2323
24+ // Extract dependencies.
2425 let dependencies = workspace_manifest
2526 . workspace
27+ . as_ref ( )
2628 . expect ( "expected workspace" )
2729 . dependencies
30+ . as_ref ( )
2831 . expect ( "expected workspace dependencies" ) ;
29- let crate_names: Vec < & str > = dependencies. iter ( ) . map ( |( name, _) | name. as_str ( ) ) . collect ( ) ;
32+ let mut crate_names: Vec < String > = dependencies. iter ( ) . map ( |( name, _) | name. to_string ( ) ) . collect ( ) ;
3033
34+ // Extract workspace members.
35+ for relative_path in workspace_manifest
36+ . workspace
37+ . as_ref ( )
38+ . expect ( "expected workspace" )
39+ . members
40+ . as_ref ( )
41+ . expect ( "expected workspace members" )
42+ . into_iter ( ) {
43+ let crate_name = PathBuf :: from ( relative_path)
44+ . file_stem ( )
45+ . and_then ( OsStr :: to_str)
46+ . expect ( "expected crate name" )
47+ . to_string ( ) ;
48+ crate_names. push ( crate_name) ;
49+ }
50+
51+ crate_names. sort ( ) ;
3152 let crate_names_path = workspace_root
3253 . join ( "eng/dict/crates.txt" )
3354 . canonicalize ( )
@@ -37,7 +58,9 @@ fn main() {
3758 "Writing {} crate names to {crate_names_path:?}" ,
3859 crate_names. len( )
3960 ) ;
40- fs:: write ( crate_names_path, crate_names. join ( "\n " ) ) . expect ( "serialize crate names" )
61+
62+ let mut f = fs:: File :: create ( crate_names_path) . expect ( "create eng/dict/crates.txt" ) ;
63+ writeln ! ( f, "{}" , crate_names. join( "\n " ) ) . expect ( "serialize crate names" ) ;
4164}
4265
4366fn get_workspace_root ( ) -> PathBuf {
0 commit comments