mirror of
https://github.com/Hilbis/Hilbish
synced 2025-07-01 16:52:03 +00:00
feat: move readline to golibs
This commit is contained in:
parent
1bb433dc64
commit
2117a3747b
@ -2,14 +2,14 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"path/filepath"
|
|
||||||
"go/ast"
|
"go/ast"
|
||||||
"go/doc"
|
"go/doc"
|
||||||
"go/parser"
|
"go/parser"
|
||||||
"go/token"
|
"go/token"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
"os"
|
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
md "github.com/atsushinee/go-markdown-generator/doc"
|
md "github.com/atsushinee/go-markdown-generator/doc"
|
||||||
@ -221,6 +221,10 @@ func setupDoc(mod string, fun *doc.Func) *docPiece {
|
|||||||
goto start
|
goto start
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if prefix[mod] == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
if (!strings.HasPrefix(fun.Name, prefix[mod]) && tags["interface"] == nil) || (strings.ToLower(fun.Name) == "loader" && tags["interface"] == nil) {
|
if (!strings.HasPrefix(fun.Name, prefix[mod]) && tags["interface"] == nil) || (strings.ToLower(fun.Name) == "loader" && tags["interface"] == nil) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -537,7 +541,6 @@ provided by Hilbish.
|
|||||||
mdTable.SetTitle(0, "")
|
mdTable.SetTitle(0, "")
|
||||||
mdTable.SetTitle(1, "")
|
mdTable.SetTitle(1, "")
|
||||||
|
|
||||||
|
|
||||||
for i, dps := range modu.Fields {
|
for i, dps := range modu.Fields {
|
||||||
mdTable.SetContent(i, 0, dps.FuncName)
|
mdTable.SetContent(i, 0, dps.FuncName)
|
||||||
mdTable.SetContent(i, 1, strings.Join(dps.Doc, " "))
|
mdTable.SetContent(i, 1, strings.Join(dps.Doc, " "))
|
||||||
@ -552,7 +555,6 @@ provided by Hilbish.
|
|||||||
mdTable.SetTitle(0, "")
|
mdTable.SetTitle(0, "")
|
||||||
mdTable.SetTitle(1, "")
|
mdTable.SetTitle(1, "")
|
||||||
|
|
||||||
|
|
||||||
for i, dps := range modu.Properties {
|
for i, dps := range modu.Properties {
|
||||||
mdTable.SetContent(i, 0, dps.FuncName)
|
mdTable.SetContent(i, 0, dps.FuncName)
|
||||||
mdTable.SetContent(i, 1, strings.Join(dps.Doc, " "))
|
mdTable.SetContent(i, 1, strings.Join(dps.Doc, " "))
|
||||||
|
@ -30,8 +30,6 @@ interfaces and functions which directly relate to shell functionality.
|
|||||||
|<a href="#read">read(prompt) -> input (string)</a>|Read input from the user, using Hilbish's line editor/input reader.|
|
|<a href="#read">read(prompt) -> input (string)</a>|Read input from the user, using Hilbish's line editor/input reader.|
|
||||||
|<a href="#timeout">timeout(cb, time) -> @Timer</a>|Executed the `cb` function after a period of `time`.|
|
|<a href="#timeout">timeout(cb, time) -> @Timer</a>|Executed the `cb` function after a period of `time`.|
|
||||||
|<a href="#which">which(name) -> string</a>|Checks if `name` is a valid command.|
|
|<a href="#which">which(name) -> string</a>|Checks if `name` is a valid command.|
|
||||||
|<a href="#runnerMode">runnerMode(mode)</a>|Sets the execution/runner mode for interactive Hilbish.|
|
|
||||||
|<a href="#run">run(cmd, streams)</a>|Runs `cmd` in Hilbish's shell script interpreter.|
|
|
||||||
|
|
||||||
## Static module fields
|
## Static module fields
|
||||||
|||
|
|||
|
||||||
@ -475,65 +473,3 @@ Writes data to a sink.
|
|||||||
#### writeln(str)
|
#### writeln(str)
|
||||||
Writes data to a sink with a newline at the end.
|
Writes data to a sink with a newline at the end.
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='run'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.run(cmd, streams)
|
|
||||||
<a href="#run" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Runs `cmd` in Hilbish's shell script interpreter.
|
|
||||||
The `streams` parameter specifies the output and input streams the command should use.
|
|
||||||
For example, to write command output to a sink.
|
|
||||||
As a table, the caller can directly specify the standard output, error, and input
|
|
||||||
streams of the command with the table keys `out`, `err`, and `input` respectively.
|
|
||||||
As a boolean, it specifies whether the command should use standard output or return its output streams.
|
|
||||||
#### Parameters
|
|
||||||
`cmd` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
`streams` **`table|boolean`**
|
|
||||||
|
|
||||||
|
|
||||||
#### Example
|
|
||||||
```lua
|
|
||||||
-- This code is the same as `ls -l | wc -l`
|
|
||||||
local fs = require 'fs'
|
|
||||||
local pr, pw = fs.pipe()
|
|
||||||
hilbish.run('ls -l', {
|
|
||||||
stdout = pw,
|
|
||||||
stderr = pw,
|
|
||||||
})
|
|
||||||
pw:close()
|
|
||||||
hilbish.run('wc -l', {
|
|
||||||
stdin = pr
|
|
||||||
})
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='runnerMode'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runnerMode(mode)
|
|
||||||
<a href="#runnerMode" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Sets the execution/runner mode for interactive Hilbish.
|
|
||||||
**NOTE: This function is deprecated and will be removed in 3.0**
|
|
||||||
Use `hilbish.runner.setCurrent` instead.
|
|
||||||
This determines whether Hilbish wll try to run input as Lua
|
|
||||||
and/or sh or only do one of either.
|
|
||||||
Accepted values for mode are hybrid (the default), hybridRev (sh first then Lua),
|
|
||||||
sh, and lua. It also accepts a function, to which if it is passed one
|
|
||||||
will call it to execute user input instead.
|
|
||||||
Read [about runner mode](../features/runner-mode) for more information.
|
|
||||||
#### Parameters
|
|
||||||
`mode` **`string|function`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
@ -1,67 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.abbr
|
|
||||||
description: command line abbreviations
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
The abbr module manages Hilbish abbreviations. These are words that can be replaced
|
|
||||||
with longer command line strings when entered.
|
|
||||||
As an example, `git push` can be abbreviated to `gp`. When the user types
|
|
||||||
`gp` into the command line, after hitting space or enter, it will expand to `git push`.
|
|
||||||
Abbreviations can be used as an alternative to aliases. They are saved entirely in the history
|
|
||||||
Instead of the aliased form of the same command.
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|<a href="#remove">remove(abbr)</a>|Removes the named `abbr`.|
|
|
||||||
|<a href="#add">add(abbr, expanded|function, opts)</a>|Adds an abbreviation. The `abbr` is the abbreviation itself,|
|
|
||||||
<hr>
|
|
||||||
<div id='add'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.abbr.add(abbr, expanded|function, opts)
|
|
||||||
<a href="#add" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Adds an abbreviation. The `abbr` is the abbreviation itself,
|
|
||||||
while `expanded` is what the abbreviation should expand to.
|
|
||||||
It can be either a function or a string. If it is a function, it will expand to what
|
|
||||||
the function returns.
|
|
||||||
`opts` is a table that accepts 1 key: `anywhere`.
|
|
||||||
`opts.anywhere` defines whether the abbr expands anywhere in the command line or not,
|
|
||||||
whereas the default behavior is only at the beginning of the line
|
|
||||||
#### Parameters
|
|
||||||
`abbr` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
`expanded|function` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
`opts` **`table`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='remove'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.abbr.remove(abbr)
|
|
||||||
<a href="#remove" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Removes the named `abbr`.
|
|
||||||
#### Parameters
|
|
||||||
`abbr` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,124 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.editor
|
|
||||||
description: interactions for Hilbish's line reader
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
The hilbish.editor interface provides functions to
|
|
||||||
directly interact with the line editor in use.
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|<a href="#editor.deleteByAmount">deleteByAmount(amount)</a>|Deletes characters in the line by the given amount.|
|
|
||||||
|<a href="#editor.getLine">getLine() -> string</a>|Returns the current input line.|
|
|
||||||
|<a href="#editor.getVimRegister">getVimRegister(register) -> string</a>|Returns the text that is at the register.|
|
|
||||||
|<a href="#editor.insert">insert(text)</a>|Inserts text into the Hilbish command line.|
|
|
||||||
|<a href="#editor.getChar">getChar() -> string</a>|Reads a keystroke from the user. This is in a format of something like Ctrl-L.|
|
|
||||||
|<a href="#editor.setVimRegister">setVimRegister(register, text)</a>|Sets the vim register at `register` to hold the passed text.|
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='editor.deleteByAmount'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.editor.deleteByAmount(amount)
|
|
||||||
<a href="#editor.deleteByAmount" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Deletes characters in the line by the given amount.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`number` **`amount`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='editor.getLine'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.editor.getLine() -> string
|
|
||||||
<a href="#editor.getLine" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns the current input line.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='editor.getVimRegister'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.editor.getVimRegister(register) -> string
|
|
||||||
<a href="#editor.getVimRegister" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns the text that is at the register.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`string` **`register`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='editor.insert'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.editor.insert(text)
|
|
||||||
<a href="#editor.insert" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Inserts text into the Hilbish command line.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`string` **`text`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='editor.getChar'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.editor.getChar() -> string
|
|
||||||
<a href="#editor.getChar" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Reads a keystroke from the user. This is in a format of something like Ctrl-L.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='editor.setVimRegister'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.editor.setVimRegister(register, text)
|
|
||||||
<a href="#editor.setVimRegister" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Sets the vim register at `register` to hold the passed text.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`string` **`register`**
|
|
||||||
|
|
||||||
|
|
||||||
`string` **`text`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,102 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.history
|
|
||||||
description: command history
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
The history interface deals with command history.
|
|
||||||
This includes the ability to override functions to change the main
|
|
||||||
method of saving history.
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|<a href="#history.add">add(cmd)</a>|Adds a command to the history.|
|
|
||||||
|<a href="#history.all">all() -> table</a>|Retrieves all history as a table.|
|
|
||||||
|<a href="#history.clear">clear()</a>|Deletes all commands from the history.|
|
|
||||||
|<a href="#history.get">get(index)</a>|Retrieves a command from the history based on the `index`.|
|
|
||||||
|<a href="#history.size">size() -> number</a>|Returns the amount of commands in the history.|
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='history.add'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.history.add(cmd)
|
|
||||||
<a href="#history.add" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Adds a command to the history.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`string` **`cmd`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='history.all'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.history.all() -> table
|
|
||||||
<a href="#history.all" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Retrieves all history as a table.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='history.clear'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.history.clear()
|
|
||||||
<a href="#history.clear" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Deletes all commands from the history.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='history.get'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.history.get(index)
|
|
||||||
<a href="#history.get" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Retrieves a command from the history based on the `index`.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`number` **`index`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='history.size'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.history.size() -> number
|
|
||||||
<a href="#history.size" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns the amount of commands in the history.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,146 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.jobs
|
|
||||||
description: background job management
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
Manage interactive jobs in Hilbish via Lua.
|
|
||||||
|
|
||||||
Jobs are the name of background tasks/commands. A job can be started via
|
|
||||||
interactive usage or with the functions defined below for use in external runners.
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|<a href="#jobs.add">add(cmdstr, args, execPath)</a>|Creates a new job. This function does not run the job. This function is intended to be|
|
|
||||||
|<a href="#jobs.all">all() -> table[@Job]</a>|Returns a table of all job objects.|
|
|
||||||
|<a href="#jobs.disown">disown(id)</a>|Disowns a job. This simply deletes it from the list of jobs without stopping it.|
|
|
||||||
|<a href="#jobs.get">get(id) -> @Job</a>|Get a job object via its ID.|
|
|
||||||
|<a href="#jobs.last">last() -> @Job</a>|Returns the last added job to the table.|
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='jobs.add'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.jobs.add(cmdstr, args, execPath)
|
|
||||||
<a href="#jobs.add" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Creates a new job. This function does not run the job. This function is intended to be
|
|
||||||
used by runners, but can also be used to create jobs via Lua. Commanders cannot be ran as jobs.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`string` **`cmdstr`**
|
|
||||||
String that a user would write for the job
|
|
||||||
|
|
||||||
`table` **`args`**
|
|
||||||
Arguments for the commands. Has to include the name of the command.
|
|
||||||
|
|
||||||
`string` **`execPath`**
|
|
||||||
Binary to use to run the command. Needs to be an absolute path.
|
|
||||||
|
|
||||||
#### Example
|
|
||||||
```lua
|
|
||||||
hilbish.jobs.add('go build', {'go', 'build'}, '/usr/bin/go')
|
|
||||||
```
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='jobs.all'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.jobs.all() -> table[<a href="/Hilbish/docs/api/hilbish/hilbish.jobs/#job" style="text-decoration: none;" id="lol">Job</a>]
|
|
||||||
<a href="#jobs.all" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns a table of all job objects.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='jobs.disown'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.jobs.disown(id)
|
|
||||||
<a href="#jobs.disown" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Disowns a job. This simply deletes it from the list of jobs without stopping it.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`number` **`id`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='jobs.get'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.jobs.get(id) -> <a href="/Hilbish/docs/api/hilbish/hilbish.jobs/#job" style="text-decoration: none;" id="lol">Job</a>
|
|
||||||
<a href="#jobs.get" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Get a job object via its ID.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='jobs.last'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.jobs.last() -> <a href="/Hilbish/docs/api/hilbish/hilbish.jobs/#job" style="text-decoration: none;" id="lol">Job</a>
|
|
||||||
<a href="#jobs.last" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns the last added job to the table.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Types
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
## Job
|
|
||||||
The Job type describes a Hilbish job.
|
|
||||||
## Object properties
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|cmd|The user entered command string for the job.|
|
|
||||||
|running|Whether the job is running or not.|
|
|
||||||
|id|The ID of the job in the job table|
|
|
||||||
|pid|The Process ID|
|
|
||||||
|exitCode|The last exit code of the job.|
|
|
||||||
|stdout|The standard output of the job. This just means the normal logs of the process.|
|
|
||||||
|stderr|The standard error stream of the process. This (usually) includes error messages of the job.|
|
|
||||||
|
|
||||||
|
|
||||||
### Methods
|
|
||||||
#### background()
|
|
||||||
Puts a job in the background. This acts the same as initially running a job.
|
|
||||||
|
|
||||||
#### foreground()
|
|
||||||
Puts a job in the foreground. This will cause it to run like it was
|
|
||||||
executed normally and wait for it to complete.
|
|
||||||
|
|
||||||
#### start()
|
|
||||||
Starts running the job.
|
|
||||||
|
|
||||||
#### stop()
|
|
||||||
Stops the job from running.
|
|
||||||
|
|
@ -1,135 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.messages
|
|
||||||
description: simplistic message passing
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
The messages interface defines a way for Hilbish-integrated commands,
|
|
||||||
user config and other tasks to send notifications to alert the user.z
|
|
||||||
The `hilbish.message` type is a table with the following keys:
|
|
||||||
`title` (string): A title for the message notification.
|
|
||||||
`text` (string): The contents of the message.
|
|
||||||
`channel` (string): States the origin of the message, `hilbish.*` is reserved for Hilbish tasks.
|
|
||||||
`summary` (string): A short summary of the `text`.
|
|
||||||
`icon` (string): Unicode (preferably standard emoji) icon for the message notification
|
|
||||||
`read` (boolean): Whether the full message has been read or not.
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|<a href="#unreadCount">unreadCount()</a>|Returns the amount of unread messages.|
|
|
||||||
|<a href="#send">send(message)</a>|Sends a message.|
|
|
||||||
|<a href="#readAll">readAll()</a>|Marks all messages as read.|
|
|
||||||
|<a href="#read">read(idx)</a>|Marks a message at `idx` as read.|
|
|
||||||
|<a href="#delete">delete(idx)</a>|Deletes the message at `idx`.|
|
|
||||||
|<a href="#clear">clear()</a>|Deletes all messages.|
|
|
||||||
|<a href="#all">all()</a>|Returns all messages.|
|
|
||||||
<hr>
|
|
||||||
<div id='all'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.messages.all()
|
|
||||||
<a href="#all" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns all messages.
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='clear'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.messages.clear()
|
|
||||||
<a href="#clear" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Deletes all messages.
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='delete'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.messages.delete(idx)
|
|
||||||
<a href="#delete" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Deletes the message at `idx`.
|
|
||||||
#### Parameters
|
|
||||||
`idx` **`number`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='read'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.messages.read(idx)
|
|
||||||
<a href="#read" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Marks a message at `idx` as read.
|
|
||||||
#### Parameters
|
|
||||||
`idx` **`number`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='readAll'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.messages.readAll()
|
|
||||||
<a href="#readAll" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Marks all messages as read.
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='send'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.messages.send(message)
|
|
||||||
<a href="#send" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Sends a message.
|
|
||||||
#### Parameters
|
|
||||||
`message` **`hilbish.message`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='unreadCount'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.messages.unreadCount()
|
|
||||||
<a href="#unreadCount" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns the amount of unread messages.
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,73 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.module
|
|
||||||
description: native module loading
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
The hilbish.module interface provides a function to load
|
|
||||||
Hilbish plugins/modules. Hilbish modules are Go-written
|
|
||||||
plugins (see https://pkg.go.dev/plugin) that are used to add functionality
|
|
||||||
to Hilbish that cannot be written in Lua for any reason.
|
|
||||||
|
|
||||||
Note that you don't ever need to use the load function that is here as
|
|
||||||
modules can be loaded with a `require` call like Lua C modules, and the
|
|
||||||
search paths can be changed with the `paths` property here.
|
|
||||||
|
|
||||||
To make a valid native module, the Go plugin has to export a Loader function
|
|
||||||
with a signature like so: `func(*rt.Runtime) rt.Value`.
|
|
||||||
|
|
||||||
`rt` in this case refers to the Runtime type at
|
|
||||||
https://pkg.go.dev/github.com/arnodel/golua@master/runtime#Runtime
|
|
||||||
|
|
||||||
Hilbish uses this package as its Lua runtime. You will need to read
|
|
||||||
it to use it for a native plugin.
|
|
||||||
|
|
||||||
Here is some code for an example plugin:
|
|
||||||
```go
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
rt "github.com/arnodel/golua/runtime"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Loader(rtm *rt.Runtime) rt.Value {
|
|
||||||
return rt.StringValue("hello world!")
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
This can be compiled with `go build -buildmode=plugin plugin.go`.
|
|
||||||
If you attempt to require and print the result (`print(require 'plugin')`), it will show "hello world!"
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|<a href="#module.load">load(path)</a>|Loads a module at the designated `path`.|
|
|
||||||
|
|
||||||
## Static module fields
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|paths|A list of paths to search when loading native modules. This is in the style of Lua search paths and will be used when requiring native modules. Example: `?.so;?/?.so`|
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='module.load'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.module.load(path)
|
|
||||||
<a href="#module.load" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Loads a module at the designated `path`.
|
|
||||||
It will throw if any error occurs.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`string` **`path`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,20 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.os
|
|
||||||
description: operating system info
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
Provides simple text information properties about the current operating system.
|
|
||||||
This mainly includes the name and version.
|
|
||||||
|
|
||||||
## Static module fields
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|family|Family name of the current OS|
|
|
||||||
|name|Pretty name of the current OS|
|
|
||||||
|version|Version of the current OS|
|
|
||||||
|
|
@ -55,15 +55,6 @@ end)
|
|||||||
|||
|
|||
|
||||||
|----|----|
|
|----|----|
|
||||||
|<a href="#runner.lua">lua(cmd)</a>|Evaluates `cmd` as Lua input. This is the same as using `dofile`|
|
|<a href="#runner.lua">lua(cmd)</a>|Evaluates `cmd` as Lua input. This is the same as using `dofile`|
|
||||||
|<a href="#sh">sh()</a>|nil|
|
|
||||||
|<a href="#setMode">setMode(mode)</a>|**NOTE: This function is deprecated and will be removed in 3.0**|
|
|
||||||
|<a href="#setCurrent">setCurrent(name)</a>|Sets Hilbish's runner mode by name.|
|
|
||||||
|<a href="#set">set(name, runner)</a>|*Sets* a runner by name. The difference between this function and|
|
|
||||||
|<a href="#run">run(input, priv)</a>|Runs `input` with the currently set Hilbish runner.|
|
|
||||||
|<a href="#getCurrent">getCurrent()</a>|Returns the current runner by name.|
|
|
||||||
|<a href="#get">get(name)</a>|Get a runner by name.|
|
|
||||||
|<a href="#exec">exec(cmd, runnerName)</a>|Executes `cmd` with a runner.|
|
|
||||||
|<a href="#add">add(name, runner)</a>|Adds a runner to the table of available runners.|
|
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<div id='runner.lua'>
|
<div id='runner.lua'>
|
||||||
@ -83,165 +74,3 @@ or `load`, but is appropriated for the runner interface.
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='add'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.add(name, runner)
|
|
||||||
<a href="#add" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Adds a runner to the table of available runners.
|
|
||||||
If runner is a table, it must have the run function in it.
|
|
||||||
#### Parameters
|
|
||||||
`name` **`string`**
|
|
||||||
Name of the runner
|
|
||||||
|
|
||||||
`runner` **`function|table`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='exec'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.exec(cmd, runnerName)
|
|
||||||
<a href="#exec" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Executes `cmd` with a runner.
|
|
||||||
If `runnerName` is not specified, it uses the default Hilbish runner.
|
|
||||||
#### Parameters
|
|
||||||
`cmd` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
`runnerName` **`string?`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='get'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.get(name)
|
|
||||||
<a href="#get" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Get a runner by name.
|
|
||||||
#### Parameters
|
|
||||||
`name` **`string`**
|
|
||||||
Name of the runner to retrieve.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='getCurrent'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.getCurrent()
|
|
||||||
<a href="#getCurrent" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Returns the current runner by name.
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='run'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.run(input, priv)
|
|
||||||
<a href="#run" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Runs `input` with the currently set Hilbish runner.
|
|
||||||
This method is how Hilbish executes commands.
|
|
||||||
`priv` is an optional boolean used to state if the input should be saved to history.
|
|
||||||
#### Parameters
|
|
||||||
`input` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
`priv` **`bool`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='set'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.set(name, runner)
|
|
||||||
<a href="#set" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
*Sets* a runner by name. The difference between this function and
|
|
||||||
add, is set will *not* check if the named runner exists.
|
|
||||||
The runner table must have the run function in it.
|
|
||||||
#### Parameters
|
|
||||||
`name` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
`runner` **`table`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='setCurrent'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.setCurrent(name)
|
|
||||||
<a href="#setCurrent" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Sets Hilbish's runner mode by name.
|
|
||||||
#### Parameters
|
|
||||||
`name` **`string`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='setMode'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.setMode(mode)
|
|
||||||
<a href="#setMode" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
**NOTE: This function is deprecated and will be removed in 3.0**
|
|
||||||
Use `hilbish.runner.setCurrent` instead.
|
|
||||||
This is the same as the `hilbish.runnerMode` 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
|
|
||||||
`mode` **`string|function`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='sh'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.runner.sh()
|
|
||||||
<a href="#sh" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
This function has no parameters.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
@ -1,100 +0,0 @@
|
|||||||
---
|
|
||||||
title: Module hilbish.timers
|
|
||||||
description: timeout and interval API
|
|
||||||
layout: doc
|
|
||||||
menu:
|
|
||||||
docs:
|
|
||||||
parent: "API"
|
|
||||||
---
|
|
||||||
|
|
||||||
## Introduction
|
|
||||||
|
|
||||||
If you ever want to run a piece of code on a timed interval, or want to wait
|
|
||||||
a few seconds, you don't have to rely on timing tricks, as Hilbish has a
|
|
||||||
timer API to set intervals and timeouts.
|
|
||||||
|
|
||||||
These are the simple functions `hilbish.interval` and `hilbish.timeout` (doc
|
|
||||||
accessible with `doc hilbish`, or `Module hilbish` on the Website).
|
|
||||||
|
|
||||||
An example of usage:
|
|
||||||
```lua
|
|
||||||
local t = hilbish.timers.create(hilbish.timers.TIMEOUT, 5000, function()
|
|
||||||
print 'hello!'
|
|
||||||
end)
|
|
||||||
|
|
||||||
t:start()
|
|
||||||
print(t.running) // true
|
|
||||||
```
|
|
||||||
|
|
||||||
## Functions
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|<a href="#timers.create">create(type, time, callback) -> @Timer</a>|Creates a timer that runs based on the specified `time`.|
|
|
||||||
|<a href="#timers.get">get(id) -> @Timer</a>|Retrieves a timer via its ID.|
|
|
||||||
|
|
||||||
## Static module fields
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|INTERVAL|Constant for an interval timer type|
|
|
||||||
|TIMEOUT|Constant for a timeout timer type|
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='timers.create'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.timers.create(type, time, callback) -> <a href="/Hilbish/docs/api/hilbish/hilbish.timers/#timer" style="text-decoration: none;" id="lol">Timer</a>
|
|
||||||
<a href="#timers.create" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Creates a timer that runs based on the specified `time`.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`number` **`type`**
|
|
||||||
What kind of timer to create, can either be `hilbish.timers.INTERVAL` or `hilbish.timers.TIMEOUT`
|
|
||||||
|
|
||||||
`number` **`time`**
|
|
||||||
The amount of time the function should run in milliseconds.
|
|
||||||
|
|
||||||
`function` **`callback`**
|
|
||||||
The function to run for the timer.
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
<div id='timers.get'>
|
|
||||||
<h4 class='heading'>
|
|
||||||
hilbish.timers.get(id) -> <a href="/Hilbish/docs/api/hilbish/hilbish.timers/#timer" style="text-decoration: none;" id="lol">Timer</a>
|
|
||||||
<a href="#timers.get" class='heading-link'>
|
|
||||||
<i class="fas fa-paperclip"></i>
|
|
||||||
</a>
|
|
||||||
</h4>
|
|
||||||
|
|
||||||
Retrieves a timer via its ID.
|
|
||||||
|
|
||||||
#### Parameters
|
|
||||||
`number` **`id`**
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
## Types
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
## Timer
|
|
||||||
The Job type describes a Hilbish timer.
|
|
||||||
## Object properties
|
|
||||||
|||
|
|
||||||
|----|----|
|
|
||||||
|type|What type of timer it is|
|
|
||||||
|running|If the timer is running|
|
|
||||||
|duration|The duration in milliseconds that the timer will run|
|
|
||||||
|
|
||||||
|
|
||||||
### Methods
|
|
||||||
#### start()
|
|
||||||
Starts a timer.
|
|
||||||
|
|
||||||
#### stop()
|
|
||||||
Stops a timer.
|
|
||||||
|
|
38
docs/api/readline.md
Normal file
38
docs/api/readline.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
---
|
||||||
|
title: Module readline
|
||||||
|
description: Package readline is a pure-Go re-imagining of the UNIX readline API
|
||||||
|
layout: doc
|
||||||
|
menu:
|
||||||
|
docs:
|
||||||
|
parent: "API"
|
||||||
|
---
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
This package is designed to be run independently from murex and at some
|
||||||
|
point it will be separated into it's own git repository (at a stage when I
|
||||||
|
am confident that murex will no longer be the primary driver for features,
|
||||||
|
bugs or other code changes)
|
||||||
|
|
||||||
|
Package terminal provides support functions for dealing with terminals, as
|
||||||
|
commonly found on UNIX systems.
|
||||||
|
|
||||||
|
Putting a terminal into raw mode is the most common requirement:
|
||||||
|
|
||||||
|
oldState, err := terminal.MakeRaw(0)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer terminal.Restore(0, oldState)
|
||||||
|
|
||||||
|
Package terminal provides support functions for dealing with terminals, as
|
||||||
|
commonly found on UNIX systems.
|
||||||
|
|
||||||
|
Putting a terminal into raw mode is the most common requirement:
|
||||||
|
|
||||||
|
oldState, err := terminal.MakeRaw(0)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
defer terminal.Restore(0, oldState)
|
||||||
|
|
5
emmyLuaDocs/readline.lua
Normal file
5
emmyLuaDocs/readline.lua
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
--- @meta
|
||||||
|
|
||||||
|
local readline = {}
|
||||||
|
|
||||||
|
return readline
|
@ -1,201 +0,0 @@
|
|||||||
Apache License
|
|
||||||
Version 2.0, January 2004
|
|
||||||
http://www.apache.org/licenses/
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
||||||
|
|
||||||
1. Definitions.
|
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
|
||||||
the copyright owner that is granting the License.
|
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
|
||||||
other entities that control, are controlled by, or are under common
|
|
||||||
control with that entity. For the purposes of this definition,
|
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
|
||||||
direction or management of such entity, whether by contract or
|
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
|
||||||
exercising permissions granted by this License.
|
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
|
||||||
including but not limited to software source code, documentation
|
|
||||||
source, and configuration files.
|
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
|
||||||
transformation or translation of a Source form, including but
|
|
||||||
not limited to compiled object code, generated documentation,
|
|
||||||
and conversions to other media types.
|
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
|
||||||
Object form, made available under the License, as indicated by a
|
|
||||||
copyright notice that is included in or attached to the work
|
|
||||||
(an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
|
||||||
form, that is based on (or derived from) the Work and for which the
|
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
|
||||||
of this License, Derivative Works shall not include works that remain
|
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
|
||||||
the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
|
||||||
the original version of the Work and any modifications or additions
|
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
|
||||||
means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems,
|
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
|
||||||
excluding communication that is conspicuously marked or otherwise
|
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
|
||||||
subsequently incorporated within the Work.
|
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
|
||||||
Work and such Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
||||||
(except as stated in this section) patent license to make, have made,
|
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
||||||
where such license applies only to those patent claims licensable
|
|
||||||
by such Contributor that are necessarily infringed by their
|
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
|
||||||
institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
|
||||||
or contributory patent infringement, then any patent licenses
|
|
||||||
granted to You under this License for that Work shall terminate
|
|
||||||
as of the date such litigation is filed.
|
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
|
||||||
modifications, and in Source or Object form, provided that You
|
|
||||||
meet the following conditions:
|
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
|
||||||
Derivative Works a copy of this License; and
|
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
|
||||||
stating that You changed the files; and
|
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
|
||||||
that You distribute, all copyright, patent, trademark, and
|
|
||||||
attribution notices from the Source form of the Work,
|
|
||||||
excluding those notices that do not pertain to any part of
|
|
||||||
the Derivative Works; and
|
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
|
||||||
distribution, then any Derivative Works that You distribute must
|
|
||||||
include a readable copy of the attribution notices contained
|
|
||||||
within such NOTICE file, excluding those notices that do not
|
|
||||||
pertain to any part of the Derivative Works, in at least one
|
|
||||||
of the following places: within a NOTICE text file distributed
|
|
||||||
as part of the Derivative Works; within the Source form or
|
|
||||||
documentation, if provided along with the Derivative Works; or,
|
|
||||||
within a display generated by the Derivative Works, if and
|
|
||||||
wherever such third-party notices normally appear. The contents
|
|
||||||
of the NOTICE file are for informational purposes only and
|
|
||||||
do not modify the License. You may add Your own attribution
|
|
||||||
notices within Derivative Works that You distribute, alongside
|
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
|
||||||
that such additional attribution notices cannot be construed
|
|
||||||
as modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
|
||||||
may provide additional or different license terms and conditions
|
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
|
||||||
the conditions stated in this License.
|
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
|
||||||
this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
|
||||||
the terms of any separate license agreement you may have executed
|
|
||||||
with Licensor regarding such Contributions.
|
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
|
||||||
except as required for reasonable and customary use in describing the
|
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
||||||
implied, including, without limitation, any warranties or conditions
|
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
||||||
appropriateness of using or redistributing the Work and assume any
|
|
||||||
risks associated with Your exercise of permissions under this License.
|
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
|
||||||
unless required by applicable law (such as deliberate and grossly
|
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special,
|
|
||||||
incidental, or consequential damages of any character arising as a
|
|
||||||
result of this License or out of the use or inability to use the
|
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
|
||||||
other commercial damages or losses), even if such Contributor
|
|
||||||
has been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
||||||
or other liability obligations and/or rights consistent with this
|
|
||||||
License. However, in accepting such obligations, You may act only
|
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
|
||||||
defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
|
||||||
of your accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
||||||
replaced with your own identifying information. (Don't include
|
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
|
||||||
comment syntax for the file format. We also recommend that a
|
|
||||||
file or class name and description of purpose be included on the
|
|
||||||
same "printed page" as the copyright notice for easier
|
|
||||||
identification within third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
@ -1,10 +0,0 @@
|
|||||||
# raw
|
|
||||||
|
|
||||||
This command exists here purely as a lazy feature for me to scan key presses
|
|
||||||
for their corresponding escape codes. It is a useful dev tool for rationalizing
|
|
||||||
what is happening in the different terminal emulators (since documentation
|
|
||||||
regarding what escape codes they send can often be non-existent and some of the
|
|
||||||
more exotic key combinations or modern keyboard functions can have multiple
|
|
||||||
published standards.
|
|
||||||
|
|
||||||
This package is not imported by `readline` and is not required as part of `readline`
|
|
@ -1,22 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/maxlandon/readline"
|
|
||||||
)
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
readline.MakeRaw(int(os.Stdin.Fd()))
|
|
||||||
|
|
||||||
for {
|
|
||||||
b := make([]byte, 1024)
|
|
||||||
i, err := os.Stdin.Read(b)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
fmt.Println(b[:i])
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user