mirror of
https://github.com/Hilbis/Hilbish
synced 2025-07-01 08:42:04 +00:00
fix: doc descriptions, add short description, make things scroll nicer
This commit is contained in:
parent
da5a1d0e34
commit
4b28efe639
@ -403,7 +403,7 @@ func main() {
|
|||||||
shortDesc := piece.Doc[0]
|
shortDesc := piece.Doc[0]
|
||||||
desc := piece.Doc[1:]
|
desc := piece.Doc[1:]
|
||||||
interfaceModules[modname].ShortDescription = shortDesc
|
interfaceModules[modname].ShortDescription = shortDesc
|
||||||
interfaceModules[modname].Description = strings.Join(desc, "\n")
|
interfaceModules[modname].Description = strings.Replace(strings.Join(desc, "\n"), "<nl>", "\\\n \\", -1)
|
||||||
interfaceModules[modname].Fields = piece.Fields
|
interfaceModules[modname].Fields = piece.Fields
|
||||||
interfaceModules[modname].Properties = piece.Properties
|
interfaceModules[modname].Properties = piece.Properties
|
||||||
continue
|
continue
|
||||||
@ -441,7 +441,7 @@ func main() {
|
|||||||
Types: filteredTypePieces,
|
Types: filteredTypePieces,
|
||||||
Docs: filteredPieces,
|
Docs: filteredPieces,
|
||||||
ShortDescription: shortDesc,
|
ShortDescription: shortDesc,
|
||||||
Description: strings.Join(desc, "\n"),
|
Description: strings.Replace(strings.Join(desc, "\n"), "<nl>", "\\\n \\", -1),
|
||||||
HasInterfaces: hasInterfaces,
|
HasInterfaces: hasInterfaces,
|
||||||
Properties: docPieceTag("property", tags),
|
Properties: docPieceTag("property", tags),
|
||||||
Fields: docPieceTag("field", tags),
|
Fields: docPieceTag("field", tags),
|
||||||
@ -627,6 +627,7 @@ func generateFile(v module) {
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
`, htmlSig, dps.FuncName))
|
`, htmlSig, dps.FuncName))
|
||||||
f.WriteString("```\n\n")
|
f.WriteString("```\n\n")
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "bait",
|
"name": "bait",
|
||||||
"shortDescription": "the event emitter",
|
"shortDescription": "the event emitter",
|
||||||
"description": "\nBait is the event emitter for Hilbish. Much like Node.js and\nits `events` system, many actions in Hilbish emit events.\nUnlike Node.js, Hilbish events are global. So make sure to\npick a unique name!\n\nUsage of the Bait module consists of userstanding\nevent-driven architecture, but it's pretty simple:\nIf you want to act on a certain event, you can `catch` it.\nYou can act on events via callback functions.\n\nExamples of this are in the Hilbish default config!\nConsider this part of it:\n```lua\nbait.catch('command.exit', function(code)\n\trunning = false\n\tdoPrompt(code ~= 0)\n\tdoNotifyPrompt()\nend)\n```\n\nWhat this does is, whenever the `command.exit` event is thrown,\nthis function will set the user prompt.",
|
"description": "\nBait is the event emitter for Hilbish. Much like Node.js and\nits `events` system, many actions in Hilbish emit events.\nUnlike Node.js, Hilbish events are global. So make sure to\npick a unique name!\\\n \\\n\nUsage of the Bait module consists of userstanding\nevent-driven architecture, but it's pretty simple:\nIf you want to act on a certain event, you can `catch` it.\nYou can act on events via callback functions.\\\n \\\n\nExamples of this are in the Hilbish default config!\nConsider this part of it:\\\n \\\n\n```lua\nbait.catch('command.exit', function(code)\n\trunning = false\n\tdoPrompt(code ~= 0)\n\tdoNotifyPrompt()\nend)\n```\n\nWhat this does is, whenever the `command.exit` event is thrown,\nthis function will set the user prompt.",
|
||||||
"properties": [],
|
"properties": [],
|
||||||
"fields": [],
|
"fields": [],
|
||||||
"docs": [
|
"docs": [
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "commander",
|
"name": "commander",
|
||||||
"shortDescription": "library for custom commands",
|
"shortDescription": "library for custom commands",
|
||||||
"description": "\nCommander is the library which handles Hilbish commands. This makes\nthe user able to add Lua-written commands to their shell without making\na separate script in a bin folder. Instead, you may simply use the Commander\nlibrary in your Hilbish config.\n\n```lua\nlocal commander = require 'commander'\n\ncommander.register('hello', function(args, sinks)\n\tsinks.out:writeln 'Hello world!'\nend)\n```\n\nIn this example, a command with the name of `hello` is created\nthat will print `Hello world!` to output. One question you may\nhave is: What is the `sinks` parameter?\n\nThe `sinks` parameter is a table with 3 keys: `input`, `out`, and `err`.\nThere is an `in` alias to `input`, but it requires using the string accessor syntax (`sinks['in']`)\nas `in` is also a Lua keyword, so `input` is preferred for use.\nAll of them are a @Sink.\nIn the future, `sinks.in` will be removed.\n\n- `in` is the standard input.\nYou may use the read functions on this sink to get input from the user.\n- `out` is standard output.\nThis is usually where command output should go.\n- `err` is standard error.\nThis sink is for writing errors, as the name would suggest.",
|
"description": "\nCommander is the library which handles Hilbish commands. This makes\nthe user able to add Lua-written commands to their shell without making\na separate script in a bin folder. Instead, you may simply use the Commander\nlibrary in your Hilbish config.\\\n \\\n```lua\nlocal commander = require 'commander'\n\ncommander.register('hello', function(args, sinks)\n\tsinks.out:writeln 'Hello world!'\nend)\n```\n\nIn this example, a command with the name of `hello` is created\nthat will print `Hello world!` to output. One question you may\nhave is: What is the `sinks` parameter?\\\n \\\nThe `sinks` parameter is a table with 3 keys: `input`, `out`, and `err`.\nThere is an `in` alias to `input`, but it requires using the string accessor syntax (`sinks['in']`)\nas `in` is also a Lua keyword, so `input` is preferred for use.\nAll of them are a @Sink.\nIn the future, `sinks.in` will be removed.\\\n \\\n\n- `in` is the standard input. You may use the read functions on this sink to get input from the user.\n- `out` is standard output. This is usually where command output should go.\n- `err` is standard error. This sink is for writing errors, as the name would suggest.",
|
||||||
"properties": [],
|
"properties": [],
|
||||||
"fields": [],
|
"fields": [],
|
||||||
"docs": [
|
"docs": [
|
||||||
|
@ -1,9 +1,147 @@
|
|||||||
{
|
{
|
||||||
"name": "hilbish",
|
"name": "hilbish",
|
||||||
"shortDescription": "",
|
"shortDescription": "the core Hilbish API",
|
||||||
"description": "",
|
"description": "The Hilbish module includes the core API, containing\ninterfaces and functions which directly relate to shell functionality.",
|
||||||
"properties": [],
|
"properties": [],
|
||||||
"fields": [],
|
"fields": [
|
||||||
|
{
|
||||||
|
"name": "ver",
|
||||||
|
"description": [
|
||||||
|
"The",
|
||||||
|
"version",
|
||||||
|
"of",
|
||||||
|
"Hilbish"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "goVersion",
|
||||||
|
"description": [
|
||||||
|
"The",
|
||||||
|
"version",
|
||||||
|
"of",
|
||||||
|
"Go",
|
||||||
|
"that",
|
||||||
|
"Hilbish",
|
||||||
|
"was",
|
||||||
|
"compiled",
|
||||||
|
"with"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "user",
|
||||||
|
"description": [
|
||||||
|
"Username",
|
||||||
|
"of",
|
||||||
|
"the",
|
||||||
|
"user"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "host",
|
||||||
|
"description": [
|
||||||
|
"Hostname",
|
||||||
|
"of",
|
||||||
|
"the",
|
||||||
|
"machine"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dataDir",
|
||||||
|
"description": [
|
||||||
|
"Directory",
|
||||||
|
"for",
|
||||||
|
"Hilbish",
|
||||||
|
"data",
|
||||||
|
"files,",
|
||||||
|
"including",
|
||||||
|
"the",
|
||||||
|
"docs",
|
||||||
|
"and",
|
||||||
|
"default",
|
||||||
|
"modules"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "interactive",
|
||||||
|
"description": [
|
||||||
|
"Is",
|
||||||
|
"Hilbish",
|
||||||
|
"in",
|
||||||
|
"an",
|
||||||
|
"interactive",
|
||||||
|
"shell?"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "login",
|
||||||
|
"description": [
|
||||||
|
"Is",
|
||||||
|
"Hilbish",
|
||||||
|
"the",
|
||||||
|
"login",
|
||||||
|
"shell?"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "vimMode",
|
||||||
|
"description": [
|
||||||
|
"Current",
|
||||||
|
"Vim",
|
||||||
|
"input",
|
||||||
|
"mode",
|
||||||
|
"of",
|
||||||
|
"Hilbish",
|
||||||
|
"(will",
|
||||||
|
"be",
|
||||||
|
"nil",
|
||||||
|
"if",
|
||||||
|
"not",
|
||||||
|
"in",
|
||||||
|
"Vim",
|
||||||
|
"input",
|
||||||
|
"mode)"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "exitCode",
|
||||||
|
"description": [
|
||||||
|
"Exit",
|
||||||
|
"code",
|
||||||
|
"of",
|
||||||
|
"the",
|
||||||
|
"last",
|
||||||
|
"executed",
|
||||||
|
"command"
|
||||||
|
],
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": false,
|
||||||
|
"isType": false
|
||||||
|
}
|
||||||
|
],
|
||||||
"types": [
|
"types": [
|
||||||
{
|
{
|
||||||
"name": "Sink",
|
"name": "Sink",
|
||||||
@ -26,6 +164,127 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"docs": [
|
"docs": [
|
||||||
|
{
|
||||||
|
"name": "luaSinkAutoFlush",
|
||||||
|
"description": [
|
||||||
|
"Sets/toggles the option of automatically flushing output.",
|
||||||
|
"A call with no argument will toggle the value."
|
||||||
|
],
|
||||||
|
"signature": "autoFlush(auto)",
|
||||||
|
"goFuncName": "luasinkautoflush",
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": true,
|
||||||
|
"isType": false,
|
||||||
|
"tags": {
|
||||||
|
"member": [
|
||||||
|
{
|
||||||
|
"id": "",
|
||||||
|
"fields": null,
|
||||||
|
"startIdx": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "luaSinkFlush",
|
||||||
|
"description": [
|
||||||
|
"Flush writes all buffered input to the sink."
|
||||||
|
],
|
||||||
|
"signature": "flush()",
|
||||||
|
"goFuncName": "luasinkflush",
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": true,
|
||||||
|
"isType": false,
|
||||||
|
"tags": {
|
||||||
|
"member": [
|
||||||
|
{
|
||||||
|
"id": "",
|
||||||
|
"fields": null,
|
||||||
|
"startIdx": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "luaSinkRead",
|
||||||
|
"description": [
|
||||||
|
"Reads a liine of input from the sink."
|
||||||
|
],
|
||||||
|
"signature": "read() -\u003e string",
|
||||||
|
"goFuncName": "luasinkread",
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": true,
|
||||||
|
"isType": false,
|
||||||
|
"tags": {
|
||||||
|
"member": [
|
||||||
|
{
|
||||||
|
"id": "",
|
||||||
|
"fields": null,
|
||||||
|
"startIdx": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "luaSinkReadAll",
|
||||||
|
"description": [
|
||||||
|
"Reads all input from the sink."
|
||||||
|
],
|
||||||
|
"signature": "readAll() -\u003e string",
|
||||||
|
"goFuncName": "luasinkreadall",
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": true,
|
||||||
|
"isType": false,
|
||||||
|
"tags": {
|
||||||
|
"member": [
|
||||||
|
{
|
||||||
|
"id": "",
|
||||||
|
"fields": null,
|
||||||
|
"startIdx": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "luaSinkWrite",
|
||||||
|
"description": [
|
||||||
|
"Writes data to a sink."
|
||||||
|
],
|
||||||
|
"signature": "write(str)",
|
||||||
|
"goFuncName": "luasinkwrite",
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": true,
|
||||||
|
"isType": false,
|
||||||
|
"tags": {
|
||||||
|
"member": [
|
||||||
|
{
|
||||||
|
"id": "",
|
||||||
|
"fields": null,
|
||||||
|
"startIdx": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "luaSinkWriteln",
|
||||||
|
"description": [
|
||||||
|
"Writes data to a sink with a newline at the end."
|
||||||
|
],
|
||||||
|
"signature": "writeln(str)",
|
||||||
|
"goFuncName": "luasinkwriteln",
|
||||||
|
"isInterface": false,
|
||||||
|
"isMember": true,
|
||||||
|
"isType": false,
|
||||||
|
"tags": {
|
||||||
|
"member": [
|
||||||
|
{
|
||||||
|
"id": "",
|
||||||
|
"fields": null,
|
||||||
|
"startIdx": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "alias",
|
"name": "alias",
|
||||||
"description": [
|
"description": [
|
||||||
@ -869,127 +1128,6 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "luaSinkAutoFlush",
|
|
||||||
"description": [
|
|
||||||
"Sets/toggles the option of automatically flushing output.",
|
|
||||||
"A call with no argument will toggle the value."
|
|
||||||
],
|
|
||||||
"signature": "autoFlush(auto)",
|
|
||||||
"goFuncName": "luasinkautoflush",
|
|
||||||
"isInterface": false,
|
|
||||||
"isMember": true,
|
|
||||||
"isType": false,
|
|
||||||
"tags": {
|
|
||||||
"member": [
|
|
||||||
{
|
|
||||||
"id": "",
|
|
||||||
"fields": null,
|
|
||||||
"startIdx": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "luaSinkFlush",
|
|
||||||
"description": [
|
|
||||||
"Flush writes all buffered input to the sink."
|
|
||||||
],
|
|
||||||
"signature": "flush()",
|
|
||||||
"goFuncName": "luasinkflush",
|
|
||||||
"isInterface": false,
|
|
||||||
"isMember": true,
|
|
||||||
"isType": false,
|
|
||||||
"tags": {
|
|
||||||
"member": [
|
|
||||||
{
|
|
||||||
"id": "",
|
|
||||||
"fields": null,
|
|
||||||
"startIdx": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "luaSinkRead",
|
|
||||||
"description": [
|
|
||||||
"Reads a liine of input from the sink."
|
|
||||||
],
|
|
||||||
"signature": "read() -\u003e string",
|
|
||||||
"goFuncName": "luasinkread",
|
|
||||||
"isInterface": false,
|
|
||||||
"isMember": true,
|
|
||||||
"isType": false,
|
|
||||||
"tags": {
|
|
||||||
"member": [
|
|
||||||
{
|
|
||||||
"id": "",
|
|
||||||
"fields": null,
|
|
||||||
"startIdx": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "luaSinkReadAll",
|
|
||||||
"description": [
|
|
||||||
"Reads all input from the sink."
|
|
||||||
],
|
|
||||||
"signature": "readAll() -\u003e string",
|
|
||||||
"goFuncName": "luasinkreadall",
|
|
||||||
"isInterface": false,
|
|
||||||
"isMember": true,
|
|
||||||
"isType": false,
|
|
||||||
"tags": {
|
|
||||||
"member": [
|
|
||||||
{
|
|
||||||
"id": "",
|
|
||||||
"fields": null,
|
|
||||||
"startIdx": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "luaSinkWrite",
|
|
||||||
"description": [
|
|
||||||
"Writes data to a sink."
|
|
||||||
],
|
|
||||||
"signature": "write(str)",
|
|
||||||
"goFuncName": "luasinkwrite",
|
|
||||||
"isInterface": false,
|
|
||||||
"isMember": true,
|
|
||||||
"isType": false,
|
|
||||||
"tags": {
|
|
||||||
"member": [
|
|
||||||
{
|
|
||||||
"id": "",
|
|
||||||
"fields": null,
|
|
||||||
"startIdx": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "luaSinkWriteln",
|
|
||||||
"description": [
|
|
||||||
"Writes data to a sink with a newline at the end."
|
|
||||||
],
|
|
||||||
"signature": "writeln(str)",
|
|
||||||
"goFuncName": "luasinkwriteln",
|
|
||||||
"isInterface": false,
|
|
||||||
"isMember": true,
|
|
||||||
"isType": false,
|
|
||||||
"tags": {
|
|
||||||
"member": [
|
|
||||||
{
|
|
||||||
"id": "",
|
|
||||||
"fields": null,
|
|
||||||
"startIdx": 0
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"interfaces": {
|
"interfaces": {
|
||||||
|
@ -13,15 +13,19 @@ menu:
|
|||||||
Bait is the event emitter for Hilbish. Much like Node.js and
|
Bait is the event emitter for Hilbish. Much like Node.js and
|
||||||
its `events` system, many actions in Hilbish emit events.
|
its `events` system, many actions in Hilbish emit events.
|
||||||
Unlike Node.js, Hilbish events are global. So make sure to
|
Unlike Node.js, Hilbish events are global. So make sure to
|
||||||
pick a unique name!
|
pick a unique name!\
|
||||||
|
\
|
||||||
|
|
||||||
Usage of the Bait module consists of userstanding
|
Usage of the Bait module consists of userstanding
|
||||||
event-driven architecture, but it's pretty simple:
|
event-driven architecture, but it's pretty simple:
|
||||||
If you want to act on a certain event, you can `catch` it.
|
If you want to act on a certain event, you can `catch` it.
|
||||||
You can act on events via callback functions.
|
You can act on events via callback functions.\
|
||||||
|
\
|
||||||
|
|
||||||
Examples of this are in the Hilbish default config!
|
Examples of this are in the Hilbish default config!
|
||||||
Consider this part of it:
|
Consider this part of it:\
|
||||||
|
\
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
bait.catch('command.exit', function(code)
|
bait.catch('command.exit', function(code)
|
||||||
running = false
|
running = false
|
||||||
@ -75,6 +79,7 @@ bait.catch(name, cb)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -106,6 +111,7 @@ bait.catchOnce(name, cb)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -130,6 +136,7 @@ bait.hooks(name) -> table
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -151,6 +158,7 @@ bait.release(name, catcher)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -188,6 +196,7 @@ bait.throw(name, ...args)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -13,8 +13,8 @@ menu:
|
|||||||
Commander is the library which handles Hilbish commands. This makes
|
Commander is the library which handles Hilbish commands. This makes
|
||||||
the user able to add Lua-written commands to their shell without making
|
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
|
a separate script in a bin folder. Instead, you may simply use the Commander
|
||||||
library in your Hilbish config.
|
library in your Hilbish config.\
|
||||||
|
\
|
||||||
```lua
|
```lua
|
||||||
local commander = require 'commander'
|
local commander = require 'commander'
|
||||||
|
|
||||||
@ -25,20 +25,18 @@ end)
|
|||||||
|
|
||||||
In this example, a command with the name of `hello` is created
|
In this example, a command with the name of `hello` is created
|
||||||
that will print `Hello world!` to output. One question you may
|
that will print `Hello world!` to output. One question you may
|
||||||
have is: What is the `sinks` parameter?
|
have is: What is the `sinks` parameter?\
|
||||||
|
\
|
||||||
The `sinks` parameter is a table with 3 keys: `input`, `out`, and `err`.
|
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']`)
|
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.
|
as `in` is also a Lua keyword, so `input` is preferred for use.
|
||||||
All of them are a @Sink.
|
All of them are a @Sink.
|
||||||
In the future, `sinks.in` will be removed.
|
In the future, `sinks.in` will be removed.\
|
||||||
|
\
|
||||||
|
|
||||||
- `in` is the standard input.
|
- `in` is the standard input. You may use the read functions on this sink to get input from the user.
|
||||||
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.
|
||||||
- `out` is standard output.
|
- `err` is standard error. This sink is for writing errors, as the name would suggest.
|
||||||
This is usually where command output should go.
|
|
||||||
- `err` is standard error.
|
|
||||||
This sink is for writing errors, as the name would suggest.
|
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
@ -74,6 +72,7 @@ commander.deregister(name)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -95,6 +94,7 @@ commander.register(name, cb)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -132,6 +132,7 @@ commander.registry() -> table
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -91,6 +91,7 @@ fs.abs(path) -> string
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -113,6 +114,7 @@ fs.basename(path) -> string
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -135,6 +137,7 @@ fs.cd(dir)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -156,6 +159,7 @@ fs.dir(path) -> string
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -178,6 +182,7 @@ fs.glob(pattern) -> matches (table)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -214,6 +219,7 @@ fs.join(...path) -> string
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -242,6 +248,7 @@ fs.mkdir(name, recursive)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -274,6 +281,7 @@ fs.fpipe() -> File, File
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -294,6 +302,7 @@ fs.readdir(path) -> table[string]
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -315,6 +324,7 @@ fs.stat(path) -> {}
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
title: Module hilbish
|
title: Module hilbish
|
||||||
description:
|
description: the core Hilbish API
|
||||||
layout: doc
|
layout: doc
|
||||||
menu:
|
menu:
|
||||||
docs:
|
docs:
|
||||||
@ -9,7 +9,8 @@ menu:
|
|||||||
|
|
||||||
## Introduction
|
## Introduction
|
||||||
|
|
||||||
|
The Hilbish module includes the core API, containing
|
||||||
|
interfaces and functions which directly relate to shell functionality.
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
@ -86,6 +87,53 @@ menu:
|
|||||||
</div>
|
</div>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Static module fields
|
||||||
|
|
||||||
|
``` =html
|
||||||
|
<div class='relative overflow-x-auto sm:rounded-lg my-4'>
|
||||||
|
<table class='w-full text-sm text-left rtl:text-right text-gray-500 dark:text-gray-400'>
|
||||||
|
<tbody>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>ver</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>The version of Hilbish</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>goVersion</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>The version of Go that Hilbish was compiled with</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>user</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>Username of the user</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>host</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>Hostname of the machine</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>dataDir</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>Directory for Hilbish data files, including the docs and default modules</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>interactive</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>Is Hilbish in an interactive shell?</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>login</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>Is Hilbish the login shell?</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>vimMode</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>Current Vim input mode of Hilbish (will be nil if not in Vim input mode)</td>
|
||||||
|
</tr>
|
||||||
|
<tr class='bg-white border-b dark:bg-neutral-800 dark:border-neutral-700 border-neutral-200'>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>exitCode</td>
|
||||||
|
<td class='p-3 font-medium text-black whitespace-nowrap dark:text-white'>Exit code of the last executed command</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
```
|
||||||
|
|
||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
``` =html
|
``` =html
|
||||||
@ -97,6 +145,7 @@ hilbish.alias(cmd, orig)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -131,6 +180,7 @@ hilbish.appendPath(dir)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -164,6 +214,7 @@ hilbish.complete(scope, cb)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -219,6 +270,7 @@ hilbish.cwd() -> string
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -238,6 +290,7 @@ hilbish.exec(cmd)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -260,6 +313,7 @@ hilbish.goro(fn)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -284,6 +338,7 @@ hilbish.highlighter(line)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -319,6 +374,7 @@ hilbish.hinter(line, pos)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -355,6 +411,7 @@ hilbish.inputMode(mode)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -378,6 +435,7 @@ hilbish.interval(cb, time) -> @Timer
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -403,6 +461,7 @@ hilbish.multiprompt(str)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -444,6 +503,7 @@ hilbish.prependPath(dir)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -465,6 +525,7 @@ hilbish.prompt(str, typ)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -503,6 +564,7 @@ hilbish.read(prompt) -> input (string)
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -526,6 +588,7 @@ hilbish.timeout(cb, time) -> @Timer
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -551,6 +614,7 @@ hilbish.which(name) -> string
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ readline.new() -> @Readline
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -40,6 +40,7 @@ snail.new() -> @Snail
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ terminal.restoreState()
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -68,6 +69,7 @@ terminal.saveState()
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -87,6 +89,7 @@ terminal.setRaw()
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -106,6 +109,7 @@ terminal.size()
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ yarn.thread(fun) -> @Thread
|
|||||||
<i class="fas fa-paperclip"></i>
|
<i class="fas fa-paperclip"></i>
|
||||||
</a>
|
</a>
|
||||||
</h4>
|
</h4>
|
||||||
|
</div>
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -3,15 +3,14 @@
|
|||||||
Bait is the event emitter for Hilbish. Much like Node.js and
|
Bait is the event emitter for Hilbish. Much like Node.js and
|
||||||
its `events` system, many actions in Hilbish emit events.
|
its `events` system, many actions in Hilbish emit events.
|
||||||
Unlike Node.js, Hilbish events are global. So make sure to
|
Unlike Node.js, Hilbish events are global. So make sure to
|
||||||
pick a unique name!
|
pick a unique name!<nl>
|
||||||
|
|
||||||
Usage of the Bait module consists of userstanding
|
Usage of the Bait module consists of userstanding
|
||||||
event-driven architecture, but it's pretty simple:
|
event-driven architecture, but it's pretty simple:
|
||||||
If you want to act on a certain event, you can `catch` it.
|
If you want to act on a certain event, you can `catch` it.
|
||||||
You can act on events via callback functions.
|
You can act on events via callback functions.<nl>
|
||||||
|
|
||||||
Examples of this are in the Hilbish default config!
|
Examples of this are in the Hilbish default config!
|
||||||
Consider this part of it:
|
Consider this part of it:<nl>
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
bait.catch('command.exit', function(code)
|
bait.catch('command.exit', function(code)
|
||||||
running = false
|
running = false
|
||||||
@ -30,11 +29,12 @@ import (
|
|||||||
|
|
||||||
"hilbish/util"
|
"hilbish/util"
|
||||||
|
|
||||||
rt "github.com/arnodel/golua/runtime"
|
|
||||||
"github.com/arnodel/golua/lib/packagelib"
|
"github.com/arnodel/golua/lib/packagelib"
|
||||||
|
rt "github.com/arnodel/golua/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
type listenerType int
|
type listenerType int
|
||||||
|
|
||||||
const (
|
const (
|
||||||
goListener listenerType = iota
|
goListener listenerType = iota
|
||||||
luaListener
|
luaListener
|
||||||
@ -44,14 +44,14 @@ const (
|
|||||||
type Recoverer func(event string, handler *Listener, err interface{})
|
type Recoverer func(event string, handler *Listener, err interface{})
|
||||||
|
|
||||||
// Listener is a struct that holds the handler for an event.
|
// Listener is a struct that holds the handler for an event.
|
||||||
type Listener struct{
|
type Listener struct {
|
||||||
typ listenerType
|
typ listenerType
|
||||||
once bool
|
once bool
|
||||||
caller func(...interface{}) rt.Value
|
caller func(...interface{}) rt.Value
|
||||||
luaCaller *rt.Closure
|
luaCaller *rt.Closure
|
||||||
}
|
}
|
||||||
|
|
||||||
type Bait struct{
|
type Bait struct {
|
||||||
Loader packagelib.Loader
|
Loader packagelib.Loader
|
||||||
recoverer Recoverer
|
recoverer Recoverer
|
||||||
handlers map[string][]*Listener
|
handlers map[string][]*Listener
|
||||||
@ -93,8 +93,10 @@ func (b *Bait) Emit(event string, args ...interface{}) []rt.Value {
|
|||||||
for _, arg := range args {
|
for _, arg := range args {
|
||||||
var luarg rt.Value
|
var luarg rt.Value
|
||||||
switch arg.(type) {
|
switch arg.(type) {
|
||||||
case rt.Value: luarg = arg.(rt.Value)
|
case rt.Value:
|
||||||
default: luarg = rt.AsValue(arg)
|
luarg = arg.(rt.Value)
|
||||||
|
default:
|
||||||
|
luarg = rt.AsValue(arg)
|
||||||
}
|
}
|
||||||
luaArgs = append(luaArgs, luarg)
|
luaArgs = append(luaArgs, luarg)
|
||||||
}
|
}
|
||||||
@ -208,11 +210,10 @@ func (b *Bait) addListener(event string, listener *Listener) {
|
|||||||
b.handlers[event] = append(b.handlers[event], listener)
|
b.handlers[event] = append(b.handlers[event], listener)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
func (b *Bait) removeListener(event string, idx int) {
|
func (b *Bait) removeListener(event string, idx int) {
|
||||||
b.handlers[event][idx] = b.handlers[event][len(b.handlers[event]) - 1]
|
b.handlers[event][idx] = b.handlers[event][len(b.handlers[event])-1]
|
||||||
|
|
||||||
b.handlers[event] = b.handlers[event][:len(b.handlers[event]) - 1]
|
b.handlers[event] = b.handlers[event][:len(b.handlers[event])-1]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b *Bait) callRecoverer(event string, handler *Listener, err interface{}) {
|
func (b *Bait) callRecoverer(event string, handler *Listener, err interface{}) {
|
||||||
@ -294,8 +295,10 @@ func (b *Bait) bhooks(t *rt.Thread, c *rt.GoCont) (rt.Cont, error) {
|
|||||||
|
|
||||||
luaHandlers := rt.NewTable()
|
luaHandlers := rt.NewTable()
|
||||||
for _, handler := range handlers {
|
for _, handler := range handlers {
|
||||||
if handler.typ != luaListener { continue }
|
if handler.typ != luaListener {
|
||||||
luaHandlers.Set(rt.IntValue(luaHandlers.Len() + 1), rt.FunctionValue(handler.luaCaller))
|
continue
|
||||||
|
}
|
||||||
|
luaHandlers.Set(rt.IntValue(luaHandlers.Len()+1), rt.FunctionValue(handler.luaCaller))
|
||||||
}
|
}
|
||||||
|
|
||||||
if luaHandlers.Len() == 0 {
|
if luaHandlers.Len() == 0 {
|
||||||
|
@ -3,8 +3,7 @@
|
|||||||
Commander is the library which handles Hilbish commands. This makes
|
Commander is the library which handles Hilbish commands. This makes
|
||||||
the user able to add Lua-written commands to their shell without making
|
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
|
a separate script in a bin folder. Instead, you may simply use the Commander
|
||||||
library in your Hilbish config.
|
library in your Hilbish config.<nl>
|
||||||
|
|
||||||
```lua
|
```lua
|
||||||
local commander = require 'commander'
|
local commander = require 'commander'
|
||||||
|
|
||||||
@ -15,32 +14,27 @@ end)
|
|||||||
|
|
||||||
In this example, a command with the name of `hello` is created
|
In this example, a command with the name of `hello` is created
|
||||||
that will print `Hello world!` to output. One question you may
|
that will print `Hello world!` to output. One question you may
|
||||||
have is: What is the `sinks` parameter?
|
have is: What is the `sinks` parameter?<nl>
|
||||||
|
|
||||||
The `sinks` parameter is a table with 3 keys: `input`, `out`, and `err`.
|
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']`)
|
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.
|
as `in` is also a Lua keyword, so `input` is preferred for use.
|
||||||
All of them are a @Sink.
|
All of them are a @Sink.
|
||||||
In the future, `sinks.in` will be removed.
|
In the future, `sinks.in` will be removed.<nl>
|
||||||
|
- `in` is the standard input. You may use the read functions on this sink to get input from the user.
|
||||||
- `in` is the standard input.
|
- `out` is standard output. This is usually where command output should go.
|
||||||
You may use the read functions on this sink to get input from the user.
|
- `err` is standard error. This sink is for writing errors, as the name would suggest.
|
||||||
- `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.
|
|
||||||
*/
|
*/
|
||||||
package commander
|
package commander
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"hilbish/util"
|
|
||||||
"hilbish/golibs/bait"
|
"hilbish/golibs/bait"
|
||||||
|
"hilbish/util"
|
||||||
|
|
||||||
rt "github.com/arnodel/golua/runtime"
|
|
||||||
"github.com/arnodel/golua/lib/packagelib"
|
"github.com/arnodel/golua/lib/packagelib"
|
||||||
|
rt "github.com/arnodel/golua/runtime"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Commander struct{
|
type Commander struct {
|
||||||
Events *bait.Bait
|
Events *bait.Bait
|
||||||
Loader packagelib.Loader
|
Loader packagelib.Loader
|
||||||
Commands map[string]*rt.Closure
|
Commands map[string]*rt.Closure
|
||||||
|
@ -4,23 +4,17 @@ description: Steps on how to install Hilbish on all the OSes and distros support
|
|||||||
layout: page
|
layout: page
|
||||||
---
|
---
|
||||||
|
|
||||||
|
There are a small amount of ways to grab Hilbish. You can download the releases from GitHub, use your package manager, or build from source.
|
||||||
|
|
||||||
## Official Binaries
|
## Official Binaries
|
||||||
|
|
||||||
The best way to get Hilbish is to get a build directly from GitHub.
|
The easiest way to get Hilbish is to get a build directly from GitHub.
|
||||||
|
|
||||||
At any time, there are 2 versions of Hilbish available to install:
|
At any time, there are 2 versions of Hilbish available to install:
|
||||||
the latest stable release, and development builds from the master branch.
|
the latest stable release, and development builds from the master branch.\
|
||||||
|
You can download both at any time, but note that the development builds may have breaking changes.\
|
||||||
|
To download the latest stable release, [see here](https://github.com/Rosettea/Hilbish/releases/latest)
|
||||||
|
|
||||||
You can download both at any time, but note that the development builds may
|
For the latest development build, [click here](https://nightly.link/Rosettea/Hilbish/workflows/build/master)
|
||||||
have breaking changes.
|
|
||||||
|
|
||||||
For the latest *stable release*, check here: https://github.com/Rosettea/Hilbish/releases/latest
|
|
||||||
|
|
||||||
For a *development build*: https://nightly.link/Rosettea/Hilbish/workflows/build/master
|
|
||||||
|
|
||||||
## Compiling
|
|
||||||
|
|
||||||
To read the steps for compiling Hilbish, head over to the [GitHub repository.](https://github.com/Rosettea/Hilbish#build)
|
|
||||||
|
|
||||||
## Package Repositories
|
## Package Repositories
|
||||||
|
|
||||||
@ -47,3 +41,7 @@ Or, from master branch: `yay -S hilbish-git`
|
|||||||
|
|
||||||
Hilbish is currentlty in the testing/edge repository for Alpine.
|
Hilbish is currentlty in the testing/edge repository for Alpine.
|
||||||
Follow the steps [here](https://wiki.alpinelinux.org/wiki/Enable_Community_Repository) (using testing repositories) and install: `apk add hilbish`
|
Follow the steps [here](https://wiki.alpinelinux.org/wiki/Enable_Community_Repository) (using testing repositories) and install: `apk add hilbish`
|
||||||
|
|
||||||
|
## Compiling From Source
|
||||||
|
|
||||||
|
To see steps on compiling Hilbish from source, [visit the GitHub repository](https://github.com/Rosettea/Hilbish#build)
|
||||||
|
@ -21,7 +21,7 @@ pub fn page(
|
|||||||
this_slug: String,
|
this_slug: String,
|
||||||
doc_pages_list,
|
doc_pages_list,
|
||||||
) -> element.Element(a) {
|
) -> element.Element(a) {
|
||||||
html.div([attribute.class("flex-auto flex flex-col overflow-none")], [
|
html.div([attribute.class("flex-1 flex flex-col overflow-hidden")], [
|
||||||
html.div(
|
html.div(
|
||||||
[
|
[
|
||||||
attribute.class(
|
attribute.class(
|
||||||
@ -43,7 +43,7 @@ pub fn page(
|
|||||||
html.span([attribute.class("font-bold")], [element.text(p.title)]),
|
html.span([attribute.class("font-bold")], [element.text(p.title)]),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
html.div([attribute.class("h-full sm:flex grid")], [
|
html.div([attribute.class("flex-1 sm:flex grid overflow-hidden")], [
|
||||||
html.input([
|
html.input([
|
||||||
attribute.type_("checkbox"),
|
attribute.type_("checkbox"),
|
||||||
attribute.id("sidebar-toggle"),
|
attribute.id("sidebar-toggle"),
|
||||||
@ -52,7 +52,7 @@ pub fn page(
|
|||||||
html.div(
|
html.div(
|
||||||
[
|
[
|
||||||
attribute.class(
|
attribute.class(
|
||||||
"p-4 sm:border-r sm:border-r-zinc-300 col-start-1 row-start-1 bg-neutral-100 dark:bg-neutral-950 basis-2/10 transition-transform duration-300 -translate-x-full peer-checked:translate-x-0 sm:translate-x-0 z-30",
|
"overflow-y-scroll p-4 sm:border-r sm:border-r-zinc-300 col-start-1 row-start-1 bg-neutral-100 dark:bg-neutral-950 basis-2/10 transition-transform duration-300 -translate-x-full peer-checked:translate-x-0 sm:translate-x-0 z-30",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
@ -187,18 +187,24 @@ pub fn page(
|
|||||||
html.main(
|
html.main(
|
||||||
[
|
[
|
||||||
attribute.class(
|
attribute.class(
|
||||||
"mb-4 h-full overflow-y-auto basis-7/7 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",
|
"flex-1 flex justify-center basis-7/7 col-start-1 row-start-1 transition-all duration-300 peer-checked:filter peer-checked:blur-sm peer-checked:bg-black/30",
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
html.h1([attribute.class("my-3 font-bold text-4xl")], [
|
html.div([attribute.class("flex-1 flex flex-col overflow-y-auto")], [
|
||||||
element.text(p.title),
|
|
||||||
]),
|
|
||||||
// todo: add date of publishing
|
// todo: add date of publishing
|
||||||
//html.time([], [])
|
//html.time([], [])
|
||||||
//html.small([], [element.text({{p.contents |> string.split(" ") |> list.length} / 200} |> int.to_string <> " min read")]),
|
//html.small([], [element.text({{p.contents |> string.split(" ") |> list.length} / 200} |> int.to_string <> " min read")]),
|
||||||
//element.unsafe_raw_html("namespace", "Tag", [], render_doc(p.contents))
|
//element.unsafe_raw_html("namespace", "Tag", [], render_doc(p.contents))
|
||||||
|
html.div([attribute.class("flex-1 w-3/4 self-center p-8")], [
|
||||||
|
html.h1([attribute.class("my-3 font-bold text-4xl")], [
|
||||||
|
element.text(p.title),
|
||||||
|
]),
|
||||||
|
html.i([], [element.text(p.description)]),
|
||||||
..render_doc(p.contents)
|
..render_doc(p.contents)
|
||||||
|
]),
|
||||||
|
util.footer(),
|
||||||
|
]),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
@ -218,7 +224,8 @@ fn render_doc(md: String) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let margin = case level {
|
let margin = case level {
|
||||||
1 -> "my-2"
|
1 -> "my-4"
|
||||||
|
2 -> "my-2"
|
||||||
_ -> "my-1"
|
_ -> "my-1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,7 @@ import gleam/option
|
|||||||
pub type Post {
|
pub type Post {
|
||||||
Post(
|
Post(
|
||||||
name: String,
|
name: String,
|
||||||
|
description: String,
|
||||||
title: String,
|
title: String,
|
||||||
slug: String,
|
slug: String,
|
||||||
metadata: option.Option(glaml.Document),
|
metadata: option.Option(glaml.Document),
|
||||||
|
@ -6,6 +6,7 @@ import lustre/attribute
|
|||||||
import lustre/element
|
import lustre/element
|
||||||
import lustre/element/html
|
import lustre/element/html
|
||||||
|
|
||||||
|
import conf
|
||||||
import glaml
|
import glaml
|
||||||
import post
|
import post
|
||||||
|
|
||||||
@ -68,3 +69,74 @@ pub fn link(url: String, text: String, out: Bool) {
|
|||||||
],
|
],
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn nav() -> element.Element(a) {
|
||||||
|
html.nav(
|
||||||
|
[
|
||||||
|
attribute.class(
|
||||||
|
"bg-stone-100/80 dark:bg-neutral-950/80 flex justify-around sticky items-center top-0 w-full z-50 border-b border-b-zinc-300 backdrop-blur-md h-12",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
html.div([attribute.class("flex my-auto px-2")], [
|
||||||
|
html.div([], [
|
||||||
|
html.a(
|
||||||
|
[attribute.href("/"), attribute.class("flex items-center gap-1")],
|
||||||
|
[
|
||||||
|
html.img([
|
||||||
|
attribute.src(conf.base_url_join("/hilbish-flower.png")),
|
||||||
|
attribute.class("h-8"),
|
||||||
|
]),
|
||||||
|
html.span([attribute.class("self-center text-3xl font-medium")], [
|
||||||
|
element.text("Hilbish"),
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
html.div([attribute.class("flex gap-3")], [
|
||||||
|
link(conf.base_url_join("/install"), "Install", False),
|
||||||
|
link(conf.base_url_join("/docs"), "Docs", False),
|
||||||
|
link(conf.base_url_join("/blog"), "Blog", False),
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn footer() -> element.Element(a) {
|
||||||
|
html.footer(
|
||||||
|
[
|
||||||
|
attribute.class(
|
||||||
|
"py-4 px-6 flex flex-row justify-around border-t border-t-zinc-300",
|
||||||
|
),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
html.div([attribute.class("flex flex-col")], [
|
||||||
|
html.a(
|
||||||
|
[
|
||||||
|
attribute.href(conf.base_url),
|
||||||
|
attribute.class("flex items-center gap-1"),
|
||||||
|
],
|
||||||
|
[
|
||||||
|
html.img([
|
||||||
|
attribute.src(conf.base_url_join("/hilbish-flower.png")),
|
||||||
|
attribute.class("h-24"),
|
||||||
|
]),
|
||||||
|
html.span([attribute.class("self-center text-6xl")], [
|
||||||
|
element.text("Hilbish"),
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
html.span([attribute.class("text-xl")], [
|
||||||
|
element.text("The Moon-powered shell!"),
|
||||||
|
]),
|
||||||
|
html.span([attribute.class("text-light text-neutral-500")], [
|
||||||
|
element.text("MIT License, copyright sammyette 2025"),
|
||||||
|
]),
|
||||||
|
]),
|
||||||
|
html.div([attribute.class("flex flex-col")], [
|
||||||
|
link("https://github.com/Rosettea/Hilbish", "GitHub", True),
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
)
|
||||||
|
}
|
||||||
|
@ -56,8 +56,20 @@ pub fn main() {
|
|||||||
option.None -> ""
|
option.None -> ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let description = case metadata {
|
||||||
|
option.Some(metadata) -> {
|
||||||
|
case
|
||||||
|
glaml.select_sugar(glaml.document_root(metadata), "description")
|
||||||
|
{
|
||||||
|
Ok(glaml.NodeStr(s)) -> s
|
||||||
|
_ -> ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
option.None -> ""
|
||||||
|
}
|
||||||
|
|
||||||
let assert Ok(filename) = path |> string.split("/") |> list.last
|
let assert Ok(filename) = path |> string.split("/") |> list.last
|
||||||
#(slug, post.Post(name, title, slug, metadata, content))
|
#(slug, post.Post(name, description, title, slug, metadata, content))
|
||||||
})
|
})
|
||||||
|
|
||||||
let doc_pages =
|
let doc_pages =
|
||||||
@ -78,14 +90,18 @@ pub fn main() {
|
|||||||
let build =
|
let build =
|
||||||
ssg.new("./public")
|
ssg.new("./public")
|
||||||
|> ssg.add_static_dir("static")
|
|> ssg.add_static_dir("static")
|
||||||
|> ssg.add_static_route("/", create_page(index.page()))
|
|> ssg.add_static_route("/", create_page(index.page(), False))
|
||||||
|> list.fold(posts, _, fn(config, post) {
|
|> list.fold(posts, _, fn(config, post) {
|
||||||
let page = case is_doc_page(post.0) {
|
let page = case is_doc_page(post.0) {
|
||||||
True -> doc.page(post.1, post.0, doc_pages)
|
True -> doc.page(post.1, post.0, doc_pages)
|
||||||
False -> doc.page(post.1, post.0, doc_pages)
|
False -> doc.page(post.1, post.0, doc_pages)
|
||||||
}
|
}
|
||||||
//io.debug(post.0)
|
//io.debug(post.0)
|
||||||
ssg.add_static_route(config, post.0, create_page(page))
|
ssg.add_static_route(
|
||||||
|
config,
|
||||||
|
post.0,
|
||||||
|
create_page(page, is_doc_page(post.0)),
|
||||||
|
)
|
||||||
})
|
})
|
||||||
|> ssg.use_index_routes
|
|> ssg.use_index_routes
|
||||||
|> ssg.build
|
|> ssg.build
|
||||||
@ -106,78 +122,10 @@ fn is_doc_page(slug: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn nav() -> element.Element(a) {
|
fn create_page(
|
||||||
html.nav(
|
content: element.Element(a),
|
||||||
[
|
doc_page: Bool,
|
||||||
attribute.class(
|
) -> element.Element(a) {
|
||||||
"bg-stone-100/80 dark:bg-neutral-950/80 flex justify-around sticky items-center top-0 w-full z-50 border-b border-b-zinc-300 backdrop-blur-md h-12",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
html.div([attribute.class("flex my-auto px-2")], [
|
|
||||||
html.div([], [
|
|
||||||
html.a(
|
|
||||||
[attribute.href("/"), attribute.class("flex items-center gap-1")],
|
|
||||||
[
|
|
||||||
html.img([
|
|
||||||
attribute.src(conf.base_url_join("/hilbish-flower.png")),
|
|
||||||
attribute.class("h-8"),
|
|
||||||
]),
|
|
||||||
html.span([attribute.class("self-center text-3xl font-medium")], [
|
|
||||||
element.text("Hilbish"),
|
|
||||||
]),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
]),
|
|
||||||
]),
|
|
||||||
html.div([attribute.class("flex gap-3")], [
|
|
||||||
util.link(conf.base_url_join("/install"), "Install", False),
|
|
||||||
util.link(conf.base_url_join("/docs"), "Docs", False),
|
|
||||||
util.link(conf.base_url_join("/blog"), "Blog", False),
|
|
||||||
]),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn footer() -> element.Element(a) {
|
|
||||||
html.footer(
|
|
||||||
[
|
|
||||||
attribute.class(
|
|
||||||
"py-4 px-6 flex flex-row justify-around border-t border-t-zinc-300",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
html.div([attribute.class("flex flex-col")], [
|
|
||||||
html.a(
|
|
||||||
[
|
|
||||||
attribute.href(conf.base_url),
|
|
||||||
attribute.class("flex items-center gap-1"),
|
|
||||||
],
|
|
||||||
[
|
|
||||||
html.img([
|
|
||||||
attribute.src(conf.base_url_join("/hilbish-flower.png")),
|
|
||||||
attribute.class("h-24"),
|
|
||||||
]),
|
|
||||||
html.span([attribute.class("self-center text-6xl")], [
|
|
||||||
element.text("Hilbish"),
|
|
||||||
]),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
html.span([attribute.class("text-xl")], [
|
|
||||||
element.text("The Moon-powered shell!"),
|
|
||||||
]),
|
|
||||||
html.span([attribute.class("text-light text-neutral-500")], [
|
|
||||||
element.text("MIT License, copyright sammyette 2025"),
|
|
||||||
]),
|
|
||||||
]),
|
|
||||||
html.div([attribute.class("flex flex-col")], [
|
|
||||||
util.link("https://github.com/Rosettea/Hilbish", "GitHub", True),
|
|
||||||
]),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn create_page(content: element.Element(a)) -> element.Element(a) {
|
|
||||||
let description =
|
let description =
|
||||||
"Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua."
|
"Something Unique. Hilbish is the new interactive shell for Lua fans. Extensible, scriptable, configurable: All in Lua."
|
||||||
|
|
||||||
@ -236,10 +184,13 @@ fn create_page(content: element.Element(a)) -> element.Element(a) {
|
|||||||
attribute.attribute("property", "og:url"),
|
attribute.attribute("property", "og:url"),
|
||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
html.body([attribute.class("min-h-screen flex flex-col")], [
|
html.body([attribute.class("h-screen flex flex-col")], [
|
||||||
nav(),
|
util.nav(),
|
||||||
content,
|
content,
|
||||||
footer(),
|
case doc_page {
|
||||||
|
True -> element.none()
|
||||||
|
False -> util.footer()
|
||||||
|
},
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user