#module #zsh #high-level #framework #built-in #command #string

nightly zsh-module

创建zsh模块的高级别框架

6个版本

0.3.0 2023年2月1日
0.2.2 2023年1月19日
0.1.1 2023年1月16日

7 in #built-in

MIT 许可证

30KB
614 代码行(不含注释)

Zsh Module — 最新版本

这是一个高级crate,允许您定义自己的zsh模块。它目前处于早期阶段,但可以用于定义命令。

未来,将添加大多数zsh模块功能。如果您想添加更多功能,请随意发送PR :)

特性

  • 定义自定义内建命令
    • 定义和查询使用的标志
  • 调用zsh
  • 查询环境变量
    • 作为解决方案:可以使用std::os API。
  • 使用zsh当前的stdin文件描述符。
    • 您可以使用std::io::stdin,但可能会在某些情况下损坏。
  • 定义自定义内建数学函数
  • 定义自定义全局变量
  • 更多功能将陆续推出!

入门指南

请参阅我们的在线文档以获取快速入门指南。

示例模块

创建模块非常简单,以下是我们示例模块greeter的摘录

use zsh_module::{Builtin, MaybeError, Module, ModuleBuilder, Opts};

// Notice how this module gets installed as `rgreeter`
zsh_module::export_module!(rgreeter, setup);

struct Greeter;

impl Greeter {
    fn greet_cmd(&mut self, _name: &str, _args: &[&str], _opts: Opts) -> MaybeError {
        println!("Hello, world!");
        Ok(())
    }
}

fn setup() -> Result<Module, Box<dyn std::error::Error>> {
    let module = ModuleBuilder::new(Greeter)
        .builtin(Greeter::greet_cmd, Builtin::new("greet"))
        .build();
    Ok(module)
}

依赖项

~0.5–8MB
~49K SLoC