Changelog
Unreleased
0.0.57
[Dependency]update go to1.24[Added]support custom top-level keywords that start withx-[Added]check for invalid top-level keywords during config parsing[Added]support YAML aliases inenv- env will be merged aliases mapping
0.0.56
This tag is not released due to build issues
0.0.55
[Added]lets selfcommand that is ment to be a new home for all lets own commands such ascompletions(soon) orlsp[Added]lets self lspcommand that starts built-inlspserver with go to definition support and completions- [
Development] Sincelspimplementation useshttps://tree-sitter.github.io(C library with go bindings) as a internal parserletsnow build withCGO_ENABLED=1. If you are building on local machine, you do not have to specifyCGO_ENABLEDenv variable. But you may have to install some build system dependencies in case compilatino fails. [CI]reworked release pipeline now supports go cross compilation[Improvment]split commands in help message intoCommandsandInternal commands[Dependency]update go to1.23[Dependency]update goreleaser to1.63.x[Dependency]update golangci-lint to2.x(also applied some lint fixes across codebase)
0.0.54
[Fixed]lets --initnow properly createslets.yaml. Issue #263[Dependency]update go to1.22[Fixed]ensureinitscript does not get called twice. Issue #256[Fixed]do not fail ifshin env is empty. Issue #235[Fixed]supportarm64inlets --upgrade. Issue #254
0.0.53
[Fixed]changeSHELLenv toLETS_SHELLbecause setting system variableSHELLto justbashwithout full path to binary cases and error in some cases.
0.0.52
[Dependency]update and pin goreleaser
0.0.51
[Fixed]-Eflag now overrides env not only when env variable already declared in command'senv, but also it overrides env variables that declared in globalenv. Also it sets env variable even if no env variable was declared either in global or command'senv.
0.0.50
[Dependency]upgrade cobra to 1.6.0[Dependency]upgrade logrus to 1.9.0[Fixed]Removed builtin--helpflag for subcommands. Now using--helpwill pass this flag to underlyingcmdscript.[Added]Add--debug(-d) debug flag. It works same asLETS_DEBUG=1env variable. It can be specified as-dd(orLETS_DEBUG=2). Lets then prints more verbose logs. Also debug logs are nicer now.[Added]Add--config-cflag. It works same asLETS_CONFIG=<path to lets file>env variable.[Added]LETS_CONFIGenv variable now present at command runtime, and contains lets config filename. Default islets.yaml.[Added]LETS_CONFIG_DIRenv variable now present at command runtime, and contains absolute path to dir where lets config found.[Added]LETS_COMMAND_WORKDIRenv variable now present at command runtime, and contains absolute path to dir wherecommand.work_dirpoints.[Added]Addinitdirective to config. It is a script that will be executed only once before any other commands. It differs frombeforein a way thatbeforeis a script that is prepended to each command's script and thus will be execured every time a command executes. See config reference for init[Refactoring]Config parsing is reimplemented usingUnmarhallYAML. This ends up in reduced size and complexity of parsing code.[Refactoring]Commandnow is clonable and this opened a possibility to reimplementref,dependsas map and--no-depends- now we clone a command and modify a brand new struct instead of mutating the same command (which was not safe).[Refactoring]Command.Cmdscript was replaced withCmdsstruct which represents a list ofCmd. This allowed generalizing so-called cmd-as-map into a list of commands that will be executed in parallel (seeExecutor.executeParallel).[Refactoring]Error reporting has changed in some places and if one is depending on particular error messages it will probably reak.[Refactoring]SimplifiedExecutorby extracting commands filtering by--onlyand--excludeflags intosubcommand.go.[Added]Command short syntax. See config reference for short syntax. Example:Before:
commands:
hello:
cmd: echo HelloAfter:
commands:
hello: echo Hello[Added]If command starts with_it is considered hidden and will not be printed in help message unless--allroot flag is provided.[Changed]Improved rendering ofdescriptiondirective. When used inlets helpusage message the text will be stripped to 120 chars and only text up to first\nwill be taken. Thus help message will be rendered cosnsistently in width. It is still possible to have a lot of text indescriptionand all this text will be used inlets help [command]help message. See config reference for how help messages works
0.0.49
[Added]remote mixinsexperimentalsupport. See config for more details.
0.0.48
[Added]--no-dependsglobal option. Lets will skipdependsfor running commandlets --no-depends run
0.0.47
[Added]completion for command options[Dependency]use fork of docopt.go with extended options parser
0.0.45
[Fixed]Breaking changeFix duplicate files for checksum. This will change checksum output if the same file has been read multiple times.[Fixed]Fix parsing for ref args when declared as string.[Added]refargscan be a list of string
0.0.44
[Fixed]Run ref declared independsdirective.
0.0.43
[Noop]Same as 0.0.42, deployed by accident.
0.0.42
[Fixed]Fixed publish toaurrepository.
0.0.41
[Fixed]Tried to fixe publish toaurrepository.
0.0.40
[Added]Allow override command arguments and env when using command independsSee example in config docs
[Added]Validate if commands declared independsactually exist.[Refactoring]Refactoredexecutorpackage, implementedExecutorstruct.[Added]SupportNO_COLORenv variable to disable colored output. See https://no-color.org/[Added]LETS_COMMAND_ARGS- will contain command's positional args. See config.Also, special bash env variables such as
"$@"and"$1"etc. now available insidecmdscript and work as expected.[Added]work_dirdirective for command. See config[Added]shelldirective for command. See config[Added]--initflag. Runlets --initto create newlets.yamlwith example command[Refactoring]updatedbatstest framework and adjusted all bats tests[Added]refdirective tocommand. Allows to declare existing command with predefined args See config.[Added]shandchecksumexecution modes for global levelenvand command levelenvSee config.eval_envis deprecated now, sinceenvwithshexecution mode does exactly the same
0.0.33
[Added]Allow templating in commandoptionsdirective docs
0.0.32
[Fixed]Publish lets to homebrew
0.0.30
[Added]Buildletsforarm64 (M1)arch[Deleted]Drop386arch builds[Added]Publishletsto homebrew[Added]--upgradeflag to make self-upgrades
0.0.29
[Added]afterdirective to command. It allows to run some script after maincmdcommands:
run:
cmd: docker-compose up redis
after: docker-compose stop redis[Added]beforeglobal directive to config. It allows to run some script before each maincmdbefore: |
function @docker-compose() {
docker-compose --log-level ERROR $@
}
commands:
run:
cmd: @docker-compose up redis[Added]ignored minixs It allows to include mixin only if it exists - otherwise lets will ignore it. Useful for git-ignored files.Just add
-prefix to mixin filenamemixins:
- -my.yaml
commands:
run:
cmd: docker-compose up redis
0.0.28
[Fixed]Added environment variable value coercion.commands:
run:
env:
VERBOSE: 1
cmd: docker-compose upBefore 0.0.28 release this config vas invalid because
1was not coerced to string"1". Now it works as expected.
0.0.27
[Added]-E(--env) command-line flag. It allows to set(override) environment variables for a running command. Example:# lets.yaml
...
commands:
greet:
env:
NAME: Morty
cmd: echo "Hello ${NAME}"
...
lets -E NAME=Rick greetChanged behavior of
persist_checksumat first run. Now, if there was no checksum and we just calculated a new checksum, that means checksum has changed, henceLETS_CHECKSUM_CHANGEDwill betrue.