1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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 `libimagnotification`
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](http://git.imag-pim.org/imag/tree/doc/src/09020-changelog.md).
* 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.
|