summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
new file mode 100644
index 0000000..e2b74d3
--- /dev/null
+++ b/src/main.rs
@@ -0,0 +1,43 @@
+//! Orrery: an ASCII sci-fi-fantasy game.
+//!
+//! `orrery` plays; `orrery names` and `orrery ship` print what the
+//! generators make, without the TUI.
+
+mod app;
+mod cli;
+mod dungeon;
+mod names;
+mod scenes;
+mod seed;
+mod term;
+
+use std::process::ExitCode;
+
+fn main() -> ExitCode {
+ let args: Vec<String> = std::env::args().skip(1).collect();
+ match cli::parse(&args) {
+ Ok(cli::Command::Play { seed }) => match app::run(seed.unwrap_or_else(seed::from_clock)) {
+ Ok(()) => ExitCode::SUCCESS,
+ Err(e) => {
+ eprintln!("orrery: {e}");
+ ExitCode::FAILURE
+ }
+ },
+ Ok(cli::Command::Names(opts)) => {
+ cli::print_names(&opts);
+ ExitCode::SUCCESS
+ }
+ Ok(cli::Command::Ship { seed, which }) => {
+ cli::print_ship(seed, which);
+ ExitCode::SUCCESS
+ }
+ Ok(cli::Command::Help) => {
+ print!("{}", cli::USAGE);
+ ExitCode::SUCCESS
+ }
+ Err(msg) => {
+ eprintln!("orrery: {msg}\n\n{}", cli::USAGE);
+ ExitCode::from(2)
+ }
+ }
+}