shell_client 0.1.0

Rust进程调试工具,封装了与Unix域套接字通信、命令行自动补全、以及内置命令处理等功能。Client 可以连接到一个进程,发送自定义命令,并处理来自该进程的输出。实现了命令行读取、命令解析、进程查找、自动补全、命令执行等功能,并提供了一个循环来不断读取用户输入并执行相应的命令
Documentation
//! pad 命令的完成器,用于完成进程列表
use linefeed::{complete::Completion, prompter::Prompter, terminal::DefaultTerminal};

use crate::{completer::Completer, sys};

pub struct AttachCommandCompleter;

impl linefeed::complete::Completer<DefaultTerminal> for AttachCommandCompleter {
    fn complete(
        &self,
        word: &str,
        _prompter: &Prompter<DefaultTerminal>,
        _start: usize,
        _end: usize,
    ) -> Option<Vec<Completion>> {
        crate::completer::gen_autocomplete_item(&sys::get_process_list(), word)
    }
}

impl Completer for AttachCommandCompleter {
    fn filter(_w: &str, b: &str) -> bool {
        b.split_whitespace()
            .map(|x| x.trim().to_owned())
            .next()
            .unwrap_or("".to_owned())
            == "attach"
    }

    fn new() -> Box<dyn Completer> {
        Box::new(AttachCommandCompleter)
    }
}