aboutsummaryrefslogtreecommitdiff
path: root/xtask/src/release.rs
diff options
context:
space:
mode:
Diffstat (limited to 'xtask/src/release.rs')
-rw-r--r--xtask/src/release.rs71
1 files changed, 37 insertions, 34 deletions
diff --git a/xtask/src/release.rs b/xtask/src/release.rs
index 3aab29801..3cf0d849f 100644
--- a/xtask/src/release.rs
+++ b/xtask/src/release.rs
@@ -1,8 +1,6 @@
1use crate::{ 1use xshell::{cmd, cp, pushd, read_dir, write_file};
2 codegen, is_release_tag, 2
3 not_bash::{date_iso, fs2, pushd, run}, 3use crate::{codegen, date_iso, is_release_tag, project_root, Mode, Result};
4 project_root, Mode, Result,
5};
6 4
7pub struct ReleaseCmd { 5pub struct ReleaseCmd {
8 pub dry_run: bool, 6 pub dry_run: bool,
@@ -11,10 +9,10 @@ pub struct ReleaseCmd {
11impl ReleaseCmd { 9impl ReleaseCmd {
12 pub fn run(self) -> Result<()> { 10 pub fn run(self) -> Result<()> {
13 if !self.dry_run { 11 if !self.dry_run {
14 run!("git switch release")?; 12 cmd!("git switch release").run()?;
15 run!("git fetch upstream --tags --force")?; 13 cmd!("git fetch upstream --tags --force").run()?;
16 run!("git reset --hard tags/nightly")?; 14 cmd!("git reset --hard tags/nightly").run()?;
17 run!("git push")?; 15 cmd!("git push").run()?;
18 } 16 }
19 codegen::generate_assists_docs(Mode::Overwrite)?; 17 codegen::generate_assists_docs(Mode::Overwrite)?;
20 codegen::generate_feature_docs(Mode::Overwrite)?; 18 codegen::generate_feature_docs(Mode::Overwrite)?;
@@ -23,8 +21,8 @@ impl ReleaseCmd {
23 let changelog_dir = website_root.join("./thisweek/_posts"); 21 let changelog_dir = website_root.join("./thisweek/_posts");
24 22
25 let today = date_iso()?; 23 let today = date_iso()?;
26 let commit = run!("git rev-parse HEAD")?; 24 let commit = cmd!("git rev-parse HEAD").read()?;
27 let changelog_n = fs2::read_dir(changelog_dir.as_path())?.count(); 25 let changelog_n = read_dir(changelog_dir.as_path())?.len();
28 26
29 let contents = format!( 27 let contents = format!(
30 "\ 28 "\
@@ -52,20 +50,27 @@ https://github.com/sponsors/rust-analyzer[GitHub Sponsors].
52 ); 50 );
53 51
54 let path = changelog_dir.join(format!("{}-changelog-{}.adoc", today, changelog_n)); 52 let path = changelog_dir.join(format!("{}-changelog-{}.adoc", today, changelog_n));
55 fs2::write(&path, &contents)?; 53 write_file(&path, &contents)?;
56 54
57 for &adoc in ["manual.adoc", "generated_features.adoc", "generated_assists.adoc"].iter() { 55 for &adoc in [
56 "manual.adoc",
57 "generated_features.adoc",
58 "generated_assists.adoc",
59 "generated_diagnostic.adoc",
60 ]
61 .iter()
62 {
58 let src = project_root().join("./docs/user/").join(adoc); 63 let src = project_root().join("./docs/user/").join(adoc);
59 let dst = website_root.join(adoc); 64 let dst = website_root.join(adoc);
60 fs2::copy(src, dst)?; 65 cp(src, dst)?;
61 } 66 }
62 67
63 let tags = run!("git tag --list"; echo = false)?; 68 let tags = cmd!("git tag --list").read()?;
64 let prev_tag = tags.lines().filter(|line| is_release_tag(line)).last().unwrap(); 69 let prev_tag = tags.lines().filter(|line| is_release_tag(line)).last().unwrap();
65 70
66 let git_log = run!("git log {}..HEAD --merges --reverse", prev_tag; echo = false)?; 71 let git_log = cmd!("git log {prev_tag}..HEAD --merges --reverse").read()?;
67 let git_log_dst = website_root.join("git.log"); 72 let git_log_dst = website_root.join("git.log");
68 fs2::write(git_log_dst, &git_log)?; 73 write_file(git_log_dst, &git_log)?;
69 74
70 Ok(()) 75 Ok(())
71 } 76 }
@@ -77,27 +82,25 @@ pub struct PromoteCmd {
77 82
78impl PromoteCmd { 83impl PromoteCmd {
79 pub fn run(self) -> Result<()> { 84 pub fn run(self) -> Result<()> {
80 let _dir = pushd("../rust-rust-analyzer"); 85 let _dir = pushd("../rust-rust-analyzer")?;
81 run!("git switch master")?; 86 cmd!("git switch master").run()?;
82 run!("git fetch upstream")?; 87 cmd!("git fetch upstream").run()?;
83 run!("git reset --hard upstream/master")?; 88 cmd!("git reset --hard upstream/master").run()?;
84 run!("git submodule update --recursive")?; 89 cmd!("git submodule update --recursive").run()?;
85 90
86 let branch = format!("rust-analyzer-{}", date_iso()?); 91 let branch = format!("rust-analyzer-{}", date_iso()?);
87 run!("git switch -c {}", branch)?; 92 cmd!("git switch -c {branch}").run()?;
88 { 93 {
89 let _dir = pushd("src/tools/rust-analyzer"); 94 let _dir = pushd("src/tools/rust-analyzer")?;
90 run!("git fetch origin")?; 95 cmd!("git fetch origin").run()?;
91 run!("git reset --hard origin/release")?; 96 cmd!("git reset --hard origin/release").run()?;
92 } 97 }
93 run!("git add src/tools/rust-analyzer")?; 98 cmd!("git add src/tools/rust-analyzer").run()?;
94 run!("git commit -m':arrow_up: rust-analyzer'")?; 99 cmd!("git commit -m':arrow_up: rust-analyzer'").run()?;
95 if !self.dry_run { 100 if !self.dry_run {
96 run!("git push")?; 101 cmd!("git push").run()?;
97 run!( 102 cmd!("xdg-open https://github.com/matklad/rust/pull/new/{branch}?body=r%3F%20%40ghost")
98 "xdg-open https://github.com/matklad/rust/pull/new/{}?body=r%3F%20%40ghost", 103 .run()?;
99 branch
100 )?;
101 } 104 }
102 Ok(()) 105 Ok(())
103 } 106 }