imag has made little progress in the last 14 days, as I’m really focusing on my bachelors thesis and exams right now. Anyways, I got some neat things done. Read here what happened in the last 14 days.
Yes, my thesis is my main focus right now. This does not mean that imag is stalled, indeed I got four merges done in the last 14 days, and some more are waiting.
Developers Certificate of Origin
I added a Developers Certificate of Origin in a pull request. This means, that all developers/contributors of imag agree to the terms listed in this certificate.
Within this pull request I also added some notes how to contribute to imag
without having a github account. People are welcome to send me patches for
imag via mail! They just have to acknowledge that I will integrate them by
opening a PR on github myself. Also, they have to add a
in their commit messages, I will not include patches send by mail without this
I think that shouldn’t be an issue.
This was the second pull request. It was followed by two pull requests which moved the codebase to use the feature from this PR.
What it implements: An additional method for the
Result type, so one can use
Result::map_err_into() method now to minify error handling code in a
Before this pull request, one had to write the following code over and over again, to wrap an error type into the module-specific error type:
some_operation_that_might_fail() .map_err(Box::new) .map_err(|e| ModuleError::new(ModuleErrorKind::FailingOperation, Some(e)))
This quickly became rather ugly. With the new feature applied, we can write this now in a really short and neat way. The following is equal to the code snippet above:
map_err_into() method doing the heavy lifting of packing the error
into a new Box and creating an error instance with the passed error kind.
As this was implemented in the
libimagerror code generator macro, this is
available for all crates which use the
The PRs that followed that improvement removed a lot of boilerplate code:
4 files changed, 63 insertions(+), 113 deletions(-)
Lets see what’s in the pipeline. Most of the following things are “I want to do this” things, and I won’t be able to do them that soon, as the exams are coming up. I really hope I can get some progress, still.
libimagref library is in progress. This library will enable the user to
reference files outside of the store.
imag-ref binary crate will be a frontend to use this library.
This is in progress and I’m really looking forward to it.
I will use the
libimagref library to write a wiki module with vimwiki as
backend, after this gets merged.
store hooks: git
I want to continue to work on the git hook layer, so we finally have a version control system in the store.
Another thing I really want to do is to implement the filter language
frontend, so one can use
libimagentryfilter to implement a filter right on
The best option would be to add two/multiple frontends for this:
so one can select one of these languages by commandline and then filter entries.
That would be a really huge amount of work, but it would be fun, really.
Another thing what I want to do is to add the LGPL header in each source file. The point is: I want to check this via the travis CI setup, so travis checks whether all files contain the LGPL header. That is possible, I did not yet figure out how to do it properly, though.