1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//!
//! Cli trait for implementing a user-side command-line processor.
//!

use crate::result::Result;
use crate::terminal::Terminal;
use async_trait::async_trait;
use std::sync::Arc;

#[async_trait]
pub trait Cli: Sync + Send {
    fn init(&self, _term: &Arc<Terminal>) -> Result<()> {
        Ok(())
    }
    async fn digest(&self, term: Arc<Terminal>, cmd: String) -> Result<()>;
    async fn complete(&self, term: Arc<Terminal>, cmd: String) -> Result<Vec<String>>;
}