Releases: bahmanm/bmakelib
v0.8.0
The highlight of the release is Dictionary (aka Map) in makefiles which can be used, among other things, to structure your data/variables. An example is worth a thousand words:
$(call bmakelib.dict.define,THIS_BUILD)
$(call bmakelib.dict.put,THIS_BUILD,arch,x86_64)
$(call bmakelib.dict.put,THIS_BUILD,dir,/tmp/my-app/build)
some-target :
@echo BUILD.arch = $(call bmakelib.dict.get,BUILD,arch) # x86_64
@echo BUILD.arch = $(call bmakelib.dict.get,BUILD,dir) # /tmp/my-app/build
What's Changed
- Dictionary in makefiles by @bahmanm in #102
- bmakelib.shell.error-if-nonzero: Prefix the info message w/
bmakelib.shell
by @bahmanm in #109 enum
features should be usable ascall
able variables by @bahmanm in #111- Disable CircleCI Mac executor by @bahmanm in #115
- Bump version to 0.8.0 by @bahmanm in #114
Full Changelog: v0.7.0...v0.8.0
v0.7.0
The highlight is the introduction of fail-fast alternative to $(shell)
which relieves you from checking .SHELLSTATUS
every time $(shell)
is used.
Makefile:
VAR1 := $(call bmakelib.shell.error-if-nonzero, echo This fails hard❗ && false)
some-target :
@echo Must not reach here!
Shell:
$ make some-target
*** bmakelib.shell.error-if-nonzero: Command exited with non-zero value 1. Stop
What's Changed
- Update README.md - fix link to default-if-blank by @nfultz in #92
- Migrate to CircleCI by @bahmanm in #94
- Implement a fail-fast
$(shell)
by @bahmanm in #96 - Remove the irrelevant year from copyright statements by @bahmanm in #99
- Release version v0.7.0 by @bahmanm in #107
New Contributors
Full Changelog: v0.6.0...v0.7.0
v0.6.0
The highlight of this release is the introduction of enums (aka variants or options) which can be used to limit and validate a variable's value.
For example:
Makefile:
define-enum : bmakelib.enum.define( DEPLOY-ENV/development,staging,production )
include define-enum
deploy : bmakelib.enum.error-unless-member( DEPLOY-ENV,ENV )
deploy :
@echo 🚀 Deploying to $(ENV)...
Shell:
$ make ENV=local-laptop deploy
*** 'local-laptop' is not a member of enum 'DEPLOY-ENV'. Stop.
$ make ENV=production deploy
🚀 Deploying to production...
What's Changed
- Support enums (aka variants or options) by @bahmanm in #88
- Minor edits to docs to make them more readable/easier to understand by @bahmanm in #89
- Bump version to 0.6.0 by @bahmanm in #90
- Update RPM spec to include enum.m[kd] by @bahmanm in #91
Full Changelog: v0.4.6...v0.6.0
v0.4.6
Mainly a bugfix release which addresses #85 (default-if-blank
not overriding the values passed as blank on the command line).
Additionally, there were plenty of changes to the pipeline and how releases are automatically built by Travis.
What's Changed
- Chain recipe lines where it makes sense by @bahmanm in #50
- Create releases via Travis by @bahmanm in #51
- Re-enable deploy on tag event by @bahmanm in #52
- Enable the deploy stage for all branches (WIP) by @bahmanm in #53
- Fix the unbalanced quotes by @bahmanm in #54
- Update github token by @bahmanm in #55
- Do not use env vars in the file list to upload by @bahmanm in #56
- Try env vars in file list to upload to github by @bahmanm in #57
- Enable Renovate by @bahmanm in #60
- Use Focal wherever possible by @bahmanm in #63
- Use only glob patterns by @bahmanm in #64
- Explicitly set the working directory before deploy by @bahmanm in #65
- Remove env vars by @bahmanm in #67
- Change working directory to HOME by @bahmanm in #68
- Print debugging info by @bahmanm in #69
- Use
skip_cleanup
instead ofcleanup
by @bahmanm in #70 - Make
deploy
a phase ofbuild & deploy
job by @bahmanm in #71 - use
IS
operator by @bahmanm in #72 - Set the ownership of the
_build
directory by @bahmanm in #73 - Fix a typo in branch name by @bahmanm in #74
- fix the directory permissions in
before_deploy
by @bahmanm in #75 - Do no use env vars by @bahmanm in #76
- Use
skip_cleanup
ascleanup
seems to do nothing 😕 by @bahmanm in #77 - Try out env vars in
deploy.file
(one last time) by @bahmanm in #79 - Remove redundant .PHONY declarations by @bahmanm in #84
- Override the value of the blank variables from the command line by @bahmanm in #86
- bump version to 0.4.6 by @bahmanm in #87
Full Changelog: v0.4.5...v0.4.6
v0.4.5
What's New
There are NO functional changes in this release.
How To Use
Please refer to the installation instructions to get started.
What's Changed
Full Changelog: v0.4.4...v0.4.5
v0.4.4
What's New
There are NO functional changes in this release.
How To Use
Please refer to the installation instructions to get started.
What's Changed
Full Changelog: v0.4.3...v0.4.4
v0.4.3
What's New
There are NO functional changes in this release.
How To Use
Please refer to the installation instructions to get started.
What's Changed
Full Changelog: v0.4.2...v0.4.3
v0.4.2
What's New
There are NO functional changes in this release.
How To Use
Please refer to the installation instructions to get started.
CHANGELOG
Full Changelog: v0.4.1...v0.4.2
v0.4.1
What's New
There are NO functional changes in this release.
How To Use
Please refer to the installation instructions to get started.
CHANGELOG
- Add tests for chained
!!logged
and!timed
prereqs by @bahmanm in #32 - Assert against a more flexible path to make by @bahmanm in #34
- Release 0.4.1 by @bahmanm in #35
Full Changelog: v0.4.0...v0.4.1
v0.4.0
First Release Ever 🥳
An example is worth a thousand words:
Makefile:
include bmakelib/bmakelib.mk
my-target : bmakelib.error-if-blank( VAR1 )
my-target : bmakelib.default-if-blank ( VAR2, some-value )
my-target :
@echo Running $(@)...
@echo VAR1=$(VAR1), VAR2=$(VAR2)
@sleep 2
@echo $(@) is done.
Shell:
$ make VAR1=100 my-target!timed
Using default value 'some-value' for variable 'VAR2'
Using default value 'yes' for variable 'stdlib.conf.timed.SILENT'
Running my-target...
VAR1=100, VAR2=some-value
my-target is done
Target 'my-target' took 2009ms to complete.
What's New
Everything! 😄
In short, there are 4 features shipped with this release:
error-if-blank
: to declare required variables and fail if they are emptydefault-if-blank
: to declare optional variables with default valuetimed
: to measure the execution time of a given targetlogged
: to log the output of a given target to file
See the README section for detailed information on each entry.
How To Install
Either install using the prepackaged version for your Linux distro or grab the source .tar.gz
and simply make install
.
You may want to take a look at the README section for detailed info.
Got ideas?
Please take a second to submit your ideas for future features via project's issues 🙏