lets icon indicating copy to clipboard operation
lets copied to clipboard

Lets vs. Just / Task / Taskctl / Tusk

Open yonas opened this issue 10 months ago • 1 comments

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

yonas avatar Aug 16 '23 16:08 yonas

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

kindermax avatar Sep 13 '23 10:09 kindermax