WIP: move to xtasks

This commit is contained in:
Aleksey Kladov 2019-10-17 19:36:55 +03:00
parent 65ab81e358
commit 7b15c4f7ae
15 changed files with 37 additions and 62 deletions

View file

@ -1,23 +1,4 @@
[alias] [alias]
# Automatically generates the ast and syntax kinds files xtask = "run --package xtask --bin xtask --"
gen-syntax = "run --package ra_tools --bin ra_tools -- gen-syntax"
# Extracts the tests from install-ra = "run --package xtask -- install" # for backwards compat
gen-tests = "run --package ra_tools --bin ra_tools -- gen-tests"
# Installs the visual studio code extension
install-ra = "run --package ra_tools --bin ra_tools -- install-ra"
install-code = "run --package ra_tools --bin ra_tools -- install-ra" # just an alias
# Formats the full repository or installs the git hook to do it automatically.
format = "run --package ra_tools --bin ra_tools -- format"
format-hook = "run --package ra_tools --bin ra_tools -- format-hook"
# Run clippy
lint = "run --package ra_tools --bin ra_tools -- lint"
# Runs the fuzzing test suite (currently only parser)
fuzz-tests = "run --package ra_tools --bin ra_tools -- fuzz-tests"
# Parse a file. This should be piped the file contents
parse = "run --package ra_cli -- parse"

26
Cargo.lock generated
View file

