lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README | LICENSE

commit ffc12263db5ef0b76a2e388c805f7b6e8398095e
parent dcc4f762f6c3dadd35d6a20acb33654e6a4dee3c
Author: triesap <tyson@radroots.org>
Date:   Fri, 20 Feb 2026 15:49:04 +0000

events: route test ts exports to target ts-rs dir

Diffstat:
M.gitignore | 4----
Mcrates/events/src/kinds.rs | 27+++++++++++++++++++++++++--
Mcrates/events/src/listing.rs | 27+++++++++++++++++++++++++--
3 files changed, 50 insertions(+), 8 deletions(-)

diff --git a/.gitignore b/.gitignore @@ -44,7 +44,3 @@ prompt*.txt # Dev .local - -# temporary guard: test-generated ts artifacts -**/bindings/constants.ts -**/bindings/kinds.ts diff --git a/crates/events/src/kinds.rs b/crates/events/src/kinds.rs @@ -128,7 +128,30 @@ pub const fn request_kind_for_result_kind(kind: u32) -> Option<u32> { #[cfg(all(test, feature = "ts-rs", feature = "std"))] mod kinds_constants_tests { use super::*; - use std::{fs, path::Path}; + use std::{ + fs, + path::{Path, PathBuf}, + }; + + fn workspace_root(manifest_dir: &Path) -> PathBuf { + let parent = manifest_dir.parent().unwrap_or(manifest_dir); + if parent.file_name().and_then(|name| name.to_str()) == Some("crates") { + parent.parent().unwrap_or(parent).to_path_buf() + } else { + parent.to_path_buf() + } + } + + fn ts_export_dir() -> PathBuf { + if let Some(export_dir) = option_env!("TS_RS_EXPORT_DIR") { + return PathBuf::from(export_dir); + } + let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + workspace_root(&manifest_dir) + .join("target") + .join("ts-rs") + .join("events") + } const KIND_EXPORTS: &[(&str, u32)] = &[ ("KIND_PROFILE", KIND_PROFILE), @@ -197,7 +220,7 @@ mod kinds_constants_tests { #[test] fn export_kind_constants() { - let path = Path::new("./bindings").join("kinds.ts"); + let path = ts_export_dir().join("kinds.ts"); if let Some(parent) = path.parent() { fs::create_dir_all(parent).expect("create ts export dir"); } diff --git a/crates/events/src/listing.rs b/crates/events/src/listing.rs @@ -251,7 +251,30 @@ pub struct RadrootsListingImageSize { #[cfg(all(test, feature = "ts-rs", feature = "std"))] mod constants_tests { use super::RADROOTS_LISTING_PRODUCT_TAG_KEYS; - use std::{fs, path::Path}; + use std::{ + fs, + path::{Path, PathBuf}, + }; + + fn workspace_root(manifest_dir: &Path) -> PathBuf { + let parent = manifest_dir.parent().unwrap_or(manifest_dir); + if parent.file_name().and_then(|name| name.to_str()) == Some("crates") { + parent.parent().unwrap_or(parent).to_path_buf() + } else { + parent.to_path_buf() + } + } + + fn ts_export_dir() -> PathBuf { + if let Some(export_dir) = option_env!("TS_RS_EXPORT_DIR") { + return PathBuf::from(export_dir); + } + let manifest_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + workspace_root(&manifest_dir) + .join("target") + .join("ts-rs") + .join("events") + } fn listing_product_tag_keys_literal() -> String { let mut out = String::from("["); @@ -269,7 +292,7 @@ mod constants_tests { #[test] fn export_listing_product_tag_keys_const() { - let path = Path::new("./bindings").join("constants.ts"); + let path = ts_export_dir().join("constants.ts"); if let Some(parent) = path.parent() { fs::create_dir_all(parent).expect("create ts export dir"); }