mirror of
https://github.com/Hilbis/Hilbish
synced 2025-06-30 16:22:03 +00:00
to write output, you would usually just use the print builtin since commanders are just lua custom commands but this does not consider the fact of pipes or other shell operators being used to redirect or whatever. this adds readable/writable "sinks" which is a type for input or output and is currently only used for commanders but can be used for other hilbish things in the future
54 lines
1.6 KiB
Markdown
54 lines
1.6 KiB
Markdown
---
|
|
title: Module commander
|
|
description: library for custom commands
|
|
layout: doc
|
|
menu:
|
|
docs:
|
|
parent: "API"
|
|
---
|
|
|
|
## Introduction
|
|
|
|
Commander is a library for writing custom commands in Lua.
|
|
In order to make it easier to write commands for Hilbish,
|
|
not require separate scripts and to be able to use in a config,
|
|
the Commander library exists. This is like a very simple wrapper
|
|
that works with Hilbish for writing commands. Example:
|
|
|
|
```lua
|
|
local commander = require 'commander'
|
|
|
|
commander.register('hello', function(args, sinks)
|
|
sinks.out:writeln 'Hello world!'
|
|
end)
|
|
```
|
|
|
|
In this example, a command with the name of `hello` is created
|
|
that will print `Hello world!` to output. One question you may
|
|
have is: What is the `sinks` parameter?
|
|
|
|
A sink is a writable/readable pipe, or you can imagine a Lua
|
|
file. It's used in this case to write to the proper output,
|
|
incase a user either pipes to another command or redirects somewhere else.
|
|
|
|
So, the `sinks` parameter is a table containing 3 sinks:
|
|
`in`, `out`, and `err`.
|
|
- `in` is the standard input. You can read from this sink
|
|
to get user input. (**This is currently unimplemented.**)
|
|
- `out` is standard output. This is usually where text meant for
|
|
output should go.
|
|
- `err` is standard error. This sink is for writing errors, as the
|
|
name would suggest.
|
|
|
|
A sink has 2 methods:
|
|
- `write(str)` will write to the sink.
|
|
- `writeln(str)` will write to the sink with a newline at the end.
|
|
|
|
## Functions
|
|
### deregister(name)
|
|
Deregisters any command registered with `name`
|
|
|
|
### register(name, cb)
|
|
Register a command with `name` that runs `cb` when ran
|
|
|