@ -1139,19 +1139,6 @@ dependencies = [
"text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "ra_tools"
version = "0.1.0"
dependencies = [
"itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"ron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "ra_tt" name = "ra_tt"
version = "0.1.0" version = "0.1.0"
@ -1784,6 +1771,19 @@ dependencies = [
"winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "xtask"
version = "0.1.0"
dependencies = [
"itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
"pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"ron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
"walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "yaml-rust" name = "yaml-rust"
version = "0.4.3" version = "0.4.3"

View file

@ -1,5 +1,5 @@
[workspace] [workspace]
members = [ "crates/*" ] members = [ "crates/*", "xtask/", "website/website-gen" ]
[profile.dev] [profile.dev]
debug = 1 # only line info debug = 1 # only line info

View file

@ -33,10 +33,10 @@ To quickly install rust-analyzer with VS Code extension with standard setup
$ git clone https://github.com/rust-analyzer/rust-analyzer && cd rust-analyzer $ git clone https://github.com/rust-analyzer/rust-analyzer && cd rust-analyzer
# install both the language server and VS Code extension # install both the language server and VS Code extension
$ cargo install-ra $ cargo xtask install
# alternatively, install only the server. Binary name is `ra_lsp_server`. # alternatively, install only the server. Binary name is `ra_lsp_server`.
$ cargo install-ra --server $ cargo xtask install --server
``` ```
For non-standard setup of VS Code and other editors, see [./docs/user](./docs/user). For non-standard setup of VS Code and other editors, see [./docs/user](./docs/user).

View file

@ -45,21 +45,15 @@ can be quickly updated for small modifications.
Some of the components of this repository are generated through automatic Some of the components of this repository are generated through automatic
processes. These are outlined below: processes. These are outlined below:
- `gen-syntax`: The kinds of tokens that are reused in several places, so a generator - `cargo xtask codegen`: The kinds of tokens that are reused in several places, so a generator
is used. We use tera templates to generate the files listed below, based on is used. We use `quote!` macro to generate the files listed below, based on
the grammar described in [grammar.ron]: the grammar described in [grammar.ron]:
- [ast/generated.rs][ast generated] in `ra_syntax` based on - [ast/generated.rs][ast generated]
[ast/generated.tera.rs][ast source] - [syntax_kind/generated.rs][syntax_kind generated]
- [syntax_kind/generated.rs][syntax_kind generated] in `ra_syntax` based on
[syntax_kind/generated.tera.rs][syntax_kind source]
[tera]: https://tera.netlify.com/
[grammar.ron]: ../../crates/ra_syntax/src/grammar.ron [grammar.ron]: ../../crates/ra_syntax/src/grammar.ron
[ast generated]: ../../crates/ra_syntax/src/ast/generated.rs [ast generated]: ../../crates/ra_syntax/src/ast/generated.rs
[ast source]: ../../crates/ra_syntax/src/ast/generated.rs.tera
[syntax_kind generated]: ../../crates/ra_parser/src/syntax_kind/generated.rs [syntax_kind generated]: ../../crates/ra_parser/src/syntax_kind/generated.rs
[syntax_kind source]: ../../crates/ra_parser/src/syntax_kind/generated.rs.tera
## Code Walk-Through ## Code Walk-Through

View file

@ -1,6 +1,6 @@
The main interface to rust-analyzer is the The main interface to rust-analyzer is the
[LSP](https://microsoft.github.io/language-server-protocol/) implementation. To [LSP](https://microsoft.github.io/language-server-protocol/) implementation. To
install lsp server, use `cargo install-ra --server`, which is a shorthand for `cargo install lsp server, use `cargo xtask install --server`, which is a shorthand for `cargo
install --package ra_lsp_server`. The binary is named `ra_lsp_server`, you install --package ra_lsp_server`. The binary is named `ra_lsp_server`, you
should be able to use it with any LSP-compatible editor. We use custom should be able to use it with any LSP-compatible editor. We use custom
extensions to LSP, so special client-side support is required to take full extensions to LSP, so special client-side support is required to take full
@ -33,7 +33,7 @@ following commands:
``` ```
$ git clone https://github.com/rust-analyzer/rust-analyzer.git --depth 1 $ git clone https://github.com/rust-analyzer/rust-analyzer.git --depth 1
$ cd rust-analyzer $ cd rust-analyzer
$ cargo install-ra $ cargo xtask install
``` ```
The automatic installation is expected to *just work* for common cases, if it The automatic installation is expected to *just work* for common cases, if it
@ -58,7 +58,7 @@ Beyond basic LSP features, there are some extension commands which you can
invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md) invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md)
for details. for details.
For updates, pull the latest changes from the master branch, run `cargo install-ra` again, and **restart** VS Code instance. For updates, pull the latest changes from the master branch, run `cargo xtask install` again, and **restart** VS Code instance.
See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) for why a full restart is needed. See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) for why a full restart is needed.
### Settings ### Settings

View file

@ -1,6 +1,6 @@
[package] [package]
edition = "2018" edition = "2018"
name = "ra_tools" name = "xtask"
version = "0.1.0" version = "0.1.0"
authors = ["rust-analyzer developers"] authors = ["rust-analyzer developers"]
publish = false publish = false

View file

@ -12,15 +12,15 @@ SUBCOMMANDS:
format format
format-hook format-hook
fuzz-tests fuzz-tests
gen-syntax codegen
gen-tests gen-tests
install-ra install
lint"; lint";
pub const INSTALL_RA_HELP: &str = "ra_tools-install-ra pub const INSTALL_HELP: &str = "ra_tools-install
USAGE: USAGE:
ra_tools.exe install-ra [FLAGS] ra_tools.exe install [FLAGS]
FLAGS: FLAGS:
--client-code --client-code

View file

@ -78,7 +78,7 @@ pub fn collect_tests(s: &str) -> Vec<(usize, Test)> {
} }
pub fn project_root() -> PathBuf { pub fn project_root() -> PathBuf {
Path::new(&env!("CARGO_MANIFEST_DIR")).ancestors().nth(2).unwrap().to_path_buf() Path::new(&env!("CARGO_MANIFEST_DIR")).ancestors().nth(1).unwrap().to_path_buf()
} }
pub struct Cmd<'a> { pub struct Cmd<'a> {

View file

@ -5,11 +5,11 @@ mod help;
use core::fmt::Write; use core::fmt::Write;
use core::str; use core::str;
use pico_args::Arguments; use pico_args::Arguments;
use ra_tools::{ use std::{env, path::PathBuf};
use xtask::{
gen_tests, generate_boilerplate, install_format_hook, run, run_clippy, run_fuzzer, run_rustfmt, gen_tests, generate_boilerplate, install_format_hook, run, run_clippy, run_fuzzer, run_rustfmt,
Cmd, Overwrite, Result, Cmd, Overwrite, Result,
}; };
use std::{env, path::PathBuf};
struct InstallOpt { struct InstallOpt {
client: Option<ClientOpt>, client: Option<ClientOpt>,
@ -35,9 +35,9 @@ fn main() -> Result<()> {
let mut matches = Arguments::from_vec(std::env::args_os().skip(2).collect()); let mut matches = Arguments::from_vec(std::env::args_os().skip(2).collect());
let subcommand = &*subcommand.to_string_lossy(); let subcommand = &*subcommand.to_string_lossy();
match subcommand { match subcommand {
"install-ra" | "install-code" => { "install" => {
if matches.contains(["-h", "--help"]) { if matches.contains(["-h", "--help"]) {
eprintln!("{}", help::INSTALL_RA_HELP); eprintln!("{}", help::INSTALL_HELP);
return Ok(()); return Ok(());
} }
let server = matches.contains("--server"); let server = matches.contains("--server");
@ -61,7 +61,7 @@ fn main() -> Result<()> {
} }
gen_tests(Overwrite)? gen_tests(Overwrite)?
} }
"gen-syntax" => { "codegen" => {
if matches.contains(["-h", "--help"]) { if matches.contains(["-h", "--help"]) {
help::print_no_param_subcommand_help(&subcommand); help::print_no_param_subcommand_help(&subcommand);
return Ok(()); return Ok(());