ref: 6bc08b60e6e3a99cc9a263713db33061d63dc964 imag/lib/core/libimagrt/src/lib.rs -rw-r--r-- 1.7 KiB
Merge branch 'blackhole-stdout-when-piping' into master

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Add blackhole as default cli option

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Merge branch 'replace-failure-with-anyhow'

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Replace failure with anyhow in complete codebase

This patch was scripted with

    sed -i 's/use failure::Error/use anyhow::Error/' $(rg "use failure::Error" -l)
    sed -i 's/use failure::Fallible as /use anyhow::/' $(rg "use failure::Fallible" -l)
    sed -i 's/failure/anyhow/' $(rg "failure *=" -l)
    sed -i 's/format_err!/anyhow!/' $(rg "format_err!" -l)
    sed -i 's/use failure::ResultExt/use anyhow::Context/' $(rg "use failure::ResultExt" -l)
    sed -i 's/err_msg/anyhow!/' $(rg "use failure::err_msg" -l)
    sed -i 's/^anyhow\ *=.*$/anyhow = "1"/' $(rg "anyhow * =" -l)
    sed -i 's/^anyhow_derive.*//' $(rg "anyhow_derive" -l)
    sed -i 's/extern crate failure/extern crate anyhow/' $(rg "extern crate failure" -l)
    sed -i 's/.*extern crate anyhow_derive.*//' $(rg "anyhow_derive" -l)

Some manual changes were added as well, so this patch was not completely
scripted, but mostly.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Merge branch 'logger/remove-modules' into master

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Remove module-based logging

This patch removes the module-based logging mechanism.
This mechanism was introduced so that the configuration file is able to
define which imag module logs what. This was a fine-granular setting,
but most users won't actually touch it. It was more of a
debugging-thing for developers. I rarely used it during development and
it only introduced more headaches. It also was not updated (as in the
configuration file missed a few modules, others where not removed
despite the module did not exist anymore).

All in all, it was rather unmaintained and just "too much".

Thus, remove this thing completely. Developers know how to use grep.

This also automatically fixes bugs where `imag --debug command` did not
output any debugging log, but was expected to.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Update copyright years to 2015-2020

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Merge branch 'iterator-report-touched' into master

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Add iterator extensions for store-id touched reporting

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Add iterator extensions for store-id touched reporting

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Merge Leons patches for single-binary and CLI completion preparation

This merge pulls in the changes that Leon developed over the course of
the last months which change the binaries to actually be libraries with
a _very_ minimal binary surface. This enables us to actually generate
commandline completion scripts with clap without doing any fancy
file-include magic in a build.rs script.

From the original request-pull message (Mon, 24 Jun 2019 21:48:51 +0200):

> This patch is yet another attempt at bringing CLI completion to this
> workspace project. The details are explained in the commit message.
> Advantages of this approach include:
> - Use of standard dependency management features (`cargo install`
>   compatible)
> - Exposing further "binary" business logic to other Rust crates as a
>   library
> - (Possibly) hard linking the "binary" into the main imag binary, so
>   only one binary needs to be shipped. This should improve startup time,
>   and the Runtime instance could even be reused. I'd favor this
>   approach, while making it all configurable via features and still
>   searching the $PATH to allow bash-scripts etc. to provide imag
>   subcommands.
> However, this *could* increase binary size, I didn't perform any
> measures (at least when not only using in the build script but in the
> main binary as well). Anyhow, with LTO enabled this shouldn't matter if
> the dependencies aren't used.

Some patches were added by me before the merge, because Leon did not
check whether the tests still work (just minimal adjustments, see the

Also, one change was made to the final patchset send by Leon, which was
a fixup of the Copyright date in bin/core/imag/build.rs. This change
does not appear in the commit logs because it was just bumping the year
from 2018 to 2019 in the Copyright header. This was acked by Leon in a
private conversation.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
7a37c472 — Leon Schuermann 1 year, 7 months ago
Add ImagApplication trait for CLI completion + single-binary support

To re-add the imag-binary CLI completion, as well as to enable
building a single imag containing all of the subcommands, this commit
introduces an ImagApplication trait to be implemented by all imag
binary crates. The binary crates will be converted to libraries, with
an additional binary target. This enables standalone and single binary

On its own, this commit doesn't do much, but rather it paves the way
to dynamically interacting with the imag uis/clis using a
library-crate interface.

Signed-off-by: Leon Schuermann <leon@is.currently.online>
Merge branch 'rewrite-logging-aggregation' into master
Rewrite to use derive macro

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Rewrite logging config deserialization

This patch rewrites the logging config deserialization. It removes the
manual traversing of the config toml structure and replaces it with
types which implement `Deserialize`, which is way more convenient and
easy to read (and extend).

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Fix for rust beta compiler

The beta compiler reports duplicated input:

error: the item `IntoValues` is imported redundantly
   --> lib/entry/libimagentrylink/src/internal.rs:398:13
36  | use self::iter::IntoValues;
    |     ---------------------- the item `IntoValues` is already imported here
398 |         use internal::iter::IntoValues;
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^

so we fix this here.

Other imports were fixed as well.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Update copyright years

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Merge branch 'forbid-unsafe'

With this merge, there is no longer unsafe code in the imag repository.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Forbid unsafe code in all crates
Merge branch 'failure'

I'm so happy to finally be able to merge this patchset. After four days
of work, we finally convert the whole codebase from error_chain error
handling to failure.

Dependencies are now imported from "master" or even "failure" branches,
which will result in dependencies breaking the imag build as soon as the
"failure" branches vanish or the master breaks on the dependencies, but
we do it anyways until we are in release-shape.

Thanks goes to Kai for emotional support during the last weekend while
developing this patchset.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
libimagrt: Move from error-chain to failure

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>