Hilbish/docs/api/commander.md

1.6 KiB

title description layout menu
Module commander library for custom commands doc
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:

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