Commit Graph

74 Commits (2f6ab5fd92e77d46ec953bdcc39a7f7bd99536e0)

Author SHA1 Message Date
sammyette 2f6ab5fd92
feat: add sink for commanders to write output/read input (#232)
to write output, you would usually just use the print builtin
since commanders are just lua custom commands but this does not
consider the fact of pipes or other shell operators being used
to redirect or whatever.

this adds readable/writable "sinks" which is a type for input
or output and is currently only used for commanders but can be
used for other hilbish things in the future
2023-01-20 19:07:42 -04:00
TorchedSammy 068a5b5149
feat(bait): add error hook and hooks function (closes #205)
an `error` hook is now thrown when an event in lua
throws an error (errors from go side should not happen)
it includes the event name, handler, and error message

a hooks function has also been added. it returns a table
of handlers for a specific event.
2022-10-11 17:41:13 -04:00
sammy 2337f9ab60
refactor: use custom event emitter (#193)
* refactor: use custom event emitter

* fix: sigint hook emit on windows

* fix: restore correct hilbish conf file

* fix: call recoverer for go listeners

* refactor(golibs/bait): use 1 map for listeners

* feat: add once listeners, ability to remove listeners and remove listener on error

* perf: reslice listener slice instead of trying to do ordered move with append

* feat(bait): add release function to remove event listener

* perf: remove listener directly from once emit instead of using off function

* refactor: use bait event emitter on commander

* docs(golibs/bait): add doc strings for functions

* docs: set changelog

* docs(golibs/bait): add docs for lua release function
2022-08-17 18:01:32 -04:00
TorchedSammy 2b480e50e6
feat: print tracebacks for errors 2022-07-13 10:08:23 -04:00
TorchedSammy 08e2951513
feat: add raw input hook (closes #180) 2022-07-10 20:34:00 -04:00
TorchedSammy 0a01ed862c
feat: print error if nature is missing 2022-05-06 19:21:32 -04:00
TorchedSammy c4eb3ad368
chore: change lua init errors to make more sense 2022-04-30 20:31:37 -04:00
TorchedSammy 9e596dc271
refactor: (re)organize and change prelude path and structure
prelude is no longer. it is now nature.
organized the single file prelude into multiple
source files and renamed it to nature. this is coming
after thought that it can turn into a general hilbish
lua core, with user facing modules as well.

this introduces the `nature.dirs` module, to interact
and get recently changed to directories and last/old
cwd.
2022-04-23 00:03:50 -04:00
sammyette 0fc5f457ad
refactor!: support lua 5.4 (#129)
major rewrite which changes the library hilbish uses for it's lua vm
this one implements lua 5.4, and since that's a major version bump,
it's a breaking change. introduced here also is a fix for `hilbish.login`
not being the right value

* refactor: start work on lua 5.4

lots of commented out code

ive found a go lua library which implements lua 5.4
and found an opportunity to start working on it.
this commit basically removes everything and just leaves
enough for the shell to be "usable" and able to start.
there are no builtins or libraries (besides the `hilbish` global)

* fix: call cont next in prompt function

this continues execution of lua, very obvious
fixes an issue with code stopping at the prompt function

* fix: handle errors in user config

* fix: handle panic in lua input if it is incorrect

* feat: implement bait

* refactor: use util funcs to run lua where possible

* refactor: move arg handle function to util

* feat: implement commander

* feat: implement fs

* feat: add hilbish module functions used by prelude

* chore: use custom fork of golua

* fix: make sure args to setenv are strings in prelude

* feat: implement completions

* chore: remove comment

* feat: implement terminal

* feat: implement hilbish.interval

* chore: update lunacolors

* chore: update golua

* feat: implement aliases

* feat: add input mode

* feat: implement runner mode

* style: use comma separated cases instead of fallthrough

* feat: implement syntax highlight and hints

* chore: add comments to document util functions

* chore: fix dofile comment doc

* refactor: make loader functions for go modules unexported

* feat: implement job management

* feat: add hilbish properties

* feat: implement all hilbish module functions

* feat: implement history interface

* feat: add completion interface

* feat: add module description docs

* feat: implement os interface

* refactor: use hlalias for add function in hilbish.alias interface

* feat: make it so hilbish.run can return command output

* fix: set hilbish.exitCode to last command exit code

* fix(ansikit): flush on io.write

* fix: deregister commander if return isnt number

* feat: run script when provided path

* fix: read file manually in DoFile to avoid shebang

* chore: add comment for reason of unreading byte

* fix: remove prelude error printing

* fix: add names at chunk load for context in errors

* fix: add newline at the beginning of file buffer when there is shebang

this makes the line count in error messages line up properly

* fix: remove extra newline after error
2022-04-04 06:40:02 -04:00
TorchedSammy eff942433d
fix!: remove complete global (was supposed to be gone in 1.0) 2022-03-27 21:10:13 -04:00
TorchedSammy 99c9e95eeb
refactor!: change preload.lua to prelude/init.lua, add guide command
this commit has 2 changes:
- preload.lua is now init.lua in the prelude folder. the reason
for the name change of preload to prelude is to make update/
overwrite not hell

- the guide command has been added which is a simple step through
getting started type of thing for new users
2022-03-06 14:45:06 -04:00
TorchedSammy 0b5bbcc73c
refactor!: remove .hprofile.lua
same reason as not using ~/.hilbishrc.lua, and also
the fact that users can now just check if
`hilbish.login` is true in their config which is
more organized
2022-02-26 12:14:26 -04:00
TorchedSammy 3f9aad64b5
fix: use right function to set prompt in minimal config 2022-01-27 17:01:27 -04:00
TorchedSammy f2a2ac44d6
refactor!: move global functions to the hilbish module
its more organized this way and the `hilbish` lua module
is now what global was before anyway

a feature in this commit also is that `goro` now allows
passing any amount of args to the calling function
2022-01-26 15:51:52 -04:00
TorchedSammy bcbd4be7f9
feat: allow appendPath to take table of paths (closes #88) 2021-12-31 13:22:26 -04:00
TorchedSammy bcc249a4bd
feat: add aliases interface (closes #87 and #86)
500th commit!
adds the `hilbish.aliases` interface
it allows you to add, delete and get all aliases

there was also a slight refactor with alias resolving in this commit,
there is a single resolve function instead of duplicate code.
with consideration this could be exported to lua side,
but i see no reason for it
2021-12-14 20:54:23 -04:00
TorchedSammy bcfbb20685
fix: dont export lua init 2021-12-08 23:31:48 -04:00
TorchedSammy 5c6310b1ca
refactor: dont export functions and types 2021-12-06 17:21:31 -04:00
TorchedSammy 2e21af4d6b
refactor: use curuser to get homedir everywhere 2021-12-01 18:31:04 -04:00
TorchedSammy 9261253b63
fix: stop interval if error occurs 2021-11-28 09:29:17 -05:00
TorchedSammy f6aaf85cca
fix: make minimal config actually minimal and not require lunacolors 2021-11-27 22:51:32 -05:00
TorchedSammy af4c3885ae
feat: add signal hooks for sigint and sigwinch (#80) 2021-11-22 15:13:05 -05:00
TorchedSammy 94a8b4ad47
feat: add prependPath function (resolves #81) 2021-11-22 12:46:39 -05:00
TorchedSammy 72cf776882
fix: use golang path list separator to not be unix specific 2021-11-22 12:45:45 -05:00
TorchedSammy 123f8992b1
feat: add tab completion api
tab complete is better than it was before!
there is a new `complete` function which allows adding custom arguments
to complete specific functions.
hilbish will now also complete executables if it's the first input
argument (this also works with ./)
if no completion is added for a command, hilbish will just complete
files
2021-11-22 11:24:31 -05:00
sammyette 3d53e85fc9
feat: add terminal package
a simple, smaller but lower level terminal library, mainly used to set
raw mode. functions:
size, save and restore current state, set raw mode. documentation is in
docs/terminal.txt or `doc terminal` in hilbish
2021-10-17 16:10:57 -04:00
sammyette 784e611272
chore: remove unused setField func 2021-10-16 15:33:57 -04:00
sammyette 3cafbe8c4f
docs: document `hilbish` module functions, xdg vars, and add descriptions for modules 2021-10-16 12:41:10 -04:00
sammyette 1689d80721
feat: add docgen program, document almost all hilbish functions 2021-10-16 10:21:05 -04:00
sammyette 2ef2998279
fix: make timeout() blocking
may or may not be temporary
2021-09-18 22:48:28 -04:00
sammyette 26eee56c8b
feat: add commander.deregister function
simply deregisters/removes a lua defined command
2021-06-12 10:30:47 -04:00
sammyette f594d48790
fix: print error in interval func instead of panic 2021-06-11 23:54:18 -04:00
sammyette efc956a04c
fix: cleanup, store lua commands in map 2021-06-11 21:37:52 -04:00
sammyette 1e1662a6b2
feat: add interval function
interval(func, time)
works exactly the same as `setInterval` in javascript
runs `func` in an interval of `time` milliseconds
2021-06-11 21:21:41 -04:00
sammyette fe3df8c66e
feat: add timeout function
timeout(func, time)
works exactly like the `setTimeout` function in javascript
runs `func` after a period of `time` in milliseconds
2021-06-11 19:40:08 -04:00
sammyette edcc1b39f0
docs: add todo to lua.go 2021-06-09 20:43:01 -04:00
sammyette e37abcb08b
feat: define preload file in var
same as before, enables changing at compile time
2021-06-08 21:00:31 -04:00
sammyette 86dbb97cae
feat: define lua require paths in var
this makes it able to be changed compile time, which should help
in support for systems that dont follow fhs (damn nix)
and windows as well, but that'll be first class
2021-06-08 19:16:37 -04:00
sammyette 2a084fc03e
fix: make minimal config work with new version 2021-06-08 17:40:52 -04:00
sammyette ef45bafb54
fix: remove extra newline in error message 2021-06-08 17:24:54 -04:00
sammyette c1b9e5bc81
feat: add goro function
this function will run another function, but in a goroutine
!!
2021-05-25 20:44:03 -04:00
sammyette ef1ced4a04
refactor: make `hilbish` an already required module and add run function
idk how to explain this man
in code `hilbish` is now a module, which can also be required like
others. but it is already a global export as the variable of the same
name.
also
2021-05-16 17:13:28 -04:00
sammyette 88e117974e
chore: add todo comment for exec function 2021-05-16 16:17:55 -04:00
sammyette e29ba6a0d5
feat!: move username and version access to hilbish table
instead of having ugly `_user` and `_ver` variables,
`hilbish.user` and `hilbish.version` is used
2021-05-16 15:53:21 -04:00
sammy 0afca3d4f6
fix: dont append to path if dir is already there (resolves #52) 2021-05-15 22:23:21 -04:00
sammy 630d7dde9c
fix: prefer to run preload in cwd first 2021-05-11 18:55:05 -04:00
sammy 8f94990fc3
feat: add exec function
this is basically the `exec` "command" in sh
itll replace hilbish with whatever provided
simple usage:
exec 'sleep 100'
2021-05-08 11:50:09 -04:00
sammy 6e3f1e1b97
fix: add additional lua import path 2021-05-01 15:56:08 -04:00
sammy c43aab6a60
fix: make appendPath expand ~ to home dir 2021-05-01 15:35:43 -04:00
sammy a75100d15d
feat: add _user variable
this will probably change to a better global var in the
future, but it's `_user` now.
this provides a simple, guaranteed way of getting the
current user's name
$USER (in?)correctly shows the previous user when
`su` is used, _user will always be root in this case
2021-05-01 14:51:57 -04:00