@@ -7,6 +7,8 @@ use std::path::Path;
77use std:: process:: { Command , exit} ;
88use std:: fs;
99
10+ mod system_check;
11+
1012fn main ( ) {
1113 print_banner ( ) ;
1214
@@ -26,6 +28,7 @@ fn main() {
2628 }
2729 "clean" => clean_build ( ) ,
2830 "install" => install_noviq ( ) ,
31+ "check" => check_system ( ) ,
2932 "help" | "--help" | "-h" => print_help ( ) ,
3033 "version" | "--version" | "-v" => print_version ( ) ,
3134 _ => {
@@ -37,16 +40,21 @@ fn main() {
3740}
3841
3942fn print_banner ( ) {
43+ let version = env ! ( "CARGO_PKG_VERSION" ) ;
4044 println ! ( "╔═══════════════════════════════════════╗" ) ;
4145 println ! ( "║ Photon Build Tool ║" ) ;
42- println ! ( "║ Noviq Programming Language v0.1 ║" ) ;
46+ println ! ( "║ Noviq Programming Language v{} ║" , version ) ;
4347 println ! ( "╚═══════════════════════════════════════╝" ) ;
4448 println ! ( ) ;
4549}
4650
4751fn print_version ( ) {
48- println ! ( "Photon v0.1.0" ) ;
49- println ! ( "Build tool for Noviq Programming Language" ) ;
52+ let version = env ! ( "CARGO_PKG_VERSION" ) ;
53+ let name = env ! ( "CARGO_PKG_NAME" ) ;
54+ let description = env ! ( "CARGO_PKG_DESCRIPTION" ) ;
55+
56+ println ! ( "{} v{}" , name. chars( ) . next( ) . unwrap( ) . to_uppercase( ) . to_string( ) + & name[ 1 ..] , version) ;
57+ println ! ( "{}" , description) ;
5058}
5159
5260fn print_help ( ) {
@@ -60,6 +68,7 @@ fn print_help() {
6068 println ! ( ) ;
6169 println ! ( " clean Clean build artifacts" ) ;
6270 println ! ( " install Install built binary to libs/" ) ;
71+ println ! ( " check Check system requirements" ) ;
6372 println ! ( " help Show this help message" ) ;
6473 println ! ( " version Show version information" ) ;
6574 println ! ( ) ;
@@ -69,6 +78,7 @@ fn print_help() {
6978 println ! ( " photon build snapshot # Snapshot build with git hash" ) ;
7079 println ! ( " photon clean # Clean build directory" ) ;
7180 println ! ( " photon install # Install to libs/" ) ;
81+ println ! ( " photon check # Verify system requirements" ) ;
7282 println ! ( ) ;
7383 println ! ( "BUILD PROFILES:" ) ;
7484 println ! ( " debug - Unoptimized with debug symbols" ) ;
@@ -82,6 +92,13 @@ fn print_help() {
8292}
8393
8494fn build_noviq ( profile : & str ) {
95+ // First, verify system requirements
96+ if !system_check:: verify_system_requirements ( false ) {
97+ println ! ( ) ;
98+ system_check:: verify_system_requirements ( true ) ;
99+ exit ( 1 ) ;
100+ }
101+
85102 println ! ( "[*] Building Noviq ({} mode)..." , profile) ;
86103 println ! ( ) ;
87104
@@ -256,3 +273,43 @@ fn install_noviq() {
256273 println ! ( "[WARN] No binaries installed. Build Noviq first with 'photon build'" ) ;
257274 }
258275}
276+
277+ fn check_system ( ) {
278+ println ! ( "[*] Verifying system requirements..." ) ;
279+ println ! ( ) ;
280+
281+ let results = system_check:: run_all_checks ( ) ;
282+ let mut all_critical_passed = true ;
283+
284+ // Print results
285+ for result in & results {
286+ println ! ( " {}" , result) ;
287+
288+ // Only Rust, Cargo, and Git are critical
289+ if !result. passed && result. name != "LLVM" {
290+ all_critical_passed = false ;
291+ }
292+ }
293+
294+ println ! ( ) ;
295+
296+ if all_critical_passed {
297+ println ! ( "[✓] All system requirements satisfied!" ) ;
298+ println ! ( " You're ready to build Noviq!" ) ;
299+ } else {
300+ println ! ( "[✗] Some critical requirements are missing!" ) ;
301+ println ! ( ) ;
302+ println ! ( "Please install the missing components:" ) ;
303+
304+ for result in & results {
305+ if !result. passed && result. name != "LLVM" {
306+ println ! ( " • {} - {}" , result. name, result. message) ;
307+ }
308+ }
309+
310+ println ! ( ) ;
311+ println ! ( "Quick Install Guide:" ) ;
312+ println ! ( " Rust & Cargo: https://rustup.rs" ) ;
313+ println ! ( " Git: https://git-scm.com/downloads" ) ;
314+ }
315+ }
0 commit comments