Skip to content

Commit 06be1b1

Browse files
committed
minor: Render more crate information in status command
1 parent 0c3fbba commit 06be1b1

File tree

1 file changed

+42
-13
lines changed

1 file changed

+42
-13
lines changed

crates/ide/src/status.rs

Lines changed: 42 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use ide_db::{
1010
debug::{DebugQueryTable, TableEntry},
1111
Query, QueryTable,
1212
},
13-
CrateId, FileId, FileTextQuery, ParseQuery, SourceDatabase, SourceRootId,
13+
CrateData, FileId, FileTextQuery, ParseQuery, SourceDatabase, SourceRootId,
1414
},
1515
symbol_index::ModuleSymbolsQuery,
1616
};
@@ -54,25 +54,54 @@ pub(crate) fn status(db: &RootDatabase, file_id: Option<FileId>) -> String {
5454
format_to!(buf, "{} block def maps\n", collect_query_count(BlockDefMapQuery.in_db(db)));
5555

5656
if let Some(file_id) = file_id {
57-
format_to!(buf, "\nFile info:\n");
57+
format_to!(buf, "\nCrates for file {}:\n", file_id.index());
5858
let crates = crate::parent_module::crates_for(db, file_id);
5959
if crates.is_empty() {
6060
format_to!(buf, "Does not belong to any crate");
6161
}
6262
let crate_graph = db.crate_graph();
63-
for krate in crates {
64-
let display_crate = |krate: CrateId| match &crate_graph[krate].display_name {
65-
Some(it) => format!("{it}({})", krate.into_raw()),
66-
None => format!("{}", krate.into_raw()),
67-
};
68-
format_to!(buf, "Crate: {}\n", display_crate(krate));
69-
format_to!(buf, "Enabled cfgs: {:?}\n", crate_graph[krate].cfg_options);
70-
let deps = crate_graph[krate]
71-
.dependencies
63+
for crate_id in crates {
64+
let CrateData {
65+
root_file_id,
66+
edition,
67+
version,
68+
display_name,
69+
cfg_options,
70+
potential_cfg_options,
71+
env,
72+
dependencies,
73+
origin,
74+
is_proc_macro,
75+
target_layout,
76+
toolchain,
77+
} = &crate_graph[crate_id];
78+
format_to!(
79+
buf,
80+
"Crate: {}\n",
81+
match display_name {
82+
Some(it) => format!("{it}({})", crate_id.into_raw()),
83+
None => format!("{}", crate_id.into_raw()),
84+
}
85+
);
86+
format_to!(buf, " Root module file id: {}\n", root_file_id.index());
87+
format_to!(buf, " Edition: {}\n", edition);
88+
format_to!(buf, " Version: {}\n", version.as_deref().unwrap_or("n/a"));
89+
format_to!(buf, " Enabled cfgs: {:?}\n", cfg_options);
90+
format_to!(buf, " Potential cfgs: {:?}\n", potential_cfg_options);
91+
format_to!(buf, " Env: {:?}\n", env);
92+
format_to!(buf, " Origin: {:?}\n", origin);
93+
format_to!(buf, " Is a proc macro crate: {}\n", is_proc_macro);
94+
format_to!(buf, " Workspace Target Layout: {:?}\n", target_layout);
95+
format_to!(
96+
buf,
97+
" Workspace Toolchain: {}\n",
98+
toolchain.as_ref().map_or_else(|| "n/a".into(), |v| v.to_string())
99+
);
100+
let deps = dependencies
72101
.iter()
73-
.map(|dep| format!("{}={:?}", dep.name, dep.crate_id))
102+
.map(|dep| format!("{}={}", dep.name, dep.crate_id.into_raw()))
74103
.format(", ");
75-
format_to!(buf, "Dependencies: {}\n", deps);
104+
format_to!(buf, " Dependencies: {}\n", deps);
76105
}
77106
}
78107

0 commit comments

Comments
 (0)