ec changed the topic of #elliottcable to: a π―ππ ππ π―πππππππππ π―ππππππ slash sΝΜuΝΝpΝΝeΜΜΊrΜΌΜ¦iΜΌΜoΜΜ¬rΜΜ cΜΝα»₯Μ§ΝαΈ·Μ‘ΝΕ£ΝΜ || #ELLIOTTCABLE is not about ELLIOTTCABLE
<ec>
"so rule number one, don't fucking use posix" whaaaaat
<ljharb>
ec: nvm is written in posix
<ljharb>
so i don't even have arrays
<ljharb>
i'm just saying that if you can avoid that level of primitive constraints, your life will be happier :-)
<ec>
oh, thought you meant POSIX for the config-file
<ec>
bah, who ever needed more than a single array, anyway? :P
<ec>
I've always avoided bashisms; but I'm also not writing large software intended to be stable in sh, soooooo Β―\_(γ)_/Β―
<ljharb>
lol
<ljharb>
nvm supports sh, bash, zsh, dash, and ksh
<ljharb>
it's nuts
<jfhbrook>
yeah so my strategy was going to be to make the bulk of the project use typescript in a little node env with a thin wrapper that's posix if it's easy bash if it's hard π₯ β οΈ π₯ which fiddles with the sourcing parts
englishm has quit [Excess Flood]
englishm has joined #elliottcable
<ljharb>
jfhbrook: the sourcing parts tho, you have to be like nvm to be able to modify the current shell
<ljharb>
jfhbrook: or, you have to put something in the PATH and then use shims, like rbenv and friends
<ljharb>
jfhbrook: so, you could build shims with node, even, and then "install the tool" is just "put the shim bins in a dir, and put the dir in the PATH"
Rurik has joined #elliottcable
Rurik has quit [Quit: Rurik]
Rurik has joined #elliottcable
Rurik has quit [Quit: Rurik]
Rurik has joined #elliottcable
Rurik has quit [Quit: Rurik]
Rurik has joined #elliottcable
Rurik has quit [Quit: Rurik]
<jfhbrook>
basically yeah - conda runs itself to generate bash and evals it when needed afaict
<jfhbrook>
like you eval script output to generate shin bash functions and then those can eval more output by the tool when needed
Rurik has joined #elliottcable
Rurik has quit [Quit: Rurik]
Sgeo has quit [Read error: Connection reset by peer]
Sgeo has joined #elliottcable
<ec>
be a dear and try to make sure that the βevalβ reduces to sourcing a single file with some variable declarations
<ec>
path-manipulation and such
<ec>
so the eval can be avoided by those seeking shell-startup times, and/or the values can be cached by shell-startup-managers
<jfhbrook>
yeah, the sourcing is really like a handful of wrapper bash functions that only do PATH manipulation
<jfhbrook>
and the heavy lifting is all javascript, and if you don't use the wrapper functions the core pieces still work - the missing part is the path activation/deactivation
<ljharb>
i could extract the bulk of nvm into another binary, for example
<ljharb>
but some chunk of it would always need to be in .sh
Sgeo has quit [Read error: Connection reset by peer]