mirror of https://github.com/Hilbis/Hilbish
Compare commits
7 Commits
fd513b6ae3
...
21b093559a
Author | SHA1 | Date |
---|---|---|
TorchedSammy | 21b093559a | |
TorchedSammy | e5566f672a | |
TorchedSammy | 715a67b882 | |
TorchedSammy | 18abb66ad4 | |
TorchedSammy | 9d390c87cf | |
TorchedSammy | e3a0195eb3 | |
TorchedSammy | 06221e06cd |
13
CHANGELOG.md
13
CHANGELOG.md
|
@ -22,19 +22,22 @@ with Lua
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- The minimal config is truly minimal now
|
- The minimal config is truly minimal now
|
||||||
- (Possibly) **Breaking Change:** Change default SHLVL to 0 instead of 1
|
#### Breaking Changes
|
||||||
- **Breaking Change:** ~/.hilbishrc.lua will no longer be run by default, it now
|
(there were a lot...)
|
||||||
|
- Change default SHLVL to 0 instead of 1
|
||||||
|
- ~/.hilbishrc.lua will no longer be run by default, it now
|
||||||
only uses the paths mentioned below.
|
only uses the paths mentioned below.
|
||||||
- **Breaking Change:** Changed Hilbish's config path to something more suited
|
- Changed Hilbish's config path to something more suited
|
||||||
according to the OS (`$XDG_CONFIG_HOME/hilbish/init.lua` on Linux,
|
according to the OS (`$XDG_CONFIG_HOME/hilbish/init.lua` on Linux,
|
||||||
`~/Library/Application Support/hilbish/init.lua` on MacOs and
|
`~/Library/Application Support/hilbish/init.lua` on MacOs and
|
||||||
(`%APPDATA%/hilbish/init.lua` on Windows). Previously on Unix-like it was
|
(`%APPDATA%/hilbish/init.lua` on Windows). Previously on Unix-like it was
|
||||||
`$XDG_CONFIG_HOME/hilbish/hilbishrc.lua`
|
`$XDG_CONFIG_HOME/hilbish/hilbishrc.lua`
|
||||||
- **Breaking Change:** The history path has been changed to a better suited path.
|
- The history path has been changed to a better suited path.
|
||||||
On Linux, it is `$XDG_DATA_HOME/hilbish/.hilbish-history` and for others it is
|
On Linux, it is `$XDG_DATA_HOME/hilbish/.hilbish-history` and for others it is
|
||||||
the config path.
|
the config path.
|
||||||
- **Breaking Change:** `hilbish.xdg` no longer exists, use `hilbish.userDir` instead,
|
- `hilbish.xdg` no longer exists, use `hilbish.userDir` instead,
|
||||||
as it functions the same and is OS agnostic
|
as it functions the same and is OS agnostic
|
||||||
|
- `hilbish.flag` has been removed
|
||||||
|
|
||||||
## [0.7.1] - 2021-11-22
|
## [0.7.1] - 2021-11-22
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
38
api.go
38
api.go
|
@ -14,7 +14,6 @@ import (
|
||||||
|
|
||||||
"hilbish/util"
|
"hilbish/util"
|
||||||
|
|
||||||
"github.com/pborman/getopt"
|
|
||||||
"github.com/yuin/gopher-lua"
|
"github.com/yuin/gopher-lua"
|
||||||
"mvdan.cc/sh/v3/interp"
|
"mvdan.cc/sh/v3/interp"
|
||||||
)
|
)
|
||||||
|
@ -24,7 +23,6 @@ var exports = map[string]lua.LGFunction {
|
||||||
"appendPath": hlappendPath,
|
"appendPath": hlappendPath,
|
||||||
"cwd": hlcwd,
|
"cwd": hlcwd,
|
||||||
"exec": hlexec,
|
"exec": hlexec,
|
||||||
"flag": hlflag,
|
|
||||||
"multiprompt": hlmlprompt,
|
"multiprompt": hlmlprompt,
|
||||||
"prependPath": hlprependPath,
|
"prependPath": hlprependPath,
|
||||||
"prompt": hlprompt,
|
"prompt": hlprompt,
|
||||||
|
@ -86,6 +84,7 @@ The nice lil shell for {blue}Lua{reset} fanatics!
|
||||||
|
|
||||||
// run(cmd)
|
// run(cmd)
|
||||||
// Runs `cmd` in Hilbish's sh interpreter.
|
// Runs `cmd` in Hilbish's sh interpreter.
|
||||||
|
// --- @param cmd string
|
||||||
func hlrun(L *lua.LState) int {
|
func hlrun(L *lua.LState) int {
|
||||||
var exitcode uint8
|
var exitcode uint8
|
||||||
cmd := L.CheckString(1)
|
cmd := L.CheckString(1)
|
||||||
|
@ -101,23 +100,6 @@ func hlrun(L *lua.LState) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
// flag(f)
|
|
||||||
// Checks if the `f` flag has been passed to Hilbish.
|
|
||||||
func hlflag(L *lua.LState) int {
|
|
||||||
flagchar := L.CheckString(1)
|
|
||||||
|
|
||||||
flag := getopt.Lookup([]rune(flagchar)[0])
|
|
||||||
if flag == nil {
|
|
||||||
L.Push(lua.LNil)
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
passed := flag.Seen()
|
|
||||||
L.Push(lua.LBool(passed))
|
|
||||||
|
|
||||||
return 1
|
|
||||||
}
|
|
||||||
|
|
||||||
// cwd()
|
// cwd()
|
||||||
// Returns the current directory of the shell
|
// Returns the current directory of the shell
|
||||||
func hlcwd(L *lua.LState) int {
|
func hlcwd(L *lua.LState) int {
|
||||||
|
@ -140,6 +122,7 @@ func getenv(key, fallback string) string {
|
||||||
// Read input from the user, using Hilbish's line editor/input reader.
|
// Read input from the user, using Hilbish's line editor/input reader.
|
||||||
// This is a separate instance from the one Hilbish actually uses.
|
// This is a separate instance from the one Hilbish actually uses.
|
||||||
// Returns `input`, will be nil if ctrl + d is pressed, or an error occurs (which shouldn't happen)
|
// Returns `input`, will be nil if ctrl + d is pressed, or an error occurs (which shouldn't happen)
|
||||||
|
// --- @param prompt string
|
||||||
func hlread(L *lua.LState) int {
|
func hlread(L *lua.LState) int {
|
||||||
luaprompt := L.CheckString(1)
|
luaprompt := L.CheckString(1)
|
||||||
lualr := newLineReader(luaprompt)
|
lualr := newLineReader(luaprompt)
|
||||||
|
@ -154,13 +137,16 @@ func hlread(L *lua.LState) int {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
/* prompt(str)
|
/*
|
||||||
|
prompt(str)
|
||||||
Changes the shell prompt to `str`
|
Changes the shell prompt to `str`
|
||||||
There are a few verbs that can be used in the prompt text.
|
There are a few verbs that can be used in the prompt text.
|
||||||
These will be formatted and replaced with the appropriate values.
|
These will be formatted and replaced with the appropriate values.
|
||||||
`%d` - Current working directory
|
`%d` - Current working directory
|
||||||
`%u` - Name of current user
|
`%u` - Name of current user
|
||||||
`%h` - Hostname of device */
|
`%h` - Hostname of device
|
||||||
|
--- @param str string
|
||||||
|
*/
|
||||||
func hlprompt(L *lua.LState) int {
|
func hlprompt(L *lua.LState) int {
|
||||||
prompt = L.CheckString(1)
|
prompt = L.CheckString(1)
|
||||||
|
|
||||||
|
@ -169,6 +155,7 @@ func hlprompt(L *lua.LState) int {
|
||||||
|
|
||||||
// multiprompt(str)
|
// multiprompt(str)
|
||||||
// Changes the continued line prompt to `str`
|
// Changes the continued line prompt to `str`
|
||||||
|
// --- @param str string
|
||||||
func hlmlprompt(L *lua.LState) int {
|
func hlmlprompt(L *lua.LState) int {
|
||||||
multilinePrompt = L.CheckString(1)
|
multilinePrompt = L.CheckString(1)
|
||||||
|
|
||||||
|
@ -177,6 +164,8 @@ func hlmlprompt(L *lua.LState) int {
|
||||||
|
|
||||||
// alias(cmd, orig)
|
// alias(cmd, orig)
|
||||||
// Sets an alias of `orig` to `cmd`
|
// Sets an alias of `orig` to `cmd`
|
||||||
|
// --- @param cmd string
|
||||||
|
// --- @param orig string
|
||||||
func hlalias(L *lua.LState) int {
|
func hlalias(L *lua.LState) int {
|
||||||
alias := L.CheckString(1)
|
alias := L.CheckString(1)
|
||||||
source := L.CheckString(2)
|
source := L.CheckString(2)
|
||||||
|
@ -188,6 +177,7 @@ func hlalias(L *lua.LState) int {
|
||||||
|
|
||||||
// appendPath(dir)
|
// appendPath(dir)
|
||||||
// Appends `dir` to $PATH
|
// Appends `dir` to $PATH
|
||||||
|
// --- @param dir string|table
|
||||||
func hlappendPath(L *lua.LState) int {
|
func hlappendPath(L *lua.LState) int {
|
||||||
// check if dir is a table or a string
|
// check if dir is a table or a string
|
||||||
arg := L.Get(1)
|
arg := L.Get(1)
|
||||||
|
@ -217,6 +207,7 @@ func appendPath(dir string) {
|
||||||
|
|
||||||
// exec(cmd)
|
// exec(cmd)
|
||||||
// Replaces running hilbish with `cmd`
|
// Replaces running hilbish with `cmd`
|
||||||
|
// --- @param cmd string
|
||||||
func hlexec(L *lua.LState) int {
|
func hlexec(L *lua.LState) int {
|
||||||
cmd := L.CheckString(1)
|
cmd := L.CheckString(1)
|
||||||
cmdArgs, _ := splitInput(cmd)
|
cmdArgs, _ := splitInput(cmd)
|
||||||
|
@ -236,6 +227,7 @@ func hlexec(L *lua.LState) int {
|
||||||
|
|
||||||
// goro(fn)
|
// goro(fn)
|
||||||
// Puts `fn` in a goroutine
|
// Puts `fn` in a goroutine
|
||||||
|
// --- @param fn function
|
||||||
func hlgoroutine(L *lua.LState) int {
|
func hlgoroutine(L *lua.LState) int {
|
||||||
fn := L.CheckFunction(1)
|
fn := L.CheckFunction(1)
|
||||||
argnum := L.GetTop()
|
argnum := L.GetTop()
|
||||||
|
@ -258,6 +250,8 @@ func hlgoroutine(L *lua.LState) int {
|
||||||
|
|
||||||
// timeout(cb, time)
|
// timeout(cb, time)
|
||||||
// Runs the `cb` function after `time` in milliseconds
|
// Runs the `cb` function after `time` in milliseconds
|
||||||
|
// --- @param cb function
|
||||||
|
// --- @param time number
|
||||||
func hltimeout(L *lua.LState) int {
|
func hltimeout(L *lua.LState) int {
|
||||||
cb := L.CheckFunction(1)
|
cb := L.CheckFunction(1)
|
||||||
ms := L.CheckInt(2)
|
ms := L.CheckInt(2)
|
||||||
|
@ -275,6 +269,8 @@ func hltimeout(L *lua.LState) int {
|
||||||
|
|
||||||
// interval(cb, time)
|
// interval(cb, time)
|
||||||
// Runs the `cb` function every `time` milliseconds
|
// Runs the `cb` function every `time` milliseconds
|
||||||
|
// --- @param cb function
|
||||||
|
// --- @param time number
|
||||||
func hlinterval(L *lua.LState) int {
|
func hlinterval(L *lua.LState) int {
|
||||||
intervalfunc := L.CheckFunction(1)
|
intervalfunc := L.CheckFunction(1)
|
||||||
ms := L.CheckInt(2)
|
ms := L.CheckInt(2)
|
||||||
|
|
|
@ -12,8 +12,6 @@ cwd() > Returns the current directory of the shell
|
||||||
|
|
||||||
exec(cmd) > Replaces running hilbish with `cmd`
|
exec(cmd) > Replaces running hilbish with `cmd`
|
||||||
|
|
||||||
flag(f) > Checks if the `f` flag has been passed to Hilbish.
|
|
||||||
|
|
||||||
goro(fn) > Puts `fn` in a goroutine
|
goro(fn) > Puts `fn` in a goroutine
|
||||||
|
|
||||||
interval(cb, time) > Runs the `cb` function every `time` milliseconds
|
interval(cb, time) > Runs the `cb` function every `time` milliseconds
|
||||||
|
|
|
@ -3,10 +3,13 @@
|
||||||
local hilbish = {}
|
local hilbish = {}
|
||||||
|
|
||||||
--- Sets an alias of `orig` to `cmd`
|
--- Sets an alias of `orig` to `cmd`
|
||||||
function hilbish.alias() end
|
--- @param cmd string
|
||||||
|
--- @param orig string
|
||||||
|
function hilbish.alias(cmd, orig) end
|
||||||
|
|
||||||
--- Appends `dir` to $PATH
|
--- Appends `dir` to $PATH
|
||||||
function hilbish.appendPath() end
|
--- @param dir string|table
|
||||||
|
function hilbish.appendPath(dir) end
|
||||||
|
|
||||||
--- Registers a completion handler for `scope`.
|
--- Registers a completion handler for `scope`.
|
||||||
--- A `scope` is currently only expected to be `command.<cmd>`,
|
--- A `scope` is currently only expected to be `command.<cmd>`,
|
||||||
|
@ -19,19 +22,21 @@ function hilbish.complete() end
|
||||||
function hilbish.cwd() end
|
function hilbish.cwd() end
|
||||||
|
|
||||||
--- Replaces running hilbish with `cmd`
|
--- Replaces running hilbish with `cmd`
|
||||||
function hilbish.exec() end
|
--- @param cmd string
|
||||||
|
function hilbish.exec(cmd) end
|
||||||
--- Checks if the `f` flag has been passed to Hilbish.
|
|
||||||
function hilbish.flag() end
|
|
||||||
|
|
||||||
--- Puts `fn` in a goroutine
|
--- Puts `fn` in a goroutine
|
||||||
function hilbish.goroutine() end
|
--- @param fn function
|
||||||
|
function hilbish.goroutine(fn) end
|
||||||
|
|
||||||
--- Runs the `cb` function every `time` milliseconds
|
--- Runs the `cb` function every `time` milliseconds
|
||||||
function hilbish.interval() end
|
--- @param cb function
|
||||||
|
--- @param time number
|
||||||
|
function hilbish.interval(cb, time) end
|
||||||
|
|
||||||
--- Changes the continued line prompt to `str`
|
--- Changes the continued line prompt to `str`
|
||||||
function hilbish.mlprompt() end
|
--- @param str string
|
||||||
|
function hilbish.mlprompt(str) end
|
||||||
|
|
||||||
--- Prepends `dir` to $PATH
|
--- Prepends `dir` to $PATH
|
||||||
function hilbish.prependPath() end
|
function hilbish.prependPath() end
|
||||||
|
@ -42,17 +47,22 @@ function hilbish.prependPath() end
|
||||||
--- `%d` - Current working directory
|
--- `%d` - Current working directory
|
||||||
--- `%u` - Name of current user
|
--- `%u` - Name of current user
|
||||||
--- `%h` - Hostname of device
|
--- `%h` - Hostname of device
|
||||||
function hilbish.prompt() end
|
--- @param str string
|
||||||
|
function hilbish.prompt(str) end
|
||||||
|
|
||||||
--- Read input from the user, using Hilbish's line editor/input reader.
|
--- Read input from the user, using Hilbish's line editor/input reader.
|
||||||
--- This is a separate instance from the one Hilbish actually uses.
|
--- This is a separate instance from the one Hilbish actually uses.
|
||||||
--- Returns `input`, will be nil if ctrl + d is pressed, or an error occurs (which shouldn't happen)
|
--- Returns `input`, will be nil if ctrl + d is pressed, or an error occurs (which shouldn't happen)
|
||||||
function hilbish.read() end
|
--- @param prompt string
|
||||||
|
function hilbish.read(prompt) end
|
||||||
|
|
||||||
--- Runs `cmd` in Hilbish's sh interpreter.
|
--- Runs `cmd` in Hilbish's sh interpreter.
|
||||||
function hilbish.run() end
|
--- @param cmd string
|
||||||
|
function hilbish.run(cmd) end
|
||||||
|
|
||||||
--- Runs the `cb` function after `time` in milliseconds
|
--- Runs the `cb` function after `time` in milliseconds
|
||||||
function hilbish.timeout() end
|
--- @param cb function
|
||||||
|
--- @param time number
|
||||||
|
function hilbish.timeout(cb, time) end
|
||||||
|
|
||||||
return hilbish
|
return hilbish
|
||||||
|
|
6
go.mod
6
go.mod
|
@ -3,12 +3,16 @@ module hilbish
|
||||||
go 1.16
|
go 1.16
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/Rosettea/Hilbiline v0.0.0-20210710124707-aa6e3ff34cb2
|
github.com/Rosettea/Hilbiline v0.0.0-20210624011007-8088a2d84b65
|
||||||
github.com/Rosettea/readline v0.0.0-20211207004608-4afb088da503
|
github.com/Rosettea/readline v0.0.0-20211207004608-4afb088da503
|
||||||
github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9
|
github.com/chuckpreslar/emission v0.0.0-20170206194824-a7ddd980baf9
|
||||||
|
github.com/creack/goselect v0.1.2 // indirect
|
||||||
|
github.com/creack/termios v0.0.0-20160714173321-88d0029e36a1 // indirect
|
||||||
|
github.com/kr/pty v1.1.8 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.14 // indirect
|
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||||
github.com/mattn/go-runewidth v0.0.13 // indirect
|
github.com/mattn/go-runewidth v0.0.13 // indirect
|
||||||
github.com/maxlandon/readline v0.1.0-beta.0.20211027085530-2b76cabb8036
|
github.com/maxlandon/readline v0.1.0-beta.0.20211027085530-2b76cabb8036
|
||||||
|
github.com/pborman/ansi v1.0.0 // indirect
|
||||||
github.com/pborman/getopt v1.1.0
|
github.com/pborman/getopt v1.1.0
|
||||||
github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9
|
github.com/yuin/gopher-lua v0.0.0-20210529063254-f4c35e4016d9
|
||||||
golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7 // indirect
|
golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7 // indirect
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -1,3 +1,5 @@
|
||||||
|
github.com/Rosettea/Hilbiline v0.0.0-20210624011007-8088a2d84b65 h1:z6alP313nLg1U/V3bKSd6849L/A2LxDSwKv4CPqqzDk=
|
||||||
|
github.com/Rosettea/Hilbiline v0.0.0-20210624011007-8088a2d84b65/go.mod h1:/FFZ4cgR6TXXYaskRUxyLIYdfG0PS4BPtWjWRQms754=
|
||||||
github.com/Rosettea/Hilbiline v0.0.0-20210710124707-aa6e3ff34cb2 h1:6f1umn6mkodpGf6rK9LZjr4Gut2uS+b8QLoFBFTeOE8=
|
github.com/Rosettea/Hilbiline v0.0.0-20210710124707-aa6e3ff34cb2 h1:6f1umn6mkodpGf6rK9LZjr4Gut2uS+b8QLoFBFTeOE8=
|
||||||
github.com/Rosettea/Hilbiline v0.0.0-20210710124707-aa6e3ff34cb2/go.mod h1:0J2+sRC+d4a3swcH20sVlFvYUEXASvGTHJnVTTI4S9w=
|
github.com/Rosettea/Hilbiline v0.0.0-20210710124707-aa6e3ff34cb2/go.mod h1:0J2+sRC+d4a3swcH20sVlFvYUEXASvGTHJnVTTI4S9w=
|
||||||
github.com/Rosettea/readline v0.0.0-20211207004608-4afb088da503 h1:hA2kXBwY8SFH3+PT67CkoUjlMuRN08RSEtsKjwQ+of4=
|
github.com/Rosettea/readline v0.0.0-20211207004608-4afb088da503 h1:hA2kXBwY8SFH3+PT67CkoUjlMuRN08RSEtsKjwQ+of4=
|
||||||
|
|
Loading…
Reference in New Issue