Skip to main content

neo_decompiler/cli/runner/
mod.rs

1//! CLI command execution.
2
3mod catalog;
4mod cfg;
5mod common;
6mod decompile;
7mod disasm;
8mod info;
9mod schema;
10mod tokens;
11
12use crate::error::Result;
13
14use super::args::{Cli, Command};
15
16impl Cli {
17    /// Execute the selected CLI subcommand.
18    ///
19    /// # Errors
20    ///
21    /// Returns an error if the subcommand encounters an I/O failure, a
22    /// malformed NEF container, an invalid manifest, or a disassembly problem.
23    pub fn run(&self) -> Result<()> {
24        match &self.command {
25            Command::Info { path, format } => self.run_info(path, *format),
26            Command::Disasm {
27                path,
28                format,
29                fail_on_unknown_opcodes,
30            } => self.run_disasm(path, *format, *fail_on_unknown_opcodes),
31            Command::Cfg {
32                path,
33                fail_on_unknown_opcodes,
34            } => self.run_cfg(path, *fail_on_unknown_opcodes),
35            Command::Decompile {
36                path,
37                format,
38                output_format,
39                fail_on_unknown_opcodes,
40                inline_single_use_temps,
41            } => self.run_decompile(
42                path,
43                *format,
44                *output_format,
45                *fail_on_unknown_opcodes,
46                *inline_single_use_temps,
47            ),
48            Command::Tokens { path, format } => self.run_tokens(path, *format),
49            Command::Catalog(args) => self.run_catalog(args),
50            Command::Schema(args) => self.run_schema(args),
51        }
52    }
53}