diff options
Diffstat (limited to 'xtask')
-rw-r--r-- | xtask/src/codegen/gen_assists_docs.rs | 4 | ||||
-rw-r--r-- | xtask/src/main.rs | 12 | ||||
-rw-r--r-- | xtask/tests/tidy.rs | 50 |
3 files changed, 56 insertions, 10 deletions
diff --git a/xtask/src/codegen/gen_assists_docs.rs b/xtask/src/codegen/gen_assists_docs.rs index be218dea1..6e18a50a6 100644 --- a/xtask/src/codegen/gen_assists_docs.rs +++ b/xtask/src/codegen/gen_assists_docs.rs | |||
@@ -86,8 +86,8 @@ impl Assist { | |||
86 | 86 | ||
87 | impl fmt::Display for Assist { | 87 | impl fmt::Display for Assist { |
88 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { | 88 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { |
89 | let before = self.before.replace("<|>", "┃"); // Unicode pseudo-graphics bar | 89 | let before = self.before.replace("$0", "┃"); // Unicode pseudo-graphics bar |
90 | let after = self.after.replace("<|>", "┃"); | 90 | let after = self.after.replace("$0", "┃"); |
91 | writeln!( | 91 | writeln!( |
92 | f, | 92 | f, |
93 | "[discrete]\n=== `{}` | 93 | "[discrete]\n=== `{}` |
diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 3e07daae9..dec48629c 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs | |||
@@ -12,7 +12,7 @@ use std::env; | |||
12 | 12 | ||
13 | use codegen::CodegenCmd; | 13 | use codegen::CodegenCmd; |
14 | use pico_args::Arguments; | 14 | use pico_args::Arguments; |
15 | use xshell::pushd; | 15 | use xshell::{cmd, cp, pushd}; |
16 | use xtask::{ | 16 | use xtask::{ |
17 | codegen::{self, Mode}, | 17 | codegen::{self, Mode}, |
18 | dist::DistCmd, | 18 | dist::DistCmd, |
@@ -124,6 +124,13 @@ FLAGS: | |||
124 | args.finish()?; | 124 | args.finish()?; |
125 | MetricsCmd { dry_run }.run() | 125 | MetricsCmd { dry_run }.run() |
126 | } | 126 | } |
127 | "bb" => { | ||
128 | let suffix: String = args.free_from_str()?.unwrap(); | ||
129 | args.finish()?; | ||
130 | cmd!("cargo build --release").run()?; | ||
131 | cp("./target/release/rust-analyzer", format!("./target/rust-analyzer-{}", suffix))?; | ||
132 | Ok(()) | ||
133 | } | ||
127 | _ => { | 134 | _ => { |
128 | eprintln!( | 135 | eprintln!( |
129 | "\ | 136 | "\ |
@@ -141,7 +148,8 @@ SUBCOMMANDS: | |||
141 | install | 148 | install |
142 | lint | 149 | lint |
143 | dist | 150 | dist |
144 | promote" | 151 | promote |
152 | bb" | ||
145 | ); | 153 | ); |
146 | Ok(()) | 154 | Ok(()) |
147 | } | 155 | } |
diff --git a/xtask/tests/tidy.rs b/xtask/tests/tidy.rs index d1ffb70ad..a957e36af 100644 --- a/xtask/tests/tidy.rs +++ b/xtask/tests/tidy.rs | |||
@@ -85,6 +85,7 @@ fn rust_files_are_tidy() { | |||
85 | for path in rust_files(&project_root().join("crates")) { | 85 | for path in rust_files(&project_root().join("crates")) { |
86 | let text = read_file(&path).unwrap(); | 86 | let text = read_file(&path).unwrap(); |
87 | check_todo(&path, &text); | 87 | check_todo(&path, &text); |
88 | check_dbg(&path, &text); | ||
88 | check_trailing_ws(&path, &text); | 89 | check_trailing_ws(&path, &text); |
89 | deny_clippy(&path, &text); | 90 | deny_clippy(&path, &text); |
90 | tidy_docs.visit(&path, &text); | 91 | tidy_docs.visit(&path, &text); |
@@ -94,10 +95,9 @@ fn rust_files_are_tidy() { | |||
94 | 95 | ||
95 | #[test] | 96 | #[test] |
96 | fn check_merge_commits() { | 97 | fn check_merge_commits() { |
97 | let stdout = | 98 | let stdout = cmd!("git rev-list --merges --invert-grep --author 'bors\\[bot\\]' HEAD~19..") |
98 | dbg!(cmd!("git rev-list --merges --invert-grep --author 'bors\\[bot\\]' HEAD~19..")) | 99 | .read() |
99 | .read() | 100 | .unwrap(); |
100 | .unwrap(); | ||
101 | if !stdout.is_empty() { | 101 | if !stdout.is_empty() { |
102 | panic!( | 102 | panic!( |
103 | " | 103 | " |
@@ -107,8 +107,13 @@ When updating a pull-request, please rebase your feature branch | |||
107 | on top of master by running `git rebase master`. If rebase fails, | 107 | on top of master by running `git rebase master`. If rebase fails, |
108 | you can re-apply your changes like this: | 108 | you can re-apply your changes like this: |
109 | 109 | ||
110 | # Abort in-progress rebase, if any. | 110 | # Just look around to see the current state. |
111 | $ git status | ||
112 | $ git log | ||
113 | |||
114 | # Abort in-progress rebase and merges, if any. | ||
111 | $ git rebase --abort | 115 | $ git rebase --abort |
116 | $ git merge --abort | ||
112 | 117 | ||
113 | # Make the branch point to the latest commit from master, | 118 | # Make the branch point to the latest commit from master, |
114 | # while maintaining your local changes uncommited. | 119 | # while maintaining your local changes uncommited. |
@@ -117,10 +122,17 @@ you can re-apply your changes like this: | |||
117 | # Commit all changes in a single batch. | 122 | # Commit all changes in a single batch. |
118 | $ git commit -am'My changes' | 123 | $ git commit -am'My changes' |
119 | 124 | ||
125 | # Verify that everything looks alright. | ||
126 | $ git status | ||
127 | $ git log | ||
128 | |||
120 | # Push the changes. We did a rebase, so we need `--force` option. | 129 | # Push the changes. We did a rebase, so we need `--force` option. |
121 | # `--force-with-lease` is a more safe (Rusty) version of `--force`. | 130 | # `--force-with-lease` is a more safe (Rusty) version of `--force`. |
122 | $ git push --force-with-lease | 131 | $ git push --force-with-lease |
123 | 132 | ||
133 | # Verify that both local and remote branch point to the same commit. | ||
134 | $ git log | ||
135 | |||
124 | And don't fear to mess something up during a rebase -- you can | 136 | And don't fear to mess something up during a rebase -- you can |
125 | always restore the previous state using `git ref-log`: | 137 | always restore the previous state using `git ref-log`: |
126 | 138 | ||
@@ -212,7 +224,7 @@ Zlib OR Apache-2.0 OR MIT | |||
212 | fn check_todo(path: &Path, text: &str) { | 224 | fn check_todo(path: &Path, text: &str) { |
213 | let need_todo = &[ | 225 | let need_todo = &[ |
214 | // This file itself obviously needs to use todo (<- like this!). | 226 | // This file itself obviously needs to use todo (<- like this!). |
215 | "tests/cli.rs", | 227 | "tests/tidy.rs", |
216 | // Some of our assists generate `todo!()`. | 228 | // Some of our assists generate `todo!()`. |
217 | "handlers/add_turbo_fish.rs", | 229 | "handlers/add_turbo_fish.rs", |
218 | "handlers/generate_function.rs", | 230 | "handlers/generate_function.rs", |
@@ -240,6 +252,32 @@ fn check_todo(path: &Path, text: &str) { | |||
240 | } | 252 | } |
241 | } | 253 | } |
242 | 254 | ||
255 | fn check_dbg(path: &Path, text: &str) { | ||
256 | let need_dbg = &[ | ||
257 | // This file itself obviously needs to use dbg. | ||
258 | "tests/tidy.rs", | ||
259 | // Assists to remove `dbg!()` | ||
260 | "handlers/remove_dbg.rs", | ||
261 | // We have .dbg postfix | ||
262 | "completion/src/completions/postfix.rs", | ||
263 | // The documentation in string literals may contain anything for its own purposes | ||
264 | "completion/src/lib.rs", | ||
265 | "completion/src/generated_lint_completions.rs", | ||
266 | // test for doc test for remove_dbg | ||
267 | "src/tests/generated.rs", | ||
268 | ]; | ||
269 | if need_dbg.iter().any(|p| path.ends_with(p)) { | ||
270 | return; | ||
271 | } | ||
272 | if text.contains("dbg!") { | ||
273 | panic!( | ||
274 | "\ndbg! macros should not be committed to the master branch,\n\ | ||
275 | {}\n", | ||
276 | path.display(), | ||
277 | ) | ||
278 | } | ||
279 | } | ||
280 | |||
243 | fn check_trailing_ws(path: &Path, text: &str) { | 281 | fn check_trailing_ws(path: &Path, text: &str) { |
244 | if is_exclude_dir(path, &["test_data"]) { | 282 | if is_exclude_dir(path, &["test_data"]) { |
245 | return; | 283 | return; |