e0e87235
Gregory Mullen
# hsh
eeee6802
Gregory Mullen
~~Don't use this, it's not ready!~~
436112b8
Gregory Mullen
You probably don't want to use this yet, but it's my current default shell (what
95153657
micwoj92
could go wrong) so it might work for you if you're brave enough.
436112b8
Gregory Mullen
c2722782
Gregory Mullen
Current technological breakthrough => "counting"
883e9368
Gregory Mullen
bc569a34
Gregory Mullen
Hash is a slightly different take on your shell. It's closer to a user agent
b55c4560
Gregory Mullen
than you standard POSIX shell. It's less of an instance, of a shell, and much
b55c4560
Gregory Mullen
closer to a system shell. E.g. when you add an alias in one instance, it becomes
b55c4560
Gregory Mullen
available on all instances as well. Changing a setting in one, updates it across
b55c4560
Gregory Mullen
all[^ephem].
bc569a34
Gregory Mullen
bc569a34
Gregory Mullen
[^ephem]: There ~~is~~ will eventually be an ephemeral mode to allow any instance
b55c4560
Gregory Mullen
to have it's own settings without affecting your other shells on the system.
bc569a34
Gregory Mullen
03fcad2b
Gregory Mullen
## Goals
b44152da
Gregory Mullen
- Support *modern* pttys
b44152da
Gregory Mullen
- Composable vs decomposable mode
d82ba323
Gregory Mullen
- Less than 1h to migrate from any $SHELL (still considering reverts as well)
d82ba323
Gregory Mullen
- cd should not exec any payloads
03fcad2b
Gregory Mullen
03fcad2b
Gregory Mullen
## [De]composable mode
03fcad2b
Gregory Mullen
A default, unconfigured install of hsh should enable all features and
03fcad2b
Gregory Mullen
functionality. Running hsh non-interactive, or [other] should disable all
c62c7af9
Gregory Mullen
helful, or context aware features unless explicitly enabled.
03fcad2b
Gregory Mullen
95153657
micwoj92
## Requirements
95153657
micwoj92
Compilation requires zig 0.12.0 or greater.
95153657
micwoj92
e0e87235
Gregory Mullen
## Install
38846e68
Gregory Mullen
`git clone https://srctree.gr.ht/repo/hsh`<br>
805ca956
Gregory Mullen
`zig build`<br>
805ca956
Gregory Mullen
`./zig-out/bin/hsh`
805ca956
Gregory Mullen
436112b8
Gregory Mullen
or `zig build -p /usr/` if you're brave enough to install into /usr/bin/hsh
436112b8
Gregory Mullen
95153657
micwoj92
Tests can be run with `zig build test`
95153657
micwoj92
e0e87235
Gregory Mullen
## TODO
b44152da
Gregory Mullen
- [x] basic parsing
66510af3
Gregory Mullen
- [x] .hshrc support
b44152da
Gregory Mullen
- [x] exec
ab795beb
Gregory Mullen
- [x] friendly exec
ab795beb
Gregory Mullen
- [x] && success
4e046ca1
Gregory Mullen
- [x] || failures
4e046ca1
Gregory Mullen
- [x] ; cmd
b44152da
Gregory Mullen
- [ ] IoRedir
b44152da
Gregory Mullen
- [x] | func
ab795beb
Gregory Mullen
- [x] > std clobber
471e0267
Gregory Mullen
- [x] >> std append
b44152da
Gregory Mullen
- [ ] 2> err clobber
b44152da
Gregory Mullen
- [ ] 2>&1 err to out
84fc4ed2
Gregory Mullen
- [x] < in
b44152da
Gregory Mullen
- [ ] << here-doc;
b44152da
Gregory Mullen
- [ ] tab complete
b44152da
Gregory Mullen
- [x] cwd
2f8e3417
Gregory Mullen
- [x] path
2f8e3417
Gregory Mullen
- [x] subdirs
2f8e3417
Gregory Mullen
- [x] basic fuzzy search
2f8e3417
Gregory Mullen
- [ ] narrow fuzzy search
c2722782
Gregory Mullen
- [x] ~, and glob
2f8e3417
Gregory Mullen
- [ ] the rest?
b44152da
Gregory Mullen
- [x] history
b44152da
Gregory Mullen
- [ ] advanced history
b44152da
Gregory Mullen
- [ ] sane error handling
b44152da
Gregory Mullen
- [ ] complex parsing
b44152da
Gregory Mullen
- [ ] context aware hints
d72cd4f9
Gregory Mullen
- [ ] HSH builtins
1a79bc30
Gregory Mullen
- [ ] builtin
d72cd4f9
Gregory Mullen
- [ ] pipeline
d72cd4f9
Gregory Mullen
- [ ] help
d72cd4f9
Gregory Mullen
- [ ] show
d72cd4f9
Gregory Mullen
- [ ] state
d72cd4f9
Gregory Mullen
- [ ] status
8c948728
Gregory Mullen
- [ ] POSIX builtins
0e1a36d6
Gregory Mullen
- [x] alias
b44152da
Gregory Mullen
- [ ] bg
b44152da
Gregory Mullen
- [x] cd
963876f1
Gregory Mullen
- [ ] popd
b44152da
Gregory Mullen
- [ ] colon
7f65512a
Gregory Mullen
- [ ] date
7e0c9102
Gregory Mullen
- [x] die
b44152da
Gregory Mullen
- [ ] disown
b44152da
Gregory Mullen
- [ ] dot
963876f1
Gregory Mullen
- [x] echo
b44152da
Gregory Mullen
- [ ] eval
b44152da
Gregory Mullen
- [ ] exec
c2722782
Gregory Mullen
- [x] exit
b44152da
Gregory Mullen
- [ ] export
b44152da
Gregory Mullen
- [ ] fg
2f8e3417
Gregory Mullen
- [x] jobs
b44152da
Gregory Mullen
- [ ] kill?
b44152da
Gregory Mullen
- [ ] pwd
9b89c050
Gregory Mullen
- [ ] read
b44152da
Gregory Mullen
- [ ] set
b44152da
Gregory Mullen
- [ ] shift
b44152da
Gregory Mullen
- [ ] source
b44152da
Gregory Mullen
- [ ] unalias
b44152da
Gregory Mullen
- [ ] unset
b44152da
Gregory Mullen
- [ ] wait
b44152da
Gregory Mullen
- [ ] the rest?
1e1230d3
Gregory Mullen
- [x] globs
c93ad555
Gregory Mullen
- [x] simple globs
c93ad555
Gregory Mullen
- [ ] recursive globs
c93ad555
Gregory Mullen
- [ ] enumerated globs (name.{ext,exe,md,txt})
b44152da
Gregory Mullen
- [ ] script support?
b44152da
Gregory Mullen
- [ ] logic (if, else, elif, case)
c2722782
Gregory Mullen
- [x] if
c2722782
Gregory Mullen
- [x] elif
c2722782
Gregory Mullen
- [x] else
c2722782
Gregory Mullen
- [ ] while
c2722782
Gregory Mullen
- [ ] for
c2722782
Gregory Mullen
- [ ] case
b44152da
Gregory Mullen
- [ ] loops (for, while)
b44152da
Gregory Mullen
- [ ] env
b44152da
Gregory Mullen
- [ ] real path support
b44152da
Gregory Mullen
- [ ] debugging configuration
e0e87235
Gregory Mullen
4e046ca1
Gregory Mullen
## notes
4e046ca1
Gregory Mullen
(`zig build run` does some magic that causes hsh to segv)
d941dbcc
Gregory Mullen
d941dbcc
Gregory Mullen
## Contributors
d941dbcc
Gregory Mullen
@SteampunkEngine
d941dbcc
Gregory Mullen