Skip to content

Releases: 4jamesccraven/mkdev

Release v3.4.2 — Aún Más Cambios Innecesarios

30 Mar 08:14
f4bbf9b

Choose a tag to compare

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 -ise ending 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
  • 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 {}

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

19 Mar 17:17

Choose a tag to compare

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 provided subs mapping 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 list now prints a newline by default again. #8 #10
    This behaviour can be disabled by setting recipe_fmt.recipes_suffix to 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

14 Mar 16:39
638785b

Choose a tag to compare

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 list is 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, and langs) 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

26 Jun 04:09

Choose a tag to compare

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-filter flag, 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 mk subcommands are separated into individuals pages. For example, the man page for mk evoke is mk-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

04 May 08:04

Choose a tag to compare


New Features

  • A new built-in substitution value, mk::name has been added. This value represents the name of what you're making, and is specified
    at build-time using mk 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

27 Apr 10:44

Choose a tag to compare

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

25 Apr 11:44

Choose a tag to compare

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 mk man page.
  • Docs moved to the wiki.
  • Man page and completions are auto-generated via clap_complete and clap_mangen.

CLI Compatibility

  • mk can output info in plain, JSON, or TOML formats.
  • Includes a basic, WIP mkf script (with fzf + 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|--config or CONFIG env var.

Miscellaneous

  • mkdev is now split into multiple crates for faster builds.

Release 3.1.2 -- Fixes and Refactoring

20 Apr 14:32
c67759f

Choose a tag to compare

This release fixes some issues for Windows users, and improves a lot of internal documentation.

v3.1.0 -- Configuration and Substitution Changes

21 Mar 02:23

Choose a tag to compare

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.