mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +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},
|
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::{
|
pub use self::{
|
||||||
gen_assists_docs::{generate_assists_docs, generate_assists_tests},
|
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>> {
|
fn extract_comment_blocks(text: &str) -> Vec<Vec<String>> {
|
||||||
do_extract_comment_blocks(text, false).into_iter().map(|(_line, block)| block).collect()
|
do_extract_comment_blocks(text, false).into_iter().map(|(_line, block)| block).collect()
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
use std::{fmt, fs, path::Path};
|
use std::{fmt, fs, path::Path};
|
||||||
|
|
||||||
use crate::{
|
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,
|
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<()> {
|
pub fn generate_assists_docs(mode: Mode) -> Result<()> {
|
||||||
let assists = Assist::collect()?;
|
let assists = Assist::collect()?;
|
||||||
let contents = assists.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n");
|
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");
|
let dst = project_root().join("docs/user/generated_assists.adoc");
|
||||||
codegen::update(&dst, &contents, mode)
|
codegen::update(&dst, &contents, mode)
|
||||||
}
|
}
|
||||||
|
@ -134,7 +134,7 @@ r#####"
|
||||||
|
|
||||||
buf.push_str(&test)
|
buf.push_str(&test)
|
||||||
}
|
}
|
||||||
let buf = crate::reformat(buf)?;
|
let buf = reformat(buf)?;
|
||||||
codegen::update(&project_root().join(codegen::ASSISTS_TESTS), &buf, mode)
|
codegen::update(&project_root().join(codegen::ASSISTS_TESTS), &buf, mode)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,14 +3,14 @@
|
||||||
use std::{fmt, fs, path::PathBuf};
|
use std::{fmt, fs, path::PathBuf};
|
||||||
|
|
||||||
use crate::{
|
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,
|
project_root, rust_files, Result,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn generate_feature_docs(mode: Mode) -> Result<()> {
|
pub fn generate_feature_docs(mode: Mode) -> Result<()> {
|
||||||
let features = Feature::collect()?;
|
let features = Feature::collect()?;
|
||||||
let contents = features.into_iter().map(|it| it.to_string()).collect::<Vec<_>>().join("\n\n");
|
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");
|
let dst = project_root().join("docs/user/generated_features.adoc");
|
||||||
codegen::update(&dst, &contents, mode)?;
|
codegen::update(&dst, &contents, mode)?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -14,7 +14,7 @@ use ungrammar::{rust_grammar, Grammar, Rule};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
ast_src::{AstEnumSrc, AstNodeSrc, AstSrc, Cardinality, Field, KindsSrc, KINDS_SRC},
|
ast_src::{AstEnumSrc, AstNodeSrc, AstSrc, Cardinality, Field, KindsSrc, KINDS_SRC},
|
||||||
codegen::{self, update, Mode},
|
codegen::{self, reformat, update, Mode},
|
||||||
project_root, Result,
|
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};
|
use crate::{SyntaxKind::{self, *}, SyntaxToken, ast::AstToken};
|
||||||
#(#tokens)*
|
#(#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)
|
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 {
|
fn to_upper_snake_case(s: &str) -> String {
|
||||||
|
|
|
@ -62,17 +62,6 @@ pub fn run_rustfmt(mode: Mode) -> Result<()> {
|
||||||
Ok(())
|
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<()> {
|
fn ensure_rustfmt() -> Result<()> {
|
||||||
let out = run!("rustfmt --version")?;
|
let out = run!("rustfmt --version")?;
|
||||||
if !out.contains("stable") {
|
if !out.contains("stable") {
|
||||||
|
|
Loading…
Reference in a new issue