Improve runner API

Some API improvements on top of #324
pull/326/head
Arijit Basu 3 years ago committed by Arijit Basu
parent 671d1b11fd
commit 3f668c2d04

@ -1,5 +1,5 @@
fn main() {
match xplr::runner::Runner::new(xplr::cli::Cli::default()).and_then(|a| a.run()) {
match xplr::app::runner().and_then(|a| a.run()) {
Ok(Some(out)) => print!("{}", out),
Ok(None) => {}
Err(err) => {

@ -1,4 +1,4 @@
use crate::cli;
use crate::cli::Cli;
use crate::config::Config;
use crate::config::Mode;
use crate::explorer;
@ -2900,6 +2900,12 @@ impl App {
}
}
pub fn runner(cli: cli::Cli) -> Result<Runner> {
Runner::new(cli)
/// Create a new runner object passing the default arguments
pub fn runner() -> Result<Runner> {
Runner::new()
}
/// Create a new runner object passing the given arguments
pub fn from_cli(cli: Cli) -> Result<Runner> {
Runner::from_cli(cli)
}

@ -2,7 +2,8 @@
use std::env;
use xplr::{cli::Cli, runner::Runner};
use xplr::app;
use xplr::cli::Cli;
fn main() {
let cli = Cli::parse(env::args()).unwrap_or_else(|e| {
@ -46,7 +47,7 @@ fn main() {
} else if cli.version {
println!("xplr {}", xplr::app::VERSION);
} else {
match Runner::new(cli).and_then(|a| a.run()) {
match app::from_cli(cli).and_then(|a| a.run()) {
Ok(Some(out)) => print!("{}", out),
Ok(None) => {}
Err(err) => {

@ -5,6 +5,7 @@ use std::{env, io};
use crate::app;
/// The arguments to pass
#[derive(Debug, Clone, Default)]
pub struct Cli {
pub version: bool,
@ -17,6 +18,7 @@ pub struct Cli {
}
impl Cli {
/// Parse arguments from the command-line
pub fn parse(args: env::Args) -> Result<Self> {
let mut args: VecDeque<String> = args.skip(1).collect();
let mut cli = Self::default();

@ -1,6 +1,7 @@
#![allow(clippy::too_many_arguments)]
use crate::app;
use crate::cli::Cli;
use crate::event_reader;
use crate::explorer;
use crate::lua;
@ -106,7 +107,13 @@ pub struct Runner {
}
impl Runner {
pub fn new(cli: crate::cli::Cli) -> Result<Self> {
/// Create a new runner object passing the default arguments
pub fn new() -> Result<Self> {
Self::from_cli(Default::default())
}
/// Create a new runner object passing the given arguments
pub fn from_cli(cli: Cli) -> Result<Self> {
let basedir = std::env::current_dir()?;
let mut pwd = cli
.path
@ -129,6 +136,7 @@ impl Runner {
})
}
/// Run the instance
pub fn run(self) -> Result<Option<String>> {
// Why unsafe? See https://github.com/sayanarijit/xplr/issues/309
let lua = unsafe { mlua::Lua::unsafe_new() };

Loading…
Cancel
Save