diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-08-30 16:24:31 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-08-30 16:41:10 +0900 |
| commit | dfd9e72b1786597db643d50c7a55d1fcbadf7802 (patch) | |
| tree | 0d01d8547e4ddc372931b3a07d2467a0a5847c61 /crates/shirabe | |
| parent | 2f6689c3c1476c40a7c722491c1fcd5763e7d55f (diff) | |
| download | php-shirabe-dfd9e72b1786597db643d50c7a55d1fcbadf7802.tar.gz php-shirabe-dfd9e72b1786597db643d50c7a55d1fcbadf7802.tar.zst php-shirabe-dfd9e72b1786597db643d50c7a55d1fcbadf7802.zip | |
build(nix): add a package output producing the binary
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe')
| -rw-r--r-- | crates/shirabe/build.rs | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/crates/shirabe/build.rs b/crates/shirabe/build.rs index e11b1a06..59d11ab8 100644 --- a/crates/shirabe/build.rs +++ b/crates/shirabe/build.rs @@ -16,9 +16,30 @@ fn git(repo_root: &std::path::Path, args: &[&str]) -> Option<String> { Some(String::from_utf8(output.stdout).ok()?.trim().to_string()) } -fn main() { - println!("cargo::rerun-if-changed=build.rs"); +fn from_env() -> Option<(String, Option<i64>)> { + let release_date = std::env::var("SHIRABE_RELEASE_DATE").ok(); + let dev_warning_time = std::env::var("SHIRABE_DEV_WARNING_TIME").ok(); + match (release_date, dev_warning_time) { + (Some(release_date), Some(dev_warning_time)) => { + let dev_warning_time = if dev_warning_time.is_empty() { + None + } else { + Some(dev_warning_time.parse().expect( + "SHIRABE_DEV_WARNING_TIME holds a Unix timestamp, or nothing at all for a \ + tagged release", + )) + }; + Some((release_date, dev_warning_time)) + } + (None, None) => None, + _ => panic!( + "SHIRABE_RELEASE_DATE and SHIRABE_DEV_WARNING_TIME both describe the commit the build \ + comes from: set them together, or set neither and build from a git checkout" + ), + } +} +fn from_git() -> (String, Option<i64>) { let manifest_dir = std::env::var("CARGO_MANIFEST_DIR").unwrap(); let repo_root = std::path::Path::new(&manifest_dir) .parent() @@ -67,6 +88,19 @@ fn main() { Some(commit_time + 60 * 86400) }; + (release_date, dev_warning_time) +} + +fn main() { + println!("cargo::rerun-if-changed=build.rs"); + println!("cargo::rerun-if-env-changed=SHIRABE_RELEASE_DATE"); + println!("cargo::rerun-if-env-changed=SHIRABE_DEV_WARNING_TIME"); + + let (release_date, dev_warning_time) = match from_env() { + Some(values) => values, + None => from_git(), + }; + let out_dir = std::path::PathBuf::from(std::env::var("OUT_DIR").unwrap()); std::fs::write(out_dir.join("release_date.rs"), format!("{release_date:?}")).unwrap(); std::fs::write( |
