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]
Sgeo has joined #elliottcable