|
14 | 14 | //! |
15 | 15 | //! | Variable | Description | Default | |
16 | 16 | //! |----------|-------------|---------| |
17 | | -//! | `NSC_OUT_DIR` | Output directory | `./build/` | |
18 | | -//! | `NSC_SEMANTIC_CHECK` | Enable LLM semantic check | `false` | |
19 | | -//! | `NSC_GENERATE_SIGNATURE` | Generate signature files | `false` | |
20 | | -//! | `NSC_DEFAULT_TARGET` | Default compilation target | `claude` | |
21 | | -//! | `NSC_MCP_WHITELIST` | MCP server whitelist (comma-separated) | `*` | |
22 | | -//! | `NSC_ALLOW_UNDECLARED_MCP` | Allow undeclared MCP servers | `false` | |
23 | | -//! | `NSC_HIGH_RISK_KEYWORDS` | High-risk keywords (comma-separated) | (built-in list) | |
24 | | -//! | `NSC_FORCE_HITL_CRITICAL` | Force HITL for critical level | `true` | |
25 | | -//! | `NSC_LOG_LEVEL` | Log level | `info` | |
| 17 | +//! | `SKCC_OUT_DIR` | Output directory | `./build/` | |
| 18 | +//! | `SKCC_SEMANTIC_CHECK` | Enable LLM semantic check | `false` | |
| 19 | +//! | `SKCC_GENERATE_SIGNATURE` | Generate signature files | `false` | |
| 20 | +//! | `SKCC_DEFAULT_TARGET` | Default compilation target | `claude` | |
| 21 | +//! | `SKCC_MCP_WHITELIST` | MCP server whitelist (comma-separated) | `*` | |
| 22 | +//! | `SKCC_ALLOW_UNDECLARED_MCP` | Allow undeclared MCP servers | `false` | |
| 23 | +//! | `SKCC_HIGH_RISK_KEYWORDS` | High-risk keywords (comma-separated) | (built-in list) | |
| 24 | +//! | `SKCC_FORCE_HITL_CRITICAL` | Force HITL for critical level | `true` | |
| 25 | +//! | `SKCC_LOG_LEVEL` | Log level | `info` | |
26 | 26 | //! | `OPENAI_API_KEY` | OpenAI API key | - | |
27 | 27 | //! | `OPENAI_API_BASE` | OpenAI API base URL | - | |
28 | 28 | //! | `GITHUB_TOKEN` | GitHub token | - | |
@@ -208,35 +208,45 @@ impl Config { |
208 | 208 | openai_api_key: std::env::var("OPENAI_API_KEY").ok(), |
209 | 209 | openai_api_base: std::env::var("OPENAI_API_BASE").ok(), |
210 | 210 | github_token: std::env::var("GITHUB_TOKEN").ok(), |
211 | | - default_out_dir: std::env::var("NSC_OUT_DIR") |
| 211 | + default_out_dir: std::env::var("SKCC_OUT_DIR") |
| 212 | + .or_else(|_| std::env::var("NSC_OUT_DIR")) |
212 | 213 | .map(PathBuf::from) |
213 | 214 | .unwrap_or_else(|_| default_out_dir()), |
214 | | - default_target: std::env::var("NSC_DEFAULT_TARGET") |
| 215 | + default_target: std::env::var("SKCC_DEFAULT_TARGET") |
| 216 | + .or_else(|_| std::env::var("NSC_DEFAULT_TARGET")) |
215 | 217 | .ok() |
216 | 218 | .and_then(|v| v.parse().ok()) |
217 | 219 | .unwrap_or_default(), |
218 | | - generate_signature: std::env::var("NSC_GENERATE_SIGNATURE") |
| 220 | + generate_signature: std::env::var("SKCC_GENERATE_SIGNATURE") |
| 221 | + .or_else(|_| std::env::var("NSC_GENERATE_SIGNATURE")) |
219 | 222 | .map(|v| v == "true" || v == "1") |
220 | 223 | .unwrap_or(false), |
221 | | - mcp_whitelist: std::env::var("NSC_MCP_WHITELIST") |
| 224 | + mcp_whitelist: std::env::var("SKCC_MCP_WHITELIST") |
| 225 | + .or_else(|_| std::env::var("NSC_MCP_WHITELIST")) |
222 | 226 | .map(|v| v.split(',').map(|s| s.trim().to_string()).collect()) |
223 | 227 | .unwrap_or_else(|_| default_mcp_whitelist()), |
224 | | - allow_undeclared_mcp: std::env::var("NSC_ALLOW_UNDECLARED_MCP") |
| 228 | + allow_undeclared_mcp: std::env::var("SKCC_ALLOW_UNDECLARED_MCP") |
| 229 | + .or_else(|_| std::env::var("NSC_ALLOW_UNDECLARED_MCP")) |
225 | 230 | .map(|v| v == "true" || v == "1") |
226 | 231 | .unwrap_or(false), |
227 | | - high_risk_keywords: std::env::var("NSC_HIGH_RISK_KEYWORDS") |
| 232 | + high_risk_keywords: std::env::var("SKCC_HIGH_RISK_KEYWORDS") |
| 233 | + .or_else(|_| std::env::var("NSC_HIGH_RISK_KEYWORDS")) |
228 | 234 | .map(|v| v.split(',').map(|s| s.trim().to_string()).collect()) |
229 | 235 | .unwrap_or_else(|_| default_high_risk_keywords()), |
230 | | - force_hitl_critical: std::env::var("NSC_FORCE_HITL_CRITICAL") |
| 236 | + force_hitl_critical: std::env::var("SKCC_FORCE_HITL_CRITICAL") |
| 237 | + .or_else(|_| std::env::var("NSC_FORCE_HITL_CRITICAL")) |
231 | 238 | .map(|v| v != "false" && v != "0") |
232 | 239 | .unwrap_or_else(|_| default_force_hitl_critical()), |
233 | | - semantic_check_enabled: std::env::var("NSC_SEMANTIC_CHECK") |
| 240 | + semantic_check_enabled: std::env::var("SKCC_SEMANTIC_CHECK") |
| 241 | + .or_else(|_| std::env::var("NSC_SEMANTIC_CHECK")) |
234 | 242 | .map(|v| v == "true" || v == "1") |
235 | 243 | .unwrap_or(false), |
236 | | - log_level: std::env::var("NSC_LOG_LEVEL") |
| 244 | + log_level: std::env::var("SKCC_LOG_LEVEL") |
| 245 | + .or_else(|_| std::env::var("NSC_LOG_LEVEL")) |
237 | 246 | .or_else(|_| std::env::var("RUST_LOG")) |
238 | 247 | .unwrap_or_else(|_| default_log_level()), |
239 | | - verbose: std::env::var("NSC_VERBOSE") |
| 248 | + verbose: std::env::var("SKCC_VERBOSE") |
| 249 | + .or_else(|_| std::env::var("NSC_VERBOSE")) |
240 | 250 | .map(|v| v == "true" || v == "1") |
241 | 251 | .unwrap_or(false), |
242 | 252 | color_output: std::env::var("NO_COLOR") |
@@ -337,36 +347,37 @@ impl Config { |
337 | 347 | if let Ok(token) = std::env::var("GITHUB_TOKEN") { |
338 | 348 | self.github_token = Some(token); |
339 | 349 | } |
340 | | - if let Ok(dir) = std::env::var("NSC_OUT_DIR") { |
| 350 | + // Support both SKCC_* (new) and NSC_* (legacy) env var names |
| 351 | + if let Ok(dir) = std::env::var("SKCC_OUT_DIR").or_else(|_| std::env::var("NSC_OUT_DIR")) { |
341 | 352 | self.default_out_dir = PathBuf::from(dir); |
342 | 353 | } |
343 | | - if let Ok(target) = std::env::var("NSC_DEFAULT_TARGET") { |
| 354 | + if let Ok(target) = std::env::var("SKCC_DEFAULT_TARGET").or_else(|_| std::env::var("NSC_DEFAULT_TARGET")) { |
344 | 355 | if let Ok(t) = target.parse() { |
345 | 356 | self.default_target = t; |
346 | 357 | } |
347 | 358 | } |
348 | | - if let Ok(sig) = std::env::var("NSC_GENERATE_SIGNATURE") { |
| 359 | + if let Ok(sig) = std::env::var("SKCC_GENERATE_SIGNATURE").or_else(|_| std::env::var("NSC_GENERATE_SIGNATURE")) { |
349 | 360 | self.generate_signature = sig == "true" || sig == "1"; |
350 | 361 | } |
351 | | - if let Ok(whitelist) = std::env::var("NSC_MCP_WHITELIST") { |
| 362 | + if let Ok(whitelist) = std::env::var("SKCC_MCP_WHITELIST").or_else(|_| std::env::var("NSC_MCP_WHITELIST")) { |
352 | 363 | self.mcp_whitelist = whitelist.split(',').map(|s| s.trim().to_string()).collect(); |
353 | 364 | } |
354 | | - if let Ok(allow) = std::env::var("NSC_ALLOW_UNDECLARED_MCP") { |
| 365 | + if let Ok(allow) = std::env::var("SKCC_ALLOW_UNDECLARED_MCP").or_else(|_| std::env::var("NSC_ALLOW_UNDECLARED_MCP")) { |
355 | 366 | self.allow_undeclared_mcp = allow == "true" || allow == "1"; |
356 | 367 | } |
357 | | - if let Ok(keywords) = std::env::var("NSC_HIGH_RISK_KEYWORDS") { |
| 368 | + if let Ok(keywords) = std::env::var("SKCC_HIGH_RISK_KEYWORDS").or_else(|_| std::env::var("NSC_HIGH_RISK_KEYWORDS")) { |
358 | 369 | self.high_risk_keywords = keywords.split(',').map(|s| s.trim().to_string()).collect(); |
359 | 370 | } |
360 | | - if let Ok(force) = std::env::var("NSC_FORCE_HITL_CRITICAL") { |
| 371 | + if let Ok(force) = std::env::var("SKCC_FORCE_HITL_CRITICAL").or_else(|_| std::env::var("NSC_FORCE_HITL_CRITICAL")) { |
361 | 372 | self.force_hitl_critical = force != "false" && force != "0"; |
362 | 373 | } |
363 | | - if let Ok(check) = std::env::var("NSC_SEMANTIC_CHECK") { |
| 374 | + if let Ok(check) = std::env::var("SKCC_SEMANTIC_CHECK").or_else(|_| std::env::var("NSC_SEMANTIC_CHECK")) { |
364 | 375 | self.semantic_check_enabled = check == "true" || check == "1"; |
365 | 376 | } |
366 | | - if let Ok(level) = std::env::var("NSC_LOG_LEVEL").or_else(|_| std::env::var("RUST_LOG")) { |
| 377 | + if let Ok(level) = std::env::var("SKCC_LOG_LEVEL").or_else(|_| std::env::var("NSC_LOG_LEVEL")).or_else(|_| std::env::var("RUST_LOG")) { |
367 | 378 | self.log_level = level; |
368 | 379 | } |
369 | | - if let Ok(verbose) = std::env::var("NSC_VERBOSE") { |
| 380 | + if let Ok(verbose) = std::env::var("SKCC_VERBOSE").or_else(|_| std::env::var("NSC_VERBOSE")) { |
370 | 381 | self.verbose = verbose == "true" || verbose == "1"; |
371 | 382 | } |
372 | 383 | if let Ok(no_color) = std::env::var("NO_COLOR") { |
|
0 commit comments