From cbc5eb87386e132c63ec33ff496019fad7478fe8 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 8 Jun 2020 14:00:30 +0200 Subject: Refactor --- xtask/src/main.rs | 4 +-- xtask/src/release.rs | 86 ++++++++++++++++++++++++++++------------------------ 2 files changed, 49 insertions(+), 41 deletions(-) (limited to 'xtask/src') diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 701c60fc0..f7a79362d 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -17,7 +17,7 @@ use xtask::{ install::{ClientOpt, InstallCmd, ServerOpt}, not_bash::pushd, pre_commit, project_root, - release::run_release, + release::ReleaseCmd, run_clippy, run_fuzzer, run_pre_cache, run_rustfmt, Result, }; @@ -103,7 +103,7 @@ FLAGS: "release" => { let dry_run = args.contains("--dry-run"); args.finish()?; - run_release(dry_run) + ReleaseCmd { dry_run }.run() } "dist" => { let nightly = args.contains("--nightly"); diff --git a/xtask/src/release.rs b/xtask/src/release.rs index 771a8cf71..36c912184 100644 --- a/xtask/src/release.rs +++ b/xtask/src/release.rs @@ -4,56 +4,64 @@ use crate::{ project_root, Mode, Result, }; -pub fn run_release(dry_run: bool) -> Result<()> { - if !dry_run { - run!("git switch release")?; - run!("git fetch upstream --tags --force")?; - run!("git reset --hard tags/nightly")?; - run!("git push")?; - } - codegen::generate_assists_docs(Mode::Overwrite)?; - codegen::generate_feature_docs(Mode::Overwrite)?; +pub struct ReleaseCmd { + pub dry_run: bool, +} - let website_root = project_root().join("../rust-analyzer.github.io"); - let changelog_dir = website_root.join("./thisweek/_posts"); +impl ReleaseCmd { + pub fn run(self) -> Result<()> { + if !self.dry_run { + run!("git switch release")?; + run!("git fetch upstream --tags --force")?; + run!("git reset --hard tags/nightly")?; + run!("git push")?; + } + codegen::generate_assists_docs(Mode::Overwrite)?; + codegen::generate_feature_docs(Mode::Overwrite)?; - let today = date_iso()?; - let commit = run!("git rev-parse HEAD")?; - let changelog_n = fs2::read_dir(changelog_dir.as_path())?.count(); + let website_root = project_root().join("../rust-analyzer.github.io"); + let changelog_dir = website_root.join("./thisweek/_posts"); - let contents = format!( - "\ -= Changelog #{} -:sectanchors: -:page-layout: post + let today = date_iso()?; + let commit = run!("git rev-parse HEAD")?; + let changelog_n = fs2::read_dir(changelog_dir.as_path())?.count(); -Commit: commit:{}[] + -Release: release:{}[] + let contents = format!( + "\ + = Changelog #{} + :sectanchors: + :page-layout: post -== New Features + Commit: commit:{}[] + + Release: release:{}[] -* pr:[] . + == New Features -== Fixes + * pr:[] . -== Internal Improvements -", - changelog_n, commit, today - ); + == Fixes - let path = changelog_dir.join(format!("{}-changelog-{}.adoc", today, changelog_n)); - fs2::write(&path, &contents)?; + == Internal Improvements + ", + changelog_n, commit, today + ); - for &adoc in ["manual.adoc", "generated_features.adoc", "generated_assists.adoc"].iter() { - let src = project_root().join("./docs/user/").join(adoc); - let dst = website_root.join(adoc); - fs2::copy(src, dst)?; - } + let path = changelog_dir.join(format!("{}-changelog-{}.adoc", today, changelog_n)); + fs2::write(&path, &contents)?; - let tags = run!("git tag --list"; echo = false)?; - let prev_tag = tags.lines().filter(|line| is_release_tag(line)).last().unwrap(); + for &adoc in ["manual.adoc", "generated_features.adoc", "generated_assists.adoc"].iter() { + let src = project_root().join("./docs/user/").join(adoc); + let dst = website_root.join(adoc); + fs2::copy(src, dst)?; + } - println!("\n git log {}..HEAD --merges --reverse", prev_tag); + let tags = run!("git tag --list"; echo = false)?; + let prev_tag = tags.lines().filter(|line| is_release_tag(line)).last().unwrap(); - Ok(()) + let git_log = run!("git log {}..HEAD --merges --reverse", prev_tag; echo = false)?; + let git_log_dst = website_root.join("git.log"); + fs2::write(git_log_dst, &git_log)?; + + Ok(()) + } } -- cgit v1.2.3