What is lets ?
Introduction
Lets is a task runner.
You can think of it as a tool with a config where you can write tasks.
The task is usually your set of cli commands which you want to group together and gave it a name.
For example, if you want to run tests in your project you may need to run next commands:
# spinup a database for tests
docker-compose up postgres
# apply database migrations
docker-compose run --rm sql alembic upgrdade head
# run some tets
docker-compose run --rm app pytest -x "test_login"
This all can be represented in one task - for example lets test
command:
test:
description: Run integration tests
cmd: |
docker-compose up postgres
docker-compose run --rm sql alembic upgrdade head
docker-compose run --rm app pytest -x "test_login"
And execute - lets test. Now everyone in you team knows how to run tests.
Why yet another task runner ?
So is there are any of such tools out there ?
Well, sure there are some.
Many developers know such a tool called make.
So why not make ?
make is more like a build tool and was not intended to be used as a task runner (but usually used because of the lack of alternatives or because it is install on basicaly every developer's machine).
make has some sort of things which are bad/hard/no convinient for developers which use task runners on a daily basis.
Lets is a brand new task runner with a task-centric philosophy and created specifically to meet developers needs.
Features
yaml config- human-readable, recognizable and convenient format for such configs (also used by kubernetes, ansible, and many others)arguments parsing- using http://docopt.orgglobal and per/command envglobal and per/command dynamic env- can be computed at runtimechecksum- a feature which helps to track file changeswritten in Go- which means it is easy to read, write and test as well as contributing to project
To see all features, check out config documentation