summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2017-11-10 10:09:03 +0100
committerMatthias Beyer <mail@beyermatthias.de>2017-12-24 13:46:46 +0100
commit5eded3f28f6273887c3c81b00ce42efb9d7d6c24 (patch)
tree2ded80b741196ec11ae1b1f24d73506cb62a0bc0
parenteee848500449e279be219d6555a6ed4e0054705a (diff)
imag v0.5.0 post
-rw-r--r--content/blog/2017-12-12-imag-0-5-0.md143
1 files changed, 143 insertions, 0 deletions
diff --git a/content/blog/2017-12-12-imag-0-5-0.md b/content/blog/2017-12-12-imag-0-5-0.md
new file mode 100644
index 0000000..3734c59
--- /dev/null
+++ b/content/blog/2017-12-12-imag-0-5-0.md
@@ -0,0 +1,143 @@
+---
+title: "imag 0.5.0"
+slug: "imag-0-5-0"
+date: "2017-12-24T13:22:06"
+tags: [ "linux", " open source", " programming", " rust", " software", " tools", " imag" ]
+---
+
+<!-- more -->
+
+**First of all (same as with the 0.4.0 release): This is not production-ready
+software. Use at your own
+risk! This is a release for people to notice that some things work and one
+could start to play around with it. Do not trust imag with your personal data
+if you do not have backups. There _are_ bugs. This is _not_ perfect. This is
+_alpha quality or pre-alpha quality software_!**
+
+# What's in there
+
+In this release, which is fairly not that big (which is good), we had
+
+* 227 commits
+* 51 merge-commits / 176 non-merge commits
+* 2 contributors
+* 186 files changed
+* 6707 insertions(+) / 3255 deletions(-)
+
+Some more statistics about the codebase (thank you,
+[tokei](https://github.com/Aaronepower/tokei)), because why not:
+
+```
+-------------------------------------------------------------------------------
+ Language Files Lines Code Comments Blanks
+-------------------------------------------------------------------------------
+ CSS 1 27 24 0 3
+ Makefile 1 161 97 29 35
+ Markdown 133 3332 3332 0 0
+ Nix 2 98 77 0 21
+ Rust 262 30367 19298 6253 4816
+ Shell 8 241 143 57 41
+ TOML 50 2112 1447 272 393
+-------------------------------------------------------------------------------
+ Total 457 36338 24418 6611 5309
+-------------------------------------------------------------------------------
+```
+
+The Markdown files are the documentation, which is good. TOML is our
+configuration file, the `Cargo.toml` file and also some test files which are
+included in the codebase.
+The `Makefile` as well as the CSS files are from the documentation as well.
+
+All in all, we have a code/comment ratio of `12.55 / 1` (we have to subtract
+18 lines of LGPL header for each file, so `6253 - (262 * 18) = 1537`) - which
+means we have 1 line of comment for 12.55 lines of code. That's not too bad,
+though we could do much better.
+
+## New things, shiny things
+
+In this release, we had quite a number of new crates - also commandline tools!
+But lets start with the library crates (for the full changelog, have a look at
+the bottom of this post).
+
+First of all, we got `libimagnotification` for doing some nice `inotify-send`
+when errors occour. It is not yet integrated into the CLI tools, but I guess
+it will be in the next release. Configuration via `imagrc.toml` included, of
+course.
+We also got `libimaghabit` which contains the logic for `imag-habit`, which
+was introduced in this release.
+
+We also got `imag-mv`, `imag-annotate` and `imag-diagnostics` as new "core"
+crates.
+`imag-store` is now able to simply dump all store ids. That's nice for
+scripting.
+
+We got `imag-contact` and `imag-habit` introduced in this release as "domain"
+crates.
+
+The CLI of `imag-link` was redesigned and is much nicer now.
+
+## The release process
+
+For the release process, I added a `scripts/release.sh` file in the
+repository. Unfortunately, I ran into
+[a bug]
+in cargo which caused _some_ crates to fail in the compile process (only when
+releasing them). After building cargo 0.18 from source, I was able to release
+my crates.
+
+This is really unfortunate and I hope that this bug will be fixed in future
+cargo releases.
+
+Also, because nobody is perfect, I accidentially released `libimagnotificaion`
+in 0.4.0 rather than in 0.5.0 (`libimagnotificaion` is a new crate). I yanked
+the crate afterwards, but that really shows that we should harden our release
+process.
+
+# What's coming
+
+The
+[0.6.0 milestone](https://github.com/matthiasbeyer/imag/milestone/6)
+already exists and there are a lot of things already added to it.
+
+When will I be there? The next version will be there if its ready.
+Honestly I don't know. We have a lot of things to tackle and this is growing
+to be a _really_ huge project, especially for a one-man-show, which it almost
+is, still.
+
+# Changelog
+
+Finally, here again the changelog. You can also find it
+[in the repository]().
+
+* Major changes
+ * `imag-counter` and `libimagcounter` was removed.
+ * `imag-mv` was introduced
+ * `imag-view` uses positional args now
+ * `imag-view` uses the configuration file now to find the command to call
+ for viewing the entry. This way one can view the entry in an editor or the
+ browser or on the toaster.
+ * The logger is now able to handle multiple destinations (file and "-" for
+ stderr)
+ * `imag-store` can dump all storeids now
+ * `imag-annotate` was introduced
+ * `imag-diagnostics` was added
+ * The runtime does not read the config file for editor settings anymore.
+ Specifying an editor either via CLI or via the `$EDITOR` environment
+ variable still possible.
+ * `imag-contact` was added (with basic contact support so far).
+ * `imag-habit` was introduced
+ * `imag-link` commandline was redesigned to be easier but with the same
+ features.
+
+* Minor changes
+ * `libimagentryannotation` got a rewrite, is not based on `libimagnotes`
+ anymore. This is minor because `libimagentryanntation` is not yet used by
+ any other crate.
+ * imag now reads the `IMAG_RTP` environment variable before trying to access
+ `$HOME/.imag` for its runtimepath.
+ * `libimagnotification` was introduced, though not yet integrated into the
+ CLI tools
+
+* Bugfixes
+ * `Store::entries()` does not yield StoreIds which point to directories
+ anymore, only StoreIds pointing to files.