All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased - ReleaseDate
0.1.29 - 2024-12-20
- feat(cli): implement dynamic shell completions (autocomplete builders, apps, modules)
- fix(cli): don't treat comma in '--define' as separator (#590)
- build(deps): bump clap_complete from 4.5.38 to 4.5.40
- build(deps): bump semver from 1.0.23 to 1.0.24
- build(deps): bump thiserror from 2.0.6 to 2.0.8
0.1.28 - 2024-12-12
- allow defining tasks in modules
- implemented
task::required_modules
- always update git-cache of a branch or tag
imports
source - track
imports:
sources, trigger new download if source has changed
0.1.27 - 2024-12-06
- fix cache laze version check again, go through bytes
0.1.26 - 2024-12-06
- fix sorting of ninja build statements, preventing ninja errors
- fix
$relroot
potentially having one..
too much (#571) - fix
$root
to usually contain.
, matching documentation - fix cache laze version check (there was a potential crash after a laze update)
- fix buildfile caching (was broken by task
export
)
- build(deps): bump clap from 4.5.21 to 4.5.22
- build(deps): bump anyhow from 1.0.93 to 1.0.94
- build(deps): bump indexmap from 2.6.0 to 2.7.0
- build(deps): bump pathdiff from 0.2.2 to 0.2.3
0.1.25 - 2024-11-25
- implement continue-on-error (add
-k
/--keep-going
) - implement executing multiple tasks (add
-m
/--multiple-tasks
) - allow contexts in
conflicts
/disables
(prependcontext::
)
- disallow module names starting with
context::
- build(deps): bump anyhow from 1.0.88 to 1.0.93
- build(deps): bump clap from 4.5.17 to 4.5.21
- build(deps): bump clap_complete from 4.5.26 to 4.5.38
- build(deps): bump clap_mangen from 0.2.23 to 0.2.24
- build(deps): bump derive_builder from 0.20.1 to 0.20.2
- build(deps): bump indexmap from 2.5.0 to 2.6.0
- build(deps): bump pathdiff from 0.2.1 to 0.2.2
- build(deps): bump serde from 1.0.210 to 1.0.215
- build(deps): bump serde_json from 1.0.128 to 1.0.133
- build(deps): bump uuid from 1.10.0 to 1.11.0
0.1.24 - 2024-09-13
- wire up
imports
from branches or tags, and default branch - implement
imports
from local paths
0.1.23 - 2024-09-07
0.1.22 - 2024-09-07
- integrate
git-cache-rs
- introduce
var_options::from
- Add
context::buildable
, allowing a context to become a builder.
0.1.21 - 2024-02-13
- Allow overriding the
dldir
for (download
,cmd
) imports
- Make yaml parsing strict (disallow unexpected fields)
- Introduce "meta" field on contexts, modules, rules, tasks and at file level. This field will just be ignored, allowing for extra information in laze build files now that the yaml parsing is strict.
- Strip binary by default
- Fix CHANGELOG.md links, update
cargo release
pre-release-replacements
- Bump clap from 4.4.13 to 4.4.18
- Bump clap_complete from 4.4.6 to 4.4.10
- Bump clap_mangen from 0.2.16 to 0.2.19
- Bump container.yml versions
- Bump derive_builder from 0.12.0 to 0.13.0
- Bump indexmap from 2.1.0 to 2.2.2
- Bump itertools from 0.12.0 to 0.12.1
- Bump rayon from 1.8.0 to 1.8.1
- Bump serde from 1.0.194 to 1.0.196
- Bump serde_json from 1.0.111 to 1.0.113
- Bump serde_yaml from 0.9.30 to 0.9.31
- Bump treestate from 0.1.0 to 0.1.1
- Bump uuid from 1.6.1 to 1.7.0
- import: Factor out download.rs
- nested_env: Improve error message
0.1.20 - 2024-01-08
POST_LINK
rule: added a way to post process app.elf
files
laze new
now drops the.in
extension from rendered templates
- bump clap from 4.4.12 to 4.4.13
- refactored
nested_env::Env
to be a distinct struct. This brought a nice performance gain (+~5% for RIOT use case).
0.1.19 - 2024-01-05
- implement
laze build --info-export <file.json> ...
, exporting some insights (modules & dependencies) - implement
laze new
, a way to generate laze projects from templates
- cli: make "--verbose" a global flag
${relpath}
now contains '.' if otherwise emtpy in more cases- correctly find applications in local mode when in project root
- use buffered IO for cache. Speeds up cache read/write dramatically.
- if the srcdir of a module is equal or a descendent of a dependency, create a ninja phony rule. Prevents ninja from complaining about non-existant files.
- set up continuous benchmarking using bencher
- prevent
fixup!
commits from getting merged - build(deps): bump anyhow from 1.0.75 to 1.0.79
- build(deps): bump clap from 4.4.11 to 4.4.12
- build(deps): bump clap_complete from 4.4.4 to 4.4.6
- build(deps): bump clap_mangen from 0.2.15 to 0.2.16
- build(deps): bump rust-embed from 8.1.0 to 8.2.0
- build(deps): bump semver from 1.0.20 to 1.0.21
- build(deps): bump serde from 1.0.193 to 1.0.194
- build(deps): bump serde_yaml from 0.9.27 to 0.9.30
0.1.18 - 2023-12-18
-
add file-level
laze_required_version
If specified, laze checks if its own version is at leastlaze_required_version
. -
add
task::exports
This allows laze variables to be exported to the envirenment of tasks:context: - name: foo env: some_variable: some_value tasks: some_task: exports: - some_variable cmd: # some_varialble=some_value is will be set in the _shell environment_ - some_command
-
extended test suite, now allows to test for exit codes and stdout/stderr patterns. Mostly, this allows to test errors.
-
dependencies:
- bump clap from 4.4.6 to 4.4.11
- bump clap_complete from 4.4.3 to 4.4.4
- bump clap_mangen from 0.2.14 to 0.2.15
- bump evalexpr from 11.1.0 to 11.3.0
- bump indexmap from 2.0.2 to 2.1.0
- bump itertools from 0.11.0 to 0.12.0
- bump rust-embed from 8.0.0 to 8.1.0
- bump serde from 1.0.188 to 1.0.193
- bump serde_yaml from 0.9.25 to 0.9.27
- bump url from 2.4.1 to 2.5.0
- bump uuid from 1.4.1 to 1.6.1
0.1.17 - 2023-10-06
- fixed expression evaluation for tasks
- more CHANGELOG.md automation
-
BREAKING: allow basic expressions in variables and task commands This is using the
evalexpr
crate. Expressions are used make-style by wrapping them in$()
, e.g.,$(1+2)
.This requires previous
$(echo foo)
meant to be subshells to be escaped:$$(echo foo)
. -
implement task
required_vars
This allows task availability depend on the existence of global variables. -
cli: drop "tasks" cli subcommand, add tasks to "build" Instead of
laze task ... <task-name> [<task args>]
, just dolaze build ... <task-name> [<task args>]
. -
cli: improve "build" subcommand help message
- global build deps are now applied to the LINK step. That fixes build targets
that have no created objects where the dependencies can be added to, e.g.,
a module with 'download:' but without
sources:
/ objects.
- fix release / rebase mishap
-
disallow space seperated lists for apps, builders, define, selects, disables Lists can still be specified as comma-seperated (e.g.,
--apps foo,bar
), or by doing e.g.,--apps foo --apps bar
. -
MSRV bumped to 1.64
- modules: add
provides_unique
as shortcut to both provide and conflict - download and patch rules are now module-env expanded
- fix: fix not selected provided modules leaking exports
- bump mimalloc from 0.1.32 to 0.1.34
- bump clap from 4.0.32 to 4.1.1
- bump clap_mangen from 0.2.6 to 0.2.7
- modules: add "is_global_build_dep"
- exports from "provided" dependencies are now properly imported
- bump anyhow from 1.0.66 to 1.0.68
- bump clap from 4.0.29 to 4.0.32
- bump clap_complete from 4.0.6 to 4.0.7
- bump clap_mangen from 0.2.5 to 0.2.6
- bump serde from 1.0.150 to 1.0.152
- bump serde_yaml from 0.9.14 to 0.9.16
- cli: implement partitioning
- cli: experimental: add (hidden) commands to create shell completions and man pages
- cli: fix
-C <dir>
- cli: change name to just
laze
(fromlaze in Rust
)
- modules: add "provides"
- cli: allow
--build-dir
,--jobs
,--compile-commands
,--global
to be set via environment - cli: wire up creation of compile_commands.json
- make CLI selects have precedence over app/context selects
- "app:" -> "apps:"
- "module:" -> "modules:"
- "context:" -> "contexts:"
- "builder:" -> "builders:"
- "contexts.rule" -> "context.rules"
- "context.disable" -> "context.disables"
- mdBook manual
- add
-j<N>
to build/task, pass to ninja
- fix release workflow
- "import" from git
- "import" from assets bundled with laze (e.g., "import: laze: defaults")
- custom module builds (
build:
) - allow "--enable" as alias for "--select"
- add laze binary build id to cache hash
- allow overriding default download dir with "dldir" option
- expand variables in "sources" and "srcdir"
- pass "description" to Ninja rules
- "clean" cli command
- switch to mimalloc
- providing binary releases on Github
- set "project-root" variable
- allow specifying custom "outfile"
- this CHANGELOG.md
- apply early environment (e.g.,
$root
) to task commands - don't panic on duplicate context definition, show involved files
- fix "if_then" dependency order
- fix build dependencies
- take "app" context into account