mirror of
https://github.com/instructkr/claw-code.git
synced 2026-04-12 02:54:49 +08:00
ROADMAP #37 was still open even though several earlier backlog items were already closed. This change removes the local login/logout surface, stops startup auth resolution from treating saved OAuth credentials as a supported path, and updates diagnostics/help to point users at ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN only. While proving the change with the user-requested workspace gates, clippy surfaced additional pre-existing warning failures across the Rust workspace. Those were cleaned up in-place so the required `cargo fmt`, `cargo clippy --workspace --all-targets -- -D warnings`, and `cargo test --workspace` sequence now passes end to end. Constraint: User explicitly required full-workspace fmt/clippy/test before commit/push Constraint: Existing dirty leader worktree had to be stashed before attempted OMX team worktree launch Rejected: Keep login/logout but hide them from help | left unsupported auth flow and saved OAuth fallback intact Rejected: Stop after ROADMAP #37 targeted tests | did not satisfy required full-workspace verification gate Confidence: medium Scope-risk: moderate Reversibility: clean Directive: Do not reintroduce saved OAuth as a silent Anthropic startup fallback without an explicit supported auth policy Tested: cargo fmt --all --check; cargo clippy --workspace --all-targets -- -D warnings; cargo test --workspace Not-tested: Remote push effects beyond origin/main update
58 lines
2.1 KiB
Rust
58 lines
2.1 KiB
Rust
use std::env;
|
|
use std::process::Command;
|
|
|
|
fn main() {
|
|
// Get git SHA (short hash)
|
|
let git_sha = Command::new("git")
|
|
.args(["rev-parse", "--short", "HEAD"])
|
|
.output()
|
|
.ok()
|
|
.and_then(|output| {
|
|
if output.status.success() {
|
|
String::from_utf8(output.stdout).ok()
|
|
} else {
|
|
None
|
|
}
|
|
})
|
|
.map_or_else(|| "unknown".to_string(), |s| s.trim().to_string());
|
|
|
|
println!("cargo:rustc-env=GIT_SHA={git_sha}");
|
|
|
|
// TARGET is always set by Cargo during build
|
|
let target = env::var("TARGET").unwrap_or_else(|_| "unknown".to_string());
|
|
println!("cargo:rustc-env=TARGET={target}");
|
|
|
|
// Build date from SOURCE_DATE_EPOCH (reproducible builds) or current UTC date.
|
|
// Intentionally ignoring time component to keep output deterministic within a day.
|
|
let build_date = std::env::var("SOURCE_DATE_EPOCH")
|
|
.ok()
|
|
.and_then(|epoch| epoch.parse::<i64>().ok())
|
|
.map(|_ts| {
|
|
// Use SOURCE_DATE_EPOCH to derive date via chrono if available;
|
|
// for simplicity we just use the env var as a signal and fall back
|
|
// to build-time env. In practice CI sets this via workflow.
|
|
std::env::var("BUILD_DATE").unwrap_or_else(|_| "unknown".to_string())
|
|
})
|
|
.or_else(|| std::env::var("BUILD_DATE").ok())
|
|
.unwrap_or_else(|| {
|
|
// Fall back to current date via `date` command
|
|
Command::new("date")
|
|
.args(["+%Y-%m-%d"])
|
|
.output()
|
|
.ok()
|
|
.and_then(|o| {
|
|
if o.status.success() {
|
|
String::from_utf8(o.stdout).ok()
|
|
} else {
|
|
None
|
|
}
|
|
})
|
|
.map_or_else(|| "unknown".to_string(), |s| s.trim().to_string())
|
|
});
|
|
println!("cargo:rustc-env=BUILD_DATE={build_date}");
|
|
|
|
// Rerun if git state changes
|
|
println!("cargo:rerun-if-changed=.git/HEAD");
|
|
println!("cargo:rerun-if-changed=.git/refs");
|
|
}
|