|
1 | 1 | use crate::builder::{Builder, RunConfig, ShouldRun, Step};
|
| 2 | +use crate::dist::distdir; |
2 | 3 | use crate::tool::Tool;
|
| 4 | +use build_helper::output; |
3 | 5 | use std::process::Command;
|
4 | 6 |
|
5 | 7 | #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
|
@@ -41,3 +43,43 @@ fn try_run(builder: &Builder<'_>, cmd: &mut Command) -> bool {
|
41 | 43 | }
|
42 | 44 | true
|
43 | 45 | }
|
| 46 | + |
| 47 | +#[derive(Debug, PartialOrd, Ord, Copy, Clone, Hash, PartialEq, Eq)] |
| 48 | +pub struct BuildManifest; |
| 49 | + |
| 50 | +impl Step for BuildManifest { |
| 51 | + type Output = (); |
| 52 | + const ONLY_HOSTS: bool = true; |
| 53 | + |
| 54 | + fn should_run(run: ShouldRun<'_>) -> ShouldRun<'_> { |
| 55 | + run.path("src/tools/build-manifest") |
| 56 | + } |
| 57 | + |
| 58 | + fn make_run(run: RunConfig<'_>) { |
| 59 | + run.builder.ensure(BuildManifest); |
| 60 | + } |
| 61 | + |
| 62 | + fn run(self, builder: &Builder<'_>) { |
| 63 | + // This gets called by `promote-release` |
| 64 | + // (https://github.com/rust-lang/promote-release). |
| 65 | + let mut cmd = builder.tool_cmd(Tool::BuildManifest); |
| 66 | + let sign = builder.config.dist_sign_folder.as_ref().unwrap_or_else(|| { |
| 67 | + panic!("\n\nfailed to specify `dist.sign-folder` in `config.toml`\n\n") |
| 68 | + }); |
| 69 | + let addr = builder.config.dist_upload_addr.as_ref().unwrap_or_else(|| { |
| 70 | + panic!("\n\nfailed to specify `dist.upload-addr` in `config.toml`\n\n") |
| 71 | + }); |
| 72 | + |
| 73 | + let today = output(Command::new("date").arg("+%Y-%m-%d")); |
| 74 | + |
| 75 | + cmd.arg(sign); |
| 76 | + cmd.arg(distdir(builder)); |
| 77 | + cmd.arg(today.trim()); |
| 78 | + cmd.arg(addr); |
| 79 | + cmd.arg(&builder.config.channel); |
| 80 | + cmd.arg(&builder.src); |
| 81 | + |
| 82 | + builder.create_dir(&distdir(builder)); |
| 83 | + builder.run(&mut cmd); |
| 84 | + } |
| 85 | +} |
0 commit comments