Replies: 4 comments 8 replies
|
A workaround for annoying |
|
@antongolub By moving it to a discussion, are you saying that this is a bad idea and that you won't accept PRs to add this functionality? The original intent of the issue was a code feature request, not to ask a question in a discussion format. |
|
I have been writing some
s`foo`Is equivalent to: await $`foo`
a`foo`Is equivalent to: $`foo`
Is equivalent to: (async $`foo`).toString()The combination of these 3 things would allow us to create extremely concise scripts. |
|
Another thing: #91 is spot on, having to do |

Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Improvement 1 - Automatic Await
I predict that most uses of
zxin the wild are people rewriting their Bash scripts into JavaScript/TypeScript.For example, I imagine a common script might look something like this:
It strikes me that this could be simplified.
zxcould automaticallyawaitevery$invocation. If it did that, then the code could be simplified to this:Much better! However, I presume the downside to this approach is that we lose the ability to do background tasks. For example, the previous code might want to be written like:
So that's a problem. One idea is to parse the command for the
&symbol, which would disable the awaiting behavior, like this:I chose the
&symbol because that is the background execution operator in bash. In this setup, we get the best of both worlds.Of course, this would be a breaking change and might disrupt the ecosystem. So, another idea is to add an option:
Yet another idea/approach would be to use a separate symbol other than a dollar sign as an indication of "run a command like $, but always await it automatically". For example:
(Underscore and dollar sign are the only symbols that are valid as function names, so here I'll somewhat-arbitrarily choose underscore since dollar sign is taken.)
Improvement 2 - Automatic Output
It looks like this is a common pattern:
It strikes me that this could be abstracted further. Similar to my previous suggestion, it could be possible to add a symbol that is similar to
$, but combines the await and toString parts. As an example, I'll arbitrarily choose theoletter, which is short for "output":Another option is to use an underscore instead of
o. Regardless, this would be a nice abstraction.All reactions