Maintain/Build/Constant.rs
1//=============================================================================//
2// File Path: Element/Maintain/Source/Build/Constant.rs
3//=============================================================================//
4// Module: Constant
5//
6// Brief Description: Build system constants and configuration values.
7//
8// RESPONSIBILITIES:
9// ================
10//
11// Primary:
12// - Provide file path constants
13// - Provide delimiter constants
14// - Provide environment variable name constants
15// - Serve as single source of truth for constant values
16//
17// Secondary:
18// - Ensure consistent naming across the build system
19//
20// ARCHITECTURAL ROLE:
21// ===================
22//
23// Position:
24// - Infrastructure/Configuration layer
25// - Constant definitions
26//
27// Dependencies (What this module requires):
28// - External crates: None
29// - Internal modules: None
30// - Traits implemented: None
31//
32// Dependents (What depends on this module):
33// - Build orchestration functions
34// - Argument parsing module
35// - Product name generation logic
36//
37// IMPLEMENTATION DETAILS:
38// =======================
39//
40// Design Patterns:
41// - Constant module pattern
42//
43// Performance Considerations:
44// - Complexity: O(1) - all are static constants
45// - Memory usage patterns: Static string slices
46// - Hot path optimizations: None needed
47//
48// Thread Safety:
49// - Thread-safe: Yes (all are immutable)
50// - Synchronization mechanisms used: None
51// - Interior mutability considerations: None
52//
53// Error Handling:
54// - Error types returned: None
55// - Recovery strategies: Not applicable
56//
57// EXAMPLES:
58// =========
59//
60// Example 1: Using file path constants
61/// ```rust
62/// use crate::Maintain::Source::Build::Constant;
63/// let cargo_path = project_dir.join(CargoFile);
64/// ```
65//
66// Example 2: Using delimiter constants
67/// ```rust
68/// use crate::Maintain::Source::Build::Constant;
69/// let product_name = parts.join(NameDelimiter);
70/// ```
71//
72// Example 3: Using environment variable constants
73/// ```rust
74/// use crate::Maintain::Source::Build::Constant;
75/// let node_env = std::env::var(NodeEnv);
76/// ```
77//
78//=============================================================================//
79// IMPLEMENTATION
80//=============================================================================//
81
82// File path constants
83pub const CargoFile: &str = "Cargo.toml";
84pub const JsonFile: &str = "tauri.conf.json";
85pub const JsonfiveFile: &str = "tauri.conf.json5";
86
87// Default values
88pub const DirectoryDefault: &str = "Element/Mountain";
89pub const NameDefault: &str = "Mountain";
90pub const PrefixDefault: &str = "land.editor.binary";
91
92// Delimiter constants
93pub const BackupSuffix: &str = ".Backup";
94pub const IdDelimiter: &str = ".";
95pub const NameDelimiter: &str = "_";
96
97// Environment variable constants
98pub const BrowserEnv: &str = "Browser";
99pub const BundleEnv: &str = "Bundle";
100pub const CleanEnv: &str = "Clean";
101pub const CompileEnv: &str = "Compile";
102pub const DebugEnv: &str = "Debug";
103pub const DependencyEnv: &str = "Dependency";
104pub const DirEnv: &str = "MOUNTAIN_DIR";
105pub const LogEnv: &str = "RUST_LOG";
106pub const NameEnv: &str = "MOUNTAIN_ORIGINAL_BASE_NAME";
107pub const NodeEnv: &str = "NODE_ENV";
108pub const NodeVersionEnv: &str = "NODE_VERSION";
109pub const PrefixEnv: &str = "MOUNTAIN_BUNDLE_ID_PREFIX";