chore: stop ignoring src/config/env
This commit is contained in:
70
src/config/env/using_flags.rs
vendored
Normal file
70
src/config/env/using_flags.rs
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
//! Using/namespace-related environment flags
|
||||
//!
|
||||
//! This module groups all `using` system and namespace flags.
|
||||
//! Use this for IDE autocomplete to discover using/namespace flags easily.
|
||||
|
||||
use super::warn_alias_once;
|
||||
|
||||
pub fn enable_using() -> bool {
|
||||
// Phase 15: デフォルトON(using systemはメイン機能)
|
||||
// NYASH_ENABLE_USING=0 で明示的に無効化可能。HAKO_ENABLE_USING は互換のため受理(警告)。
|
||||
match std::env::var("NYASH_ENABLE_USING").ok().as_deref() {
|
||||
Some("0") | Some("false") | Some("off") => return false,
|
||||
Some(_) => return true,
|
||||
None => {}
|
||||
}
|
||||
// Fallback to alias
|
||||
if let Some(v) = std::env::var("HAKO_ENABLE_USING").ok() {
|
||||
warn_alias_once("HAKO_ENABLE_USING", "NYASH_ENABLE_USING");
|
||||
let lv = v.to_ascii_lowercase();
|
||||
return !(lv == "0" || lv == "false" || lv == "off");
|
||||
}
|
||||
true // default ON
|
||||
}
|
||||
|
||||
// ---- Using profiles (dev|ci|prod) ----
|
||||
/// Return using profile string; default is "dev".
|
||||
pub fn using_profile() -> String {
|
||||
std::env::var("NYASH_USING_PROFILE").unwrap_or_else(|_| "dev".to_string())
|
||||
}
|
||||
|
||||
/// True when using profile is prod (disables some dev-only behaviors).
|
||||
pub fn using_is_prod() -> bool {
|
||||
using_profile().eq_ignore_ascii_case("prod")
|
||||
}
|
||||
|
||||
/// True when using profile is ci.
|
||||
pub fn using_is_ci() -> bool {
|
||||
using_profile().eq_ignore_ascii_case("ci")
|
||||
}
|
||||
|
||||
/// True when using profile is dev (default).
|
||||
pub fn using_is_dev() -> bool {
|
||||
using_profile().eq_ignore_ascii_case("dev")
|
||||
}
|
||||
|
||||
/// Allow `using "path"` statements in source (dev-only by default).
|
||||
pub fn allow_using_file() -> bool {
|
||||
// SSOT 徹底: 全プロファイルで既定禁止(nyash.toml を唯一の真実に)
|
||||
// 明示オーバーライドでのみ許可(開発用緊急時)
|
||||
match std::env::var("NYASH_ALLOW_USING_FILE").ok().as_deref() {
|
||||
Some("1") | Some("true") | Some("on") => true,
|
||||
_ => false,
|
||||
}
|
||||
}
|
||||
|
||||
/// Determine whether AST prelude merge for `using` is enabled.
|
||||
/// Precedence:
|
||||
/// 1) Explicit env `NYASH_USING_AST` = 1/true/on → enabled, = 0/false/off → disabled
|
||||
/// 2) Default by profile: dev/ci → ON, prod → OFF
|
||||
pub fn using_ast_enabled() -> bool {
|
||||
match std::env::var("NYASH_USING_AST")
|
||||
.ok()
|
||||
.as_deref()
|
||||
.map(|v| v.to_ascii_lowercase())
|
||||
{
|
||||
Some(ref s) if s == "1" || s == "true" || s == "on" => true,
|
||||
Some(ref s) if s == "0" || s == "false" || s == "off" => false,
|
||||
_ => !using_is_prod(), // dev/ci → true, prod → false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user