mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 04:53:34 +00:00
Mention that generated .adocs are generaterd
This commit is contained in:
parent
0b2b9a5508
commit
b82d967182
5 changed files with 26 additions and 21 deletions
|
@ -15,7 +15,11 @@ use std::{
|
|||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
use crate::{not_bash::fs2, project_root, Result};
|
||||
use crate::{
|
||||
ensure_rustfmt,
|
||||
not_bash::{fs2, pushenv, run},
|
||||
project_root, Result,
|
||||
};
|
||||
|
||||
pub use self::{
|
||||
gen_assists_docs::{generate_assists_docs, generate_assists_tests},
|
||||
|
@ -62,6 +66,18 @@ fn update(path: &Path, contents: &str, mode: Mode) -> Result<()> {
|
|||
}
|
||||
}
|
||||
|
||||
const PREAMBLE: &str = "Generated file, do not edit by hand, see `xtask/src/codegen`";
|
||||
|
||||
fn reformat(text: impl std::fmt::Display) -> Result<String> {
|
||||
let _e = pushenv("RUSTUP_TOOLCHAIN", "stable");
|
||||
ensure_rustfmt()?;
|
||||
let stdout = run!(
|
||||
"rustfmt --config-path {} --config fn_single_line=true", project_root().join("rustfmt.toml").display();
|
||||
<text.to_string().as_bytes()
|
||||
)?;
|
||||
Ok(format!("//! {}\n\n{}\n", PREAMBLE, stdout))
|
||||
}
|
||||
|
||||
fn extract_comment_blocks(text: &str) -> Vec<Vec<String>> {
|
||||
do_extract_comment_blocks(text, false).into_iter().map(|(_line, block)| block).collect()
|
||||
}
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
use std::{fmt, fs, path::Path};
|
||||
|
||||
use crate::{
|
||||
codegen::{self, extract_comment_blocks_with_empty_lines, Location, Mode},
|
||||
codegen::{self, extract_comment_blocks_with_empty_lines, reformat, Location, Mode, PREAMBLE},
|
||||
project_root, rust_files, Result,
|
||||
};
|
||||
|
||||
|
@ -15,7 +15,7 @@ pub fn generate_assists_tests(mode: Mode) -> Result<()> {
|
|||
pub fn generate_assists_docs(mode: Mode) -> Result<()> {
|
||||
let assists = Assist::collect()?;
|
||||
let contents = assists.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n");
|
||||
let contents = contents.trim().to_string() + "\n";
|
||||
let contents = format!("//{}\n{}\n", PREAMBLE, contents.trim());
|
||||
let dst = project_root().join("docs/user/generated_assists.adoc");
|
||||
codegen::update(&dst, &contents, mode)
|
||||
}
|
||||
|
@ -134,7 +134,7 @@ r#####"
|
|||
|
||||
buf.push_str(&test)
|
||||
}
|
||||
let buf = crate::reformat(buf)?;
|
||||
let buf = reformat(buf)?;
|
||||
codegen::update(&project_root().join(codegen::ASSISTS_TESTS), &buf, mode)
|
||||
}
|
||||
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
use std::{fmt, fs, path::PathBuf};
|
||||
|
||||
use crate::{
|
||||
codegen::{self, extract_comment_blocks_with_empty_lines, Location, Mode},
|
||||
codegen::{self, extract_comment_blocks_with_empty_lines, Location, Mode, PREAMBLE},
|
||||
project_root, rust_files, Result,
|
||||
};
|
||||
|
||||
pub fn generate_feature_docs(mode: Mode) -> Result<()> {
|
||||
let features = Feature::collect()?;
|
||||
let contents = features.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n");
|
||||
let contents = contents.trim().to_string() + "\n";
|
||||
let contents = format!("//{}\n{}\n", PREAMBLE, contents.trim());
|
||||
let dst = project_root().join("docs/user/generated_features.adoc");
|
||||
codegen::update(&dst, &contents, mode)?;
|
||||
Ok(())
|
||||
|
|
|
@ -14,7 +14,7 @@ use ungrammar::{rust_grammar, Grammar, Rule};
|
|||
|
||||
use crate::{
|
||||
ast_src::{AstEnumSrc, AstNodeSrc, AstSrc, Cardinality, Field, KindsSrc, KINDS_SRC},
|
||||
codegen::{self, update, Mode},
|
||||
codegen::{self, reformat, update, Mode},
|
||||
project_root, Result,
|
||||
};
|
||||
|
||||
|
@ -61,7 +61,7 @@ fn generate_tokens(grammar: &AstSrc) -> Result<String> {
|
|||
}
|
||||
});
|
||||
|
||||
let pretty = crate::reformat(quote! {
|
||||
let pretty = reformat(quote! {
|
||||
use crate::{SyntaxKind::{self, *}, SyntaxToken, ast::AstToken};
|
||||
#(#tokens)*
|
||||
})?
|
||||
|
@ -261,7 +261,7 @@ fn generate_nodes(kinds: KindsSrc<'_>, grammar: &AstSrc) -> Result<String> {
|
|||
}
|
||||
}
|
||||
|
||||
let pretty = crate::reformat(res)?;
|
||||
let pretty = reformat(res)?;
|
||||
Ok(pretty)
|
||||
}
|
||||
|
||||
|
@ -383,7 +383,7 @@ fn generate_syntax_kinds(grammar: KindsSrc<'_>) -> Result<String> {
|
|||
}
|
||||
};
|
||||
|
||||
crate::reformat(ast)
|
||||
reformat(ast)
|
||||
}
|
||||
|
||||
fn to_upper_snake_case(s: &str) -> String {
|
||||
|
|
|
@ -62,17 +62,6 @@ pub fn run_rustfmt(mode: Mode) -> Result<()> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn reformat(text: impl std::fmt::Display) -> Result<String> {
|
||||
let _e = pushenv("RUSTUP_TOOLCHAIN", "stable");
|
||||
ensure_rustfmt()?;
|
||||
let stdout = run!(
|
||||
"rustfmt --config-path {} --config fn_single_line=true", project_root().join("rustfmt.toml").display();
|
||||
<text.to_string().as_bytes()
|
||||
)?;
|
||||
let preamble = "Generated file, do not edit by hand, see `xtask/src/codegen`";
|
||||
Ok(format!("//! {}\n\n{}\n", preamble, stdout))
|
||||
}
|
||||
|
||||
fn ensure_rustfmt() -> Result<()> {
|
||||
let out = run!("rustfmt --version")?;
|
||||
if !out.contains("stable") {
|
||||
|
|
Loading…
Reference in a new issue