diff options
author | Dmitry <[email protected]> | 2020-08-14 19:25:08 +0100 |
---|---|---|
committer | Dmitry <[email protected]> | 2020-08-14 19:25:08 +0100 |
commit | 06ff8e6c760ff05f10e868b5d1f9d79e42fbb49c (patch) | |
tree | 7c9c0502dfd402fa48296d17b09feac24a4031f2 /xtask | |
parent | e7899625e64262512c37b42da19fe520dd6c76f2 (diff) |
refactor requirements put forward mkladov
Diffstat (limited to 'xtask')
-rw-r--r-- | xtask/src/codegen.rs | 1 | ||||
-rw-r--r-- | xtask/src/codegen/gen_unstable_future_descriptor.rs | 40 |
2 files changed, 21 insertions, 20 deletions
diff --git a/xtask/src/codegen.rs b/xtask/src/codegen.rs index c7cac50fe..1edb04c2f 100644 --- a/xtask/src/codegen.rs +++ b/xtask/src/codegen.rs | |||
@@ -42,6 +42,7 @@ const ASSISTS_TESTS: &str = "crates/ra_assists/src/tests/generated.rs"; | |||
42 | 42 | ||
43 | const REPOSITORY_URL: &str = "https://github.com/rust-lang/rust"; | 43 | const REPOSITORY_URL: &str = "https://github.com/rust-lang/rust"; |
44 | const UNSTABLE_FEATURE: &str = "crates/ra_ide/src/completion/unstable_feature_descriptor.rs"; | 44 | const UNSTABLE_FEATURE: &str = "crates/ra_ide/src/completion/unstable_feature_descriptor.rs"; |
45 | const REPO_PATH: &str = "src/doc/unstable-book/src"; | ||
45 | 46 | ||
46 | #[derive(Debug, PartialEq, Eq, Clone, Copy)] | 47 | #[derive(Debug, PartialEq, Eq, Clone, Copy)] |
47 | pub enum Mode { | 48 | pub enum Mode { |
diff --git a/xtask/src/codegen/gen_unstable_future_descriptor.rs b/xtask/src/codegen/gen_unstable_future_descriptor.rs index 56065f17d..3f3beb591 100644 --- a/xtask/src/codegen/gen_unstable_future_descriptor.rs +++ b/xtask/src/codegen/gen_unstable_future_descriptor.rs | |||
@@ -2,27 +2,13 @@ | |||
2 | 2 | ||
3 | use crate::codegen::update; | 3 | use crate::codegen::update; |
4 | use crate::codegen::{self, project_root, Mode, Result}; | 4 | use crate::codegen::{self, project_root, Mode, Result}; |
5 | use crate::not_bash::{fs2, pushd, run}; | ||
6 | use proc_macro2::TokenStream; | ||
5 | use quote::quote; | 7 | use quote::quote; |
6 | use std::fs; | 8 | use std::path::PathBuf; |
7 | use std::process::Command; | ||
8 | use walkdir::WalkDir; | 9 | use walkdir::WalkDir; |
9 | 10 | ||
10 | pub fn generate_unstable_future_descriptor(mode: Mode) -> Result<()> { | 11 | fn generate_descriptor(src_dir: PathBuf) -> Result<TokenStream> { |
11 | let path = project_root().join(codegen::STORAGE); | ||
12 | fs::create_dir_all(path.clone())?; | ||
13 | |||
14 | Command::new("git").current_dir(path.clone()).arg("init").output()?; | ||
15 | Command::new("git") | ||
16 | .current_dir(path.clone()) | ||
17 | .args(&["remote", "add", "-f", "origin", codegen::REPOSITORY_URL]) | ||
18 | .output()?; | ||
19 | Command::new("git") | ||
20 | .current_dir(path.clone()) | ||
21 | .args(&["sparse-checkout", "set", "/src/doc/unstable-book/src/"]) | ||
22 | .output()?; | ||
23 | Command::new("git").current_dir(path.clone()).args(&["pull", "origin", "master"]).output()?; | ||
24 | |||
25 | let src_dir = path.join("src/doc/unstable-book/src"); | ||
26 | let files = WalkDir::new(src_dir.join("language-features")) | 12 | let files = WalkDir::new(src_dir.join("language-features")) |
27 | .into_iter() | 13 | .into_iter() |
28 | .chain(WalkDir::new(src_dir.join("library-features"))) | 14 | .chain(WalkDir::new(src_dir.join("library-features"))) |
@@ -49,13 +35,27 @@ pub fn generate_unstable_future_descriptor(mode: Mode) -> Result<()> { | |||
49 | let ts = quote! { | 35 | let ts = quote! { |
50 | use crate::completion::LintCompletion; | 36 | use crate::completion::LintCompletion; |
51 | 37 | ||
52 | pub const UNSTABLE_FEATURE_DESCRIPTOR: &[LintCompletion] = &[ | 38 | pub(crate) const UNSTABLE_FEATURE_DESCRIPTOR: &[LintCompletion] = &[ |
53 | #(#definitions),* | 39 | #(#definitions),* |
54 | ]; | 40 | ]; |
55 | }; | 41 | }; |
42 | Ok(ts) | ||
43 | } | ||
44 | |||
45 | pub fn generate_unstable_future_descriptor(mode: Mode) -> Result<()> { | ||
46 | let path = project_root().join(codegen::STORAGE); | ||
47 | fs2::create_dir_all(path.clone())?; | ||
48 | |||
49 | let _d = pushd(path.clone()); | ||
50 | run!("git init")?; | ||
51 | run!("git remote add -f origin {}", codegen::REPOSITORY_URL)?; | ||
52 | run!("git pull origin master")?; | ||
53 | |||
54 | let src_dir = path.join(codegen::REPO_PATH); | ||
55 | let content = generate_descriptor(src_dir)?.to_string(); | ||
56 | 56 | ||
57 | let contents = crate::reformat(content)?; | ||
57 | let destination = project_root().join(codegen::UNSTABLE_FEATURE); | 58 | let destination = project_root().join(codegen::UNSTABLE_FEATURE); |
58 | let contents = crate::reformat(ts.to_string())?; | ||
59 | update(destination.as_path(), &contents, mode)?; | 59 | update(destination.as_path(), &contents, mode)?; |
60 | 60 | ||
61 | Ok(()) | 61 | Ok(()) |