~matthiasbeyer/imag

ref: 48ba74e3e11b72d032494ad62fc03b1066fa8d9a imag/lib/core/libimagrt/src/application.rs -rw-r--r-- 2.3 KiB
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>
Update copyright years to 2015-2020

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Fix: Remove Box::leak() call in runtime application abstraction

This patch removes the leakage in the runtime application abstraction.
Also fix formatting.

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
log).

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
builds.

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>
Next