Comments (9)
All just
expressions return a value, so we could only make this work if the if
branch diverges, e.g., does not return. So it could work for the error
case, but couldn't work in general. One possibility is to add an error_if(CONDITION, MESSAGE)
function.
from just.
Awesome, thank you!
from just.
One reason I'm not totally sold is that it seems like this could be done in shell.
Personally I want to write literally the minimum amount of shell ever possible. I realize part of that is counter to using just at all, but certainly I try to minimize any shell I write regardless.
Here are two places (the other a few lines down, where the condition is inverted) where I basically use the workaround discussed here -- I do have to say I personally find it surprising to be missing but I'm simply someone who's used / evaluated just
once (to write that justfile) -- and certainly ensure(...)
would be better than nothing so as a user I'd certainly prefer that if that's what you'd be comfortable with!
from just.
Why is that? I too was tempted into simply using else { "" }
to workaround this (before finding this issue). Surely even if the if doesn't diverge it could simply default to an else branch with some default value like ""
as its "return value", which is highly likely to be ignored?
from just.
I'm all for an error_if
function. I'm currently using else {""}
as a workaround but it's not very clean. I'm migrating most of my stuff over from make
and enjoy the cleaner and simpler syntax of just
so this solution seems like a good fit.
from just.
I'm still not totally sold, but if we did implement this, how about a function called ensure(CONDITION, MESSAGE)
, which takes a boolean CONDITION, and errors out with MESSAGE if it's false?
One reason I'm not totally sold is that it seems like this could be done in shell.
For example, for the use-case in the issue, you could do:
foo:
test -e {{("Formula" / package + ".rb"}} || exit "no formula for package {{package}}"
from just.
+1 - I'm using just
's functions because I want to avoid finicky shell scripts.
I think ensure
would work here! sort of like an assert
in other languages
from just.
assert
is probably a better name, since it's more familiar. Yah, agree about shell being tricky. And even if the just
syntax is slightly worse, being statically typed is a big advantage.
Okay, I think I'm sold. If anyone wants to take a crack at this, it would make a good first PR!
from just.
Nice, appreciate it!
I won't have time to look at this for a few months (and I have to brush up on my Rust). But if it's still available then, I'll take a crack at it!
from just.
Related Issues (20)
- Add a --list-paths to output list of recipe paths only HOT 4
- Submodules should be groupable (or have their own group) HOT 6
- Passing arguments for python different than node? I needed to add -- HOT 4
- Parser support for attributes with multiple arguments HOT 1
- Module improvement tracking issue HOT 2
- No .ps1 extension added when pwsh.exe is started via third-party tool HOT 6
- Possible to get autocompletions working in Warp?
- dotenv-path unexpectedly loads .env from parent directory HOT 1
- [Feature Request] `just global init-rust`; an ability to define global `Justfile` that will run commands anywhere on your machine. HOT 2
- Stabilize `[script(…)]` attribute HOT 6
- Comments Ending in Backslash also Comment following Command HOT 2
- Add ability to add new dependency without clobbering rule HOT 5
- Transitive options when using modules
- `just --list` should highlight parts of the comment surrounded by backticks (`) HOT 1
- Set default working dir for the whole justfile HOT 1
- Multiple optional parameters, specifying only one HOT 1
- Command line flag to exit without error if recipe not found HOT 1
- Add missing or (if it's there) improve module information in documentation HOT 1
- Mark recipes as exportable/non-exportable HOT 1
- Warning when compiling with Rust 1.80 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from just.