There isn't a way to pass --remove yet, but you can rm if u like
This commit is contained in:
parent
d2454643e1
commit
a009e2838b
|
@ -1407,6 +1407,10 @@ dependencies = [
|
|||
"hashbrown",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "install-git-hook"
|
||||
version = "0.1.0"
|
||||
|
||||
[[package]]
|
||||
name = "installer"
|
||||
version = "0.0.0"
|
||||
|
|
|
@ -8,6 +8,7 @@ members = [
|
|||
"src/tools/clippy",
|
||||
"src/tools/compiletest",
|
||||
"src/tools/error_index_generator",
|
||||
"src/tools/install-git-hook",
|
||||
"src/tools/linkchecker",
|
||||
"src/tools/rustbook",
|
||||
"src/tools/unstable-book-gen",
|
||||
|
|
|
@ -487,7 +487,7 @@ impl<'a> Builder<'a> {
|
|||
install::Src,
|
||||
install::Rustc
|
||||
),
|
||||
Kind::Run => describe!(run::ExpandYamlAnchors,),
|
||||
Kind::Run => describe!(run::ExpandYamlAnchors, run::InstallGitHook),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -41,3 +41,27 @@ fn try_run(builder: &Builder<'_>, cmd: &mut Command) -> bool {
|
|||
}
|
||||
true
|
||||
}
|
||||
|
||||
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
||||
pub struct InstallGitHook;
|
||||
|
||||
impl Step for InstallGitHook {
|
||||
type Output = ();
|
||||
|
||||
/// Runs the `install-git-hook` tool.
|
||||
///
|
||||
/// This tool in `src/tools` installs a git hook to automatically run
|
||||
/// `tidy --bless` before each commit, so you don't forget to do it
|
||||
fn run(self, builder: &Builder<'_>) {
|
||||
builder.info("Installing git hook");
|
||||
try_run(builder, &mut builder.tool_cmd(Tool::InstallGitHook).arg(&builder.src));
|
||||
}
|
||||
|
||||
fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> {
|
||||
run.path("src/tools/install-git-hook")
|
||||
}
|
||||
|
||||
fn make_run(run: RunConfig<'_>) {
|
||||
run.builder.ensure(InstallGitHook);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -365,6 +365,7 @@ bootstrap_tool!(
|
|||
RustInstaller, "src/tools/rust-installer", "fabricate", is_external_tool = true;
|
||||
RustdocTheme, "src/tools/rustdoc-themes", "rustdoc-themes";
|
||||
ExpandYamlAnchors, "src/tools/expand-yaml-anchors", "expand-yaml-anchors";
|
||||
InstallGitHook, "src/tools/install-git-hook", "install-git-hook";
|
||||
);
|
||||
|
||||
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq, Ord, PartialOrd)]
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
[package]
|
||||
name = "install-git-hook"
|
||||
version = "0.1.0"
|
||||
authors = ["Cass Fridkin <cass@swag.lgbt>"]
|
||||
edition = "2018"
|
|
@ -0,0 +1,16 @@
|
|||
//! Small helper program to install a git hook to automatically run
|
||||
//! `x.py test tidy --bless` before each commit.
|
||||
|
||||
use std::env;
|
||||
use std::fs;
|
||||
use std::path::PathBuf;
|
||||
|
||||
fn main() {
|
||||
let root_path: PathBuf = env::args_os().nth(1).expect("need path to root of repo").into();
|
||||
let script_path: PathBuf = root_path.join("src/tools/install-git-hook/src/pre-commit.sh");
|
||||
let hook_path: PathBuf = root_path.join(".git/hooks/pre-commit");
|
||||
|
||||
fs::copy(&script_path, &hook_path).expect(
|
||||
format!("Failed to copy pre-commit script to {}", &hook_path.to_string_lossy()).as_str(),
|
||||
);
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Call `tidy --bless` before each commit
|
||||
#
|
||||
# To enable this hook, run `./x.py run install-git-hook`.
|
||||
# To disable it, run `./x.py run install-git-hook --remove`
|
||||
set -Eeuo pipefail
|
||||
|
||||
ROOT_DIR=$(git rev-parse --show-toplevel);
|
||||
COMMAND="$ROOT_DIR/x.py test tidy --bless";
|
||||
|
||||
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "win32" ]]; then
|
||||
COMMAND="python $COMMAND"
|
||||
fi
|
||||
|
||||
echo "Running pre-commit script $COMMAND";
|
||||
|
||||
$COMMAND;
|
Loading…
Reference in New Issue