mirror of
https://github.com/rust-lang/mdBook.git
synced 2025-12-27 09:05:40 -05:00
@@ -221,12 +221,18 @@ The following are instructions for updating [highlight.js](https://highlightjs.o
|
||||
|
||||
Instructions for mdBook maintainers to publish a new release:
|
||||
|
||||
1. Create a PR to update the version and update the CHANGELOG:
|
||||
1. Update the version in `Cargo.toml`
|
||||
2. Run `cargo xtask test-all` to verify that everything is passing, and to update `Cargo.lock`.
|
||||
3. Run `cargo xtask changelog` to add a new entry to the changelog.
|
||||
1. This will add a list of all changes at the top. You will need to move those into the appropriate categories. Most changes that are generally not relevant to a user should be removed. Rewrite the descriptions so that a user can reasonably figure out what it means.
|
||||
4. Commit the changes, and open a PR.
|
||||
1. Create a PR that bumps the version and updates the changelog:
|
||||
1. `git fetch upstream`
|
||||
2. `git checkout -B bump-version upstream/master`
|
||||
3. `cargo xtask bump <BUMP>`
|
||||
- This will update the version of all the crates.
|
||||
- `cargo set-version` must first be installed with `cargo install cargo-edit`.
|
||||
- Replace `<BUMP>` with the kind of bump (patch, alpha, etc.)
|
||||
4. `cargo xtask changelog`
|
||||
- This will update `CHANGELOG.md` to add a list of all changes at the top. You will need to move those into the appropriate categories. Most changes that are generally not relevant to a user should be removed. Rewrite the descriptions so that a user can reasonably figure out what it means.
|
||||
5. `git add --update .`
|
||||
6. `git commit`
|
||||
7. `git push`
|
||||
2. After the PR has been merged, create a release in GitHub. This can either be done in the GitHub web UI, or on the command-line:
|
||||
```bash
|
||||
MDBOOK_VERS="`cargo read-manifest | jq -r .version`" ; \
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
|
||||
use std::collections::BTreeMap;
|
||||
use std::error::Error;
|
||||
use std::process::Command;
|
||||
use std::io::Write;
|
||||
use std::process::exit;
|
||||
use std::process::{Command, Stdio};
|
||||
|
||||
mod changelog;
|
||||
|
||||
@@ -35,9 +36,14 @@ fn main() -> Result<()> {
|
||||
eprintln!("error: specify a command (valid options: {keys})");
|
||||
exit(1);
|
||||
}
|
||||
for arg in args {
|
||||
while let Some(arg) = args.next() {
|
||||
if let Some(cmd_fn) = cmds.get(arg.as_str()) {
|
||||
cmd_fn()?;
|
||||
} else if arg == "bump" {
|
||||
let bump_arg = args
|
||||
.next()
|
||||
.expect("the next argument should be one of major, minor, patch, rc, beta, alpha");
|
||||
bump(&bump_arg)?;
|
||||
} else if matches!(arg.as_str(), "-h" | "--help") {
|
||||
println!("valid options: {keys}");
|
||||
exit(0)
|
||||
@@ -46,7 +52,7 @@ fn main() -> Result<()> {
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
println!("all tests passed!");
|
||||
println!("success!");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -123,3 +129,37 @@ fn eslint() -> Result<()> {
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn bump(bump: &str) -> Result<()> {
|
||||
// Grab all the publishable crate names.
|
||||
let metadata = Command::new("cargo")
|
||||
.args(["metadata", "--format-version=1", "--no-deps"])
|
||||
.output()?;
|
||||
let mut jq = Command::new("jq")
|
||||
.args(["-r", ".packages[] | select(.publish == null) | .name"])
|
||||
.stdin(Stdio::piped())
|
||||
.stdout(Stdio::piped())
|
||||
.spawn()?;
|
||||
jq.stdin.as_mut().unwrap().write_all(&metadata.stdout)?;
|
||||
let jq_out = jq.wait_with_output()?;
|
||||
if !jq_out.status.success() {
|
||||
eprintln!("jq failed");
|
||||
exit(1);
|
||||
}
|
||||
let names = std::str::from_utf8(&jq_out.stdout).unwrap();
|
||||
let mut names: Vec<_> = names.split_whitespace().collect();
|
||||
for i in (0..names.len()).rev() {
|
||||
names.insert(i, "-p");
|
||||
}
|
||||
|
||||
let status = Command::new("cargo")
|
||||
.args(["set-version", "--bump"])
|
||||
.arg(bump)
|
||||
.args(names)
|
||||
.status()?;
|
||||
if !status.success() {
|
||||
eprintln!("cargo set-version failed");
|
||||
exit(1);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user