Skip to content

Commit 2353c57

Browse files
author
Marco Thomas
committed
Add fancy cmd-line parsing
1 parent 95976b9 commit 2353c57

File tree

3 files changed

+119
-15
lines changed

3 files changed

+119
-15
lines changed

Cargo.lock

+94
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ edition = "2018"
88

99
[dependencies]
1010
rand = "0.8.3"
11+
clap = "2.33.3"
1112

1213
[dependencies.sdl2]
1314
version = "0.34.5"

src/main.rs

+24-15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
extern crate rand;
2-
extern crate sdl2;
3-
4-
use std::env;
1+
use clap::{App, Arg};
52

63
mod cartridge;
74
mod display;
@@ -18,20 +15,32 @@ const SCREEN_WIDTH: usize = 64;
1815
const SCREEN_HEIGHT: usize = 32;
1916
const SCREEN_SCALE: usize = 20;
2017

21-
fn main() {
22-
let game_file = env::args().nth(1);
23-
match game_file {
24-
Some(_) => println!("Found a cartridge file! Trying to load..."),
25-
None => {
26-
println!("No cartridge file found! Exiting!");
27-
return;
28-
}
29-
};
18+
#[derive(Debug)]
19+
enum ChipError {
20+
CartridgeNotFound,
21+
}
22+
23+
fn main() -> Result<(), ChipError> {
24+
let app = App::new("chip8-rs")
25+
.version("0.1.0")
26+
.author("Marco Thomas <[email protected]>")
27+
.about("A small chip8 emulator, written in Rust")
28+
.arg(
29+
Arg::with_name("cartridge")
30+
.short("c")
31+
.takes_value(true)
32+
.help("A cartridge binary file"),
33+
)
34+
.get_matches();
35+
36+
let game_file = app
37+
.value_of("cartridge")
38+
.ok_or(ChipError::CartridgeNotFound)?;
3039

3140
let mut processor = Processor::new();
3241

33-
// load cartridge file
34-
let cartridge = Cartridge::new(&game_file.unwrap());
42+
let cartridge = Cartridge::new(&game_file);
3543

3644
processor.start(&cartridge.rom);
45+
Ok(())
3746
}

0 commit comments

Comments
 (0)