Coder Social home page Coder Social logo

Comments (9)

casey avatar casey commented on July 29, 2024 2

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.

xavdid avatar xavdid commented on July 29, 2024 2

Awesome, thank you!

from just.

Julian avatar Julian commented on July 29, 2024 1

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.

Julian avatar Julian commented on July 29, 2024

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.

mike-lloyd03 avatar mike-lloyd03 commented on July 29, 2024

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.

casey avatar casey commented on July 29, 2024

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.

xavdid avatar xavdid commented on July 29, 2024

+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.

casey avatar casey commented on July 29, 2024

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.

xavdid avatar xavdid commented on July 29, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.