2
2
mirror of https://github.com/Hilbis/Hilbish synced 2025-06-06 12:32:03 +00:00

146 lines
13 KiB
HTML

<!doctype html>
<html class="bg-stone-50 dark:bg-neutral-900 text-black dark:text-white"><head><meta content="width=device-width, initial-scale=1.0" name="viewport"><link href="/tailwind.css" rel="stylesheet"><title>Hilbish</title><meta content="#ff89dd" name="theme-color"><meta content="/hilbish-flower.png" property="og:image"><meta content="Hilbish" property="og:title"><meta content="Hilbish" property="og:site_name"><meta content="website" property="og:type"><meta content="Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua." property="og:description"><meta content="Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua." name="description"><meta content="Lua,Shell,Hilbish,Linux,zsh,bash" name="keywords"><meta content property="og:url"></head><body class="min-h-screen flex flex-col"><nav class="flex sticky top-0 w-full z-50 border-b border-b-zinc-300 backdrop-blur-md h-12"><div class="flex my-auto px-2"><div><a class="flex items-center gap-1" href="/"><img class="h-6" src="/hilbish-flower.png"><span class="self-center text-2xl">Hilbish</span></a></div></div></nav><div class="flex flex-col"><div class="h-10 flex py-2 px-4 border-b border-b-zinc-300 w-full gap-2 backdrop-blur-sm bg-zinc-300/50 dark:bg-zinc-800/50 z-50"><label class="cursor-pointer" for="sidebar-toggle"><tag><svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" class="fill-black"><path d="M120-240v-80h240v80H120Zm0-200v-80h480v80H120Zm0-200v-80h720v80H120Z"/></svg></tag></label><span>Module hilbish.runner</span></div><div class="grid"><input class="peer hidden" id="sidebar-toggle" type="checkbox"><div class="border-r border-r-zinc-300 col-start-1 row-start-1 sticky top-22 sm:top-12 h-full sm:h-svh bg-neutral-200 dark:bg-neutral-900 basis-3/5 transition-transform duration-300 -translate-x-full peer-checked:translate-x-0 z-30"><div class="p-4 -mb-4 overflow-y-auto h-full"><h2 class="text-xl font-semibold mb-4">Sidebar</h2><ul><li class="mb-2">Vim Mode</li><li class="mb-2">Completions</li><li class="mb-2">Lunacolors</li><li class="mb-2">Frequently Asked Questions</li><li class="mb-2">Getting Started</li><li class="mb-2">Introduction</li><li class="mb-2">Module hilbish</li><li class="mb-2">Module fs</li><li class="mb-2">Module snail</li><li class="mb-2">Module terminal</li><li class="mb-2">Module commander</li><li class="mb-2">API</li><li class="mb-2">Module bait</li><li class="mb-2">Module hilbish.module</li><li class="mb-2">Module hilbish.abbr</li><li class="mb-2">Module hilbish.userDir</li><li class="mb-2">Module hilbish.os</li><li class="mb-2">Module hilbish.history</li><li class="mb-2">Module hilbish.completion</li><li class="mb-2">Module hilbish.messages</li><li class="mb-2">Module hilbish.aliases</li><li class="mb-2">Module hilbish.runner</li><li class="mb-2">Module hilbish.timers</li><li class="mb-2">Module hilbish</li><li class="mb-2">Module hilbish.jobs</li><li class="mb-2">Module hilbish.editor</li><li class="mb-2">Actions</li><li class="mb-2">Module doc</li><li class="mb-2">Nature</li><li class="mb-2">Module dirs</li><li class="mb-2">Hilbish</li><li class="mb-2">Command</li><li class="mb-2">Signals</li><li class="mb-2">Signal</li><li class="mb-2">Notification</li><li class="mb-2">Runner Mode</li><li class="mb-2">Options</li><li class="mb-2">Features</li></ul></div></div><main class="col-start-1 row-start-1 transition-all duration-300 peer-checked:filter peer-checked:blur-sm peer-checked:bg-black/30 px-4 pt-2"><h1 class="font-bold text-4xl">Module hilbish.runner</h1><h2 class="font-bold text-3xl" id="Introduction-The-runner-interface-contains-functions-that-allow-the-user-to-change-how-Hilbish-interprets-interactive-input.-Users-can-add-and-change-the-default-runner-for-interactive-input-to-any-language-or-script-of-their-choosing.-A-good-example-is-using-it-to-write-command-in-Fennel.">Introduction
The runner interface contains functions that allow the user to change
how Hilbish interprets interactive input.
Users can add and change the default runner for interactive input to any
language or script of their choosing. A good example is using it to
write command in Fennel.</h2><p>Runners are functions that evaluate user input. The default runners in
Hilbish can run shell script and Lua code.</p><p>A runner is passed the input and has to return a table with these values.
All are not required, only the useful ones the runner needs to return.
(So if there isn&#39;t an error, just omit <code>err</code>.)</p><ul style="list-style-type:&#39;-&#39;;"><li><p><code>exitCode</code> (number): Exit code of the command</p></li><li><p><code>input</code> (string): The text input of the user. This is used by Hilbish to append extra input, in case</p></li></ul><p>more is requested.
- <code>err</code> (string): A string that represents an error from the runner.
This should only be set when, for example, there is a syntax error.
It can be set to a few special values for Hilbish to throw the right
hooks and have a better looking message.
- <code>\&lt;command&gt;: not-found</code> will throw a <code>command.not-found</code> hook
based on what <code>\&lt;command&gt;</code> is.
- <code>\&lt;command&gt;: not-executable</code> will throw a <code>command.not-executable</code> hook.
- <code>continue</code> (boolean): Whether Hilbish should prompt the user for no input
- <code>newline</code> (boolean): Whether a newline should be added at the end of <code>input</code>.</p><p>Here is a simple example of a fennel runner. It falls back to
shell script if fennel eval has an error.
<code>lua
local fennel = require &#39;fennel&#39;</code></p><p>hilbish.runnerMode(function(input)
local ok = pcall(fennel.eval, input)
if ok then
return {
input = input
}
end</p><p> return hilbish.runner.sh(input)
end)
<code></code></p><h2 class="font-bold text-3xl" id="Functions-|||-|----|----|-|&lt;a-href=&quot;runner.lua&quot;&gt;lua(cmd)&lt;/a&gt;|Evaluates-cmd-as-Lua-input.-This-is-the-same-as-using-dofile|-|&lt;a-href=&quot;sh&quot;&gt;sh()&lt;/a&gt;|nil|-|&lt;a-href=&quot;setMode&quot;&gt;setMode(mode)&lt;/a&gt;|*NOTE:-This-function-is-deprecated-and-will-be-removed-in-3.0|-|&lt;a-href=&quot;setCurrent&quot;&gt;setCurrent(name)&lt;/a&gt;|Sets-Hilbish&#39;s-runner-mode-by-name.|-|&lt;a-href=&quot;set&quot;&gt;set(name-runner)&lt;/a&gt;|Sets*-a-runner-by-name.-The-difference-between-this-function-and|-|&lt;a-href=&quot;run&quot;&gt;run(input-priv)&lt;/a&gt;|Runs-input-with-the-currently-set-Hilbish-runner.|-|&lt;a-href=&quot;getCurrent&quot;&gt;getCurrent()&lt;/a&gt;|Returns-the-current-runner-by-name.|-|&lt;a-href=&quot;get&quot;&gt;get(name)&lt;/a&gt;|Get-a-runner-by-name.|-|&lt;a-href=&quot;exec&quot;&gt;exec(cmd-runnerName)&lt;/a&gt;|Executes-cmd-with-a-runner.|-|&lt;a-href=&quot;add&quot;&gt;add(name-runner)&lt;/a&gt;|Adds-a-runner-to-the-table-of-available-runners.|">Functions
|||
|----|----|
|&lt;a href=&quot;#runner.lua&quot;&gt;lua(cmd)&lt;/a&gt;|Evaluates <code>cmd</code> as Lua input. This is the same as using <code>dofile</code>|
|&lt;a href=&quot;#sh&quot;&gt;sh()&lt;/a&gt;|nil|
|&lt;a href=&quot;#setMode&quot;&gt;setMode(mode)&lt;/a&gt;|*<strong>NOTE: This function is deprecated and will be removed in 3.0</strong><strong>|
|&lt;a href=&quot;#setCurrent&quot;&gt;setCurrent(name)&lt;/a&gt;|Sets Hilbish&#39;s runner mode by name.|
|&lt;a href=&quot;#set&quot;&gt;set(name, runner)&lt;/a&gt;|</strong>Sets* a runner by name. The difference between this function and|
|&lt;a href=&quot;#run&quot;&gt;run(input, priv)&lt;/a&gt;|Runs <code>input</code> with the currently set Hilbish runner.|
|&lt;a href=&quot;#getCurrent&quot;&gt;getCurrent()&lt;/a&gt;|Returns the current runner by name.|
|&lt;a href=&quot;#get&quot;&gt;get(name)&lt;/a&gt;|Get a runner by name.|
|&lt;a href=&quot;#exec&quot;&gt;exec(cmd, runnerName)&lt;/a&gt;|Executes <code>cmd</code> with a runner.|
|&lt;a href=&quot;#add&quot;&gt;add(name, runner)&lt;/a&gt;|Adds a runner to the table of available runners.|</h2><p>&lt;hr&gt;
&lt;div id=&#39;runner.lua&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.lua(cmd)
&lt;a href=&quot;#runner.lua&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>Evaluates <code>cmd</code> as Lua input. This is the same as using <code>dofile</code>
or <code>load</code>, but is appropriated for the runner interface. </p><p class="font-bold text-xl" id="Parameters-string-**cmd**">Parameters
<code>string</code> **<code>cmd</code>** </p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;add&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.add(name, runner)
&lt;a href=&quot;#add&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>Adds a runner to the table of available runners.
If runner is a table, it must have the run function in it.
#### Parameters
<code>name</code> **<code>string</code>**
Name of the runner</p><p><code>runner</code> **<code>function|table</code>**
</p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;exec&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.exec(cmd, runnerName)
&lt;a href=&quot;#exec&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>Executes <code>cmd</code> with a runner.
If <code>runnerName</code> is not specified, it uses the default Hilbish runner.
#### Parameters
<code>cmd</code> **<code>string</code>** </p><p><code>runnerName</code> **<code>string?</code>** </p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;get&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.get(name)
&lt;a href=&quot;#get&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>Get a runner by name.
#### Parameters
<code>name</code> **<code>string</code>**
Name of the runner to retrieve.</p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;getCurrent&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.getCurrent()
&lt;a href=&quot;#getCurrent&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>Returns the current runner by name.
#### Parameters
This function has no parameters.
&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;run&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.run(input, priv)
&lt;a href=&quot;#run&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>Runs <code>input</code> with the currently set Hilbish runner.
This method is how Hilbish executes commands.
<code>priv</code> is an optional boolean used to state if the input should be saved to history.
#### Parameters
<code>input</code> **<code>string</code>** </p><p><code>priv</code> **<code>bool</code>** </p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;set&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.set(name, runner)
&lt;a href=&quot;#set&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p><strong>Sets</strong> a runner by name. The difference between this function and
add, is set will <strong>not</strong> check if the named runner exists.
The runner table must have the run function in it.
#### Parameters
<code>name</code> **<code>string</code>** </p><p><code>runner</code> **<code>table</code>** </p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;setCurrent&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.setCurrent(name)
&lt;a href=&quot;#setCurrent&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>Sets Hilbish&#39;s runner mode by name.
#### Parameters
<code>name</code> **<code>string</code>** </p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;setMode&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.setMode(mode)
&lt;a href=&quot;#setMode&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p>*<strong>NOTE: This function is deprecated and will be removed in 3.0</strong>*
Use <code>hilbish.runner.setCurrent</code> instead.
This is the same as the <code>hilbish.runnerMode</code> function.
It takes a callback, which will be used to execute all interactive input.
Or a string which names the runner mode to use.
#### Parameters
<code>mode</code> **<code>string|function</code>** </p><p>&lt;/div&gt;</p><p>&lt;hr&gt;
&lt;div id=&#39;sh&#39;&gt;
&lt;h4 class=&#39;heading&#39;&gt;
hilbish.runner.sh()
&lt;a href=&quot;#sh&quot; class=&#39;heading-link&#39;&gt;
&lt;i class=&quot;fas fa-paperclip&quot;&gt;&lt;/i&gt;
&lt;/a&gt;
&lt;/h4&gt;</p><p class="font-bold text-xl" id="Parameters-This-function-has-no-parameters.---&lt;/div&gt;">Parameters
This function has no parameters.
&lt;/div&gt;</p></main></div></div><footer class="py-4 px-6 flex flex-row justify-around border-t border-t-zinc-300"><div class="flex flex-col"><a class="flex items-center gap-1" href><img class="h-24" src="/hilbish-flower.png"><span class="self-center text-6xl">Hilbish</span></a><span class="text-xl">The Moon-powered shell!</span><span class="text-light text-neutral-500">MIT License, copyright sammyette 2025</span></div><div class="flex flex-col"><a href="https://github.com/Rosettea/Hilbish"><span class="text-pink-300 text-light">GitHub</span></a></div></footer></body></html>