Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lets vs. Just / Task / Taskctl / Tusk #255

Open
yonas opened this issue Aug 16, 2023 · 1 comment
Open

Lets vs. Just / Task / Taskctl / Tusk #255

yonas opened this issue Aug 16, 2023 · 1 comment

Comments

@yonas
Copy link

yonas commented Aug 16, 2023

Why should we use Lets instead of just, task, taskctl, or tusk?

@yonas yonas changed the title Lets vs Just Lets vs Just / Task / Tusk Aug 16, 2023
@yonas yonas changed the title Lets vs Just / Task / Tusk Lets vs. Just / Task / Tusk Aug 16, 2023
@yonas yonas changed the title Lets vs. Just / Task / Tusk Lets vs. Just / Task / Taskctl / Tusk Aug 16, 2023
@kindermax
Copy link
Collaborator

kindermax commented Sep 13, 2023

Hi, thanks for the question. In general, it always depends on you use cases.

Lets has its specifics and design choices that may or may not be suitable for some users.

I'm gonna try to do a short comparison of all tools with lets from my own perspective, and let you decide which tool is better for your job:

Lets vs just

just has its own uniq syntax and for me it looks and works like make but at the same time provides better defaults, and fixes some issues and inconveniences that make has. I think if you want something that looks and feels like better make then you should choose just.
lets has many similarities with just in features, for example env vars, shell redefinition, commands, and depencencies between commands. lets uses yaml for configuration so it is less expressive than justfile because it has all limitations that yaml has.

lets vs task

First of all task and lets are very similar. The yaml configs, features, both written in go. task has more features for sure. Some features are very similar. So in the case lets vs task in more cases the tools are interchangeable, so my advice is to choose based on the features you need.

lets vs taskctl

taskctl is a very interesting project. Besides the fact that the developers are Ukrainians same as me which I'm very proud of, the project has its interesting ideas. It has yaml configuration as well as lets, and some features are similar to lets, but is has

  • pipilines which are in some sense alternative to lets depends directive
  • taskctl can be embeded in any go app
  • contexts

Personally, I think lets and taskctl are created to resolve similar problems but design choices are different. It is hard for me to say which tool is better because I've never used taskctl.

lets vs tusk

tusk is similar to lets- it uses yaml, allows to describe and run tasks, has command's options syntax.
I may be wrong but it seems that tusk has a little less features than lets. Also the design choices made in tusk is much different in contrast with task or taskctl

Resume

So basically every tool is a task runner and can be used to solve similar problems.

They are all very similar in syntax (yaml), only just has its own syntax.

The have both similar and different features and it is up to user to decide which features are more useful

As for lets, it has some "uniq" features on some sense:

  • options that are valid docopt syntax and parsed info environment variables
  • checksums to verify the task result has changed
  • remote mixins used to include lets files from remote places (by url)
  • refs to reuse commands with predefined args and env
  • depends to build a DAGS of commands
  • global init and before directives which are executed at all startup and before each command respectively

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants