on master help sign in
Add proper help system with --help and --version flags
81ffa6aiko
src/main.rs+33−1
@@ -49,6 +49,30 @@ fn compile(input_path: &str, dev: bool) -> (bool, Vec<PathBuf>) {
49 (has_errors, result.included_files)
49 (has_errors, result.included_files)
50}
50}
51
51
52+fn print_help() {
53+ eprintln!(
54+ "\
55+htmlang {} - a minimalist layout language that compiles to static HTML
56+
57+Usage: htmlang [options] <file.hl>
58+
59+Options:
60+ -w, --watch Watch for changes and recompile
61+ -s, --serve Start dev server with hot reload (implies --watch)
62+ -p, --port <N> Port for dev server (default: 3000)
63+ -d, --dev Development mode
64+ -h, --help Show this help
65+ -V, --version Show version
66+
67+Examples:
68+ htmlang page.hl Compile page.hl to page.html
69+ htmlang -w page.hl Recompile on file changes
70+ htmlang -s page.hl Start dev server with hot reload
71+ htmlang -s -p 8080 page.hl",
72+ env!("CARGO_PKG_VERSION")
73+ );
74+}
75+
52fn main() {
76fn main() {
53 let args: Vec<String> = env::args().collect();
77 let args: Vec<String> = env::args().collect();
54 let mut watch = false;
78 let mut watch = false;
@@ -60,6 +84,14 @@ fn main() {
60 let mut i = 1;
84 let mut i = 1;
61 while i < args.len() {
85 while i < args.len() {
62 match args[i].as_str() {
86 match args[i].as_str() {
87+ "--help" | "-h" => {
88+ print_help();
89+ process::exit(0);
90+ }
91+ "--version" | "-V" => {
92+ println!("htmlang {}", env!("CARGO_PKG_VERSION"));
93+ process::exit(0);
94+ }
63 "--watch" | "-w" => watch = true,
95 "--watch" | "-w" => watch = true,
64 "--dev" | "-d" => dev = true,
96 "--dev" | "-d" => dev = true,
65 "--serve" | "-s" => {
97 "--serve" | "-s" => {
@@ -93,7 +125,7 @@ fn main() {
93 let input_path = match input_path {
125 let input_path = match input_path {
94 Some(p) => p,
126 Some(p) => p,
95 None => {
127 None => {
96− eprintln!("Usage: htmlang [--watch] [--serve [--port N]] [--dev] <file.hl>");
128+ print_help();
97 process::exit(1);
129 process::exit(1);
98 }
130 }
99 };
131 };