Module commander

Sidebar

  • Vim Mode
  • Completions
  • Lunacolors
  • Frequently Asked Questions
  • Getting Started
  • Introduction
  • Module hilbish
  • Module fs
  • Module snail
  • Module terminal
  • Module commander
  • API
  • Module bait
  • Module hilbish.module
  • Module hilbish.abbr
  • Module hilbish.userDir
  • Module hilbish.os
  • Module hilbish.history
  • Module hilbish.completion
  • Module hilbish.messages
  • Module hilbish.aliases
  • Module hilbish.runner
  • Module hilbish.timers
  • Module hilbish
  • Module hilbish.jobs
  • Module hilbish.editor
  • Actions
  • Module doc
  • Nature
  • Module dirs
  • Hilbish
  • Command
  • Signals
  • Signal
  • Notification
  • Runner Mode
  • Options
  • Features

Module commander

Introduction

Commander is the library which handles Hilbish commands. This makes the user able to add Lua-written commands to their shell without making a separate script in a bin folder. Instead, you may simply use the Commander library in your Hilbish config.

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?

The sinks parameter is a table with 3 keys: input, out, and err. There is an in alias to input, but it requires using the string accessor syntax (sinks['in']) as in is also a Lua keyword, so input is preferred for use. All of them are a <a href="/Hilbish/docs/api/hilbish/#sink" style="text-decoration: none;">Sink</a>. In the future, sinks.in will be removed.

  • in is the standard input.

You may use the read functions on this sink to get input from the user. - out is standard output. This is usually where command output should go. - err is standard error. This sink is for writing errors, as the name would suggest.

Functions ||| |----|----| |<a href="#deregister">deregister(name)</a>|Removes the named command. Note that this will only remove Commander-registered commands.| |<a href="#register">register(name, cb)</a>|Adds a new command with the given name. When Hilbish has to run a command with a name,| |<a href="#registry">registry() -> table</a>|Returns all registered commanders. Returns a list of tables with the following keys:|

<hr> <div id='deregister'> <h4 class='heading'> commander.deregister(name) <a href="#deregister" class='heading-link'> <i class="fas fa-paperclip"></i> </a> </h4>

Removes the named command. Note that this will only remove Commander-registered commands.

Parameters string **name** Name of the command to remove.

</div>

<hr> <div id='register'> <h4 class='heading'> commander.register(name, cb) <a href="#register" class='heading-link'> <i class="fas fa-paperclip"></i> </a> </h4>

Adds a new command with the given name. When Hilbish has to run a command with a name, it will run the function providing the arguments and sinks.

Parameters string **name** Name of the command

function **cb** Callback to handle command invocation

Example lua -- When you run the command `hello` in the shell, it will print `Hello world`. -- If you run it with, for example, `hello Hilbish`, it will print 'Hello Hilbish' commander.register('hello', function(args, sinks) local name = 'world' if #args > 0 then name = args[1] end

sinks.out:writeln('Hello ' .. name) end) </div>

<hr> <div id='registry'> <h4 class='heading'> commander.registry() -> table <a href="#registry" class='heading-link'> <i class="fas fa-paperclip"></i> </a> </h4>

Returns all registered commanders. Returns a list of tables with the following keys: - exec: The function used to run the commander. Commanders require args and sinks to be passed.

Parameters This function has no parameters. </div>