Releases: 4jamesccraven/mkdev
Release v3.4.2 — Aún Más Cambios Innecesarios
I'm back, and I added more stuff that nobody asked for! /j
New Features
- mkdev is now (somewhat) locale-aware. Error messages and warnings, among other things, can change based on your system's locale! No longer are you bound to my preference for the
-iseending instead of-ize. #14, #15- I have also provided a Spanish internationalisation #16. I'm open and interested to having more translations, but I am not personally qualified to provide them. If you speak something other than English or Spanish and are interesting in contributing translations, reach out!
- Only the error messages are internationalised—that means no man pages, no help messages. Just warnings and errors. The ecosystem is very bare in this regard so for now it's a limitation I'll just have to accept unless someone is in desperate need. Make an issue if so (I say in English).
- In addition to the standard man pages, there is now a man page for mkdev's config file:
mkdev-config(5)#12- To access it (on most of the unices) just type
man 5 mkdev-config
- To access it (on most of the unices) just type
- You can have mkdev output its recipes in a null-separated output. This makes passing a list of recipes to something like xargs significantly easier #17
- e.g., to show the contents of all recipes you could do this:
mk list -t print0 | xargs -0 -I{} mk list {}
- e.g., to show the contents of all recipes you could do this:
Improvements
- As a natural consequence of the i18n efforts, the error messages themselves got touched up a bit. They should (hopefully) be a bit clearer about what went wrong, which part of the process it went wrong (e.g., loading the config, or during evocation), and they should overall be a bit easier to read.
- Overall, this update cleared a lot of tech debt for some much larger features I have planned for v3.5 and beyond.
Thanks as always.
Also despite the em dashes, I wrote this myself. I went out of my way to copy and paste and em dash, yes, leave me alone.
Release v3.4.1
This update fixes a few oversights from the v3.4.0 release. There shouldn't be any breaking changes.
Bug Fixes
- Re-implement escapes for the format parser.
Prior to mkdev v.3.4, a recipe containing something like\{{date}}would be substituted{{date}}, calling the providedsubsmapping in user configs, instead of escaping it. This was accidentally removed when the old regex-based formatter was repleased with the new delimited parser. Whoops! It's fixed now. mk listnow prints a newline by default again. #8 #10
This behaviour can be disabled by settingrecipe_fmt.recipes_suffixto an empty string ("") in your configuration file.
Logo
A new logo has been added to the readme!
I'll be working on more QoL improvements and unnecessary features in the next few weeks, so be on the lookout for that! <3
Release v3.4.0
This update is the first a few that I have planned for the next few weeks. It brings more customisation,
UX improvements, and several technical improvements.
Caution
With v3.4.0, I'm announcing that I will no longer be providing support for Windows. I don't want to invest time
in testing on that system, and I don't think mkdev is particularly suited to the Windows way of doing things.
If you have a use case that needs discussing, please open an issue.
New Features
- The default output of
mk listis now fully configurable.- The default configuration is identical to the previous default, except it has one less newline between recipes.
- Default bold formatting and colour applied to the recipe name and languages respectively can be disabled.
- Each individual variable (
name,desc, andlangs) have individual format options that can be configured. - Descriptions can be fully disabled in the output if desired.
Note
The wiki will be updated in the coming days with a detailed specification of the syntax. For now, you can look
at the output of mk -g to see the default options.
Changes
- Descriptions are no longer required to properly deserialise a recipe
- Failing to provide a subcommand no longer throws an error, but prints a help message.
Nix
- The flake now provides an overlay so that mkdev can be installed as
pkgs.mkdev.
Technical Improvements
- The mkdev flake no longer depends on
flake-utils, and uses a tarball for the stable channel as its input for nixpkgs. This
significantly reduces the download size when consumed as an input to another flake. - The internal substitution engine no longer uses regex under the hood, and instead uses a simpler delimited parser.
- Both Rust and Nix code are checked with static checkers to produce better, more idiomatic (and thus more maintainable code).
Thanks to the few people who use this project! <3
You know where to find me if something breaks.
Edit
Due to some issues with the way I generated this release, the AUR version cannot be updated. The AUR package will skip v3.4.0 and go to straight to v3.4.1 when it releases in a few days. Apologies if this affects anyone other than myself.
Release v3.3.0
New Features
- Imprinting a recipe has more intuitive results, respecting basic filters such as hidden files, .gitignore files, and .ignore files using the ignore crate.
- This filter can be disabled with the
--no-filterflag, and and additional files can be excluded with-e|--exclude, which takes paths or globs (e.g.,dir/*)
Changes
- The underlying recipe format has been changed to a new version, v2. All v1 recipes are backwards compatible, and will still work with no action from the user.
- Languages' colours are stored separately from the name that encodes its name.
- Recipe contents are stored with a flat, un-nested structure.
- Slight visual and grammatical improvements to error messages. Warnings and errors are visually distinguished.
- The man pages for
mksubcommands are separated into individuals pages. For example, the man page formk evokeismk-evoke.
Tip
To update a recipe to the new format, run mk show RECIPE -t toml, and replace the old file with the new one. For nix users using the home-manager module, run mk list -t nix and replace the recipes list with the new one provided. It may be helpful to redirect stdout to a file in both cases. This is not necessary, but is likely a good idea to ensure future compatibility.
Fixes
- A known serialisation bug in the ser_nix crate was patched (4jamesccraven/ser_nix#1), and the dependency was updated to the new version. Specifically, nix strings interpolations (e.g.
${VARIABLE}) were incorrectly escaped as$${}instead of''${}.
Warning
Existing recipes managed through the home-manager module that contain nix code in their contents (e.g., a recipe that contains a flake),
may require manual intervention.
Release 3.2.2 -- Even More Declarative
New Features
- A new built-in substitution value,
mk::namehas been added. This value represents the name of what you're making, and is specified
at build-time usingmk evoke -n NAME RECIP_NAME - A nix home-manager module to allow for declarative recipes and config, as well as centralised installation of companion scripts
Bug Fixes
- Improved compile-time optimisations (#4)
- Evoke and Imprint can no longer silently replace pre-existing files (#5)
Technical Improvements
- Created ser_nix to facilitate serialising recipes into nix code
- Replaced
String-based error handling with a proper error type - Refactored the CLI to make it less burdensome to add more flags and options in the future
Also, we reached the 100th commit!
Release 3.2.1 -- Minor Technical Changes
This release is a minor change primarily to make it easier to publish mkdev to crates.io
What's changed?
- The crates have been merged back into one; the build time enhancements weren't significant, and it would mean I would have to publish components of mkdev as separate crates
- More metadata was added to Cargo.toml
That's it!
Release 3.2.0 -- The Quality of Life Update
Caution
This update may break scripts relying on mkdev. Please read the patch notes before updating.
Breaking Changes
- Recipe building is now a sub-command (
evoke, alias:build, plus some hidden easter eggs).
Quality of Life
- Shell completions for recipe names and flags.
- New
mkman page. - Docs moved to the wiki.
- Man page and completions are auto-generated via
clap_completeandclap_mangen.
CLI Compatibility
mkcan output info in plain, JSON, or TOML formats.- Includes a basic, WIP
mkfscript (withfzf+bat) to search and interact with recipes. Only supports primary sub-command names.
Config Support
- Print or generate default/detected config to stdout.
- Override config via
-c|--configorCONFIGenv var.
Miscellaneous
- mkdev is now split into multiple crates for faster builds.
Release 3.1.2 -- Fixes and Refactoring
This release fixes some issues for Windows users, and improves a lot of internal documentation.
v3.1.0 -- Configuration and Substitution Changes
This is the first time I have made a serious attempt to make a binary release for an application. I was only able to target linux and windows for now, but in the future I will support more formats if requested. If you have an issue running the application, please open an issue.