Commit Graph

334 Commits

Author SHA1 Message Date
Matthias Beyer 93195b3bad Default clap app builder: Allow external subcommands 2018-04-04 19:34:13 +02:00
Matthias Beyer cb8b5a0cf6 Add helper for handling unknown subcommands 2018-04-03 18:23:01 +02:00
Matthias Beyer e61ccc9561 Fix: Entry::to_str() should return Result<_>
Because serializing might fail.

Also fixes all usages of the API.
2018-03-26 14:24:42 +02:00
Matthias Beyer ea38f2ffbf Fix: Pass /dev/tty as stdin for editor
This fixes the issue that spawning the editor trashes the terminal.

The signature of the Runtime::editor() function changed, which has to be
fixed in using code.
2018-03-23 23:55:06 +01:00
Matthias Beyer 9e0d0d9f6c Add Entry::replace_from_buffer() 2018-03-23 15:44:34 +01:00
Matthias Beyer 7e623f39b8 Add message why panic
So we see that when grepping the source for `unimplemented!()`.
2018-03-23 10:05:58 +01:00
Matthias Beyer 41f7bab1c5 Fix: Store::create() should fail if the entry exists 2018-03-22 21:16:11 +01:00
Matthias Beyer a23afa7772 Ensure command and args are provided correctly 2018-03-13 08:32:40 +01:00
Matthias Beyer b8c3f7f834 Read editor from configuration, ignore errors 2018-03-13 08:32:40 +01:00
Matthias Beyer 43a3f4a5db Fix editor command
do inherit stdin and stderr from parent process, to not break terminal
editors when editing stuff.

vim printed "Input not from terminal" warning messages. This was fixed
by this commit.
2018-03-12 20:08:10 +01:00
Matthias Beyer 68ace5d147 Fix typo 2018-03-12 13:32:23 +01:00
Matthias Beyer d3b38b5a90
Merge pull request #1330 from matthiasbeyer/libimagrt/pipe-magic
Implement pipe magic in libimagrt
2018-03-10 16:20:36 +01:00
Matthias Beyer ce0bd9298a Implement pipe magic in libimagrt
When we merged the changes in libimagrt so that it automatically detects
whether stdin/stdout is a TTY and provides the user with stderr in case
stdout is not a TTY, we forgot that things like

    imag foo | grep bar

becomes impossible with that, because imag detects that stdout is not a
tty and automatically uses stderr for output.

But in this case, we don't want that. The output has to be stdout in
this case.

With this change, we have a flag in the runtime ("--pipe-magic" or "-P",
globally available) which turns on "pipe magic".

The expected behaviour is the following, if "-P" is passed:

* If stdout is a TTY, we print to stdout
* If stdout is not a TTY, we print to stderr
* If stdin is not a TTY, we do not provide it

If "-P" is not passed, we allow the user of libimagrt to use stdin for
interactive stuff (the interactive stuff is not yet implemented).

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-03-10 15:43:44 +01:00
Matthias Beyer da408b9e67 This fixes the file parsing (again)
Unfortunately, our latest fix to file parsing did not solve all issues.
So we have to fix it _again_.

The problem was the `std::str::Lines` iterator, which apparently fails
this:

    assert_eq!(1, "".lines().count());

as an empty line seems not to be a line.

Because of that, when reading a file with an empty line at its bottom
got stripped off that line.

This patch removes the use of the `lines()` iterator and uses
`split("\n")` instead. This only works on Unix operating systems, but as
we only target unix operating systems with imag, this is not considered
an issue right now.

This patch also adds extensive tests on multiple levels in the
`libimagstore` implementation:

* On the parsing level, for the function which implements the parsing
* On the filesystem abstraction levels
* On the `Store` levels

to make sure that everything is parsed correctly.
2018-03-10 14:53:15 +01:00
Matthias Beyer 579c00b62a Replace hard coded version strings with compiletime env 2018-03-06 12:45:41 +01:00
Matthias Beyer 3cb7372b67 Provide LockedOutputProxy which holds locked variants of Stdout/Stderr 2018-03-04 15:42:00 +01:00
Matthias Beyer 0b593d6635 Let the OutputProxy hold Stdout/Stderr objects, so we do not have to aquire them each write!() 2018-03-04 15:41:32 +01:00
Matthias Beyer 19e9dfe33c Implement proxy object where runtime configures output
This is another approach for providing access to stdin/out/err via
libimagrt::runtime::Runtime.

The Runtime object does configure which output gets returned (stdout if
stdout is a tty, else stderr).

With this we can change libimagrt to read/write the store from/to
stdin/stdout without the user noticing that she does not write to stdout
but stderr.
Reading from stdin is not possible then, though.
2018-03-04 13:57:44 +01:00
Matthias Beyer c18c0bbbe4 Provide stdin/out/err resources via Runtime object
This way we can control whether "out" output goes to stdout or stderr
without the user of the functionality knowing.

This is useful for later when we use libimagrt to automatically
read and write the store from and to stdout/in depending on whether we
are talking to a TTY or a pipe.
2018-03-04 13:57:02 +01:00
Matthias Beyer c9af23f663
Merge pull request #1314 from matthiasbeyer/imag/do-not-instantiate-runtime
Change "imag" impl to not instantiate Runtime object
2018-03-02 23:28:10 +01:00
Matthias Beyer ee5a17790f Fix multi-line reading
Reading entries with multiple entries caused all lines to be read as one
line.

This bug is fixed with this patch.
2018-03-02 21:48:17 +01:00
Matthias Beyer 87d6f1221f Add testcase for reading multiple lines 2018-03-02 21:48:13 +01:00
Matthias Beyer 78fe9b8cc5 Change "imag" impl to not instantiate Runtime object
Adapt libimagrt interface to export the functions we need to do this.
This is not that nice, but the best approach without rewriting large
parts of libimagrt.
2018-02-26 22:10:23 +01:00
Matthias Beyer 1521005e79
Merge pull request #1307 from matthiasbeyer/libimagstore/entry-parse-fix
Rewrite entry parsing algorithm
2018-02-20 22:03:00 +01:00
Matthias Beyer 9fb5f453fe Rewrite entry parsing algorithm
Rewrite without regex crate.

The regex approach was broken. If the following _content_ was provided
in the entry:

    foo

    ---

    bar

The regex approach parsed the header until the "---" in the content.
This is, of course, not the way to do that.

Now, the parsing is implemented by hand. Should be faster as well,
though I don't care about this.

This fixes a severe bug.
2018-02-20 21:06:36 +01:00
Matthias Beyer 732fc32b75 Fix trace count space width
Was five here, but should be four.
2018-02-20 20:24:27 +01:00
Matthias Beyer 00b86709b6 Use writeln!() instead of write!() 2018-02-20 19:24:34 +01:00
Matthias Beyer 7653a040da
Merge pull request #1294 from matthiasbeyer/libimagstore/store-debug-fix
Simplify Store debug impl
2018-02-19 12:27:37 +01:00
Matthias Beyer 5f99018807 Simplify store debug print 2018-02-19 11:51:21 +01:00
Matthias Beyer c2dfb2ef52 Refactor timetrack subcommands output for broken pipe errors 2018-02-19 11:14:18 +01:00
Matthias Beyer 6a341d3723 Abstract exit code as a type 2018-02-19 11:14:18 +01:00
Matthias Beyer 256bc47222 Refactor into two independent extensions 2018-02-19 10:40:26 +01:00
Matthias Beyer 39107c5296 Add result extension for translating io errors to exit codes 2018-02-19 10:40:26 +01:00
Matthias Beyer 841d3ffb60 Remove OnErr extension which is not used 2018-02-18 20:04:22 +01:00
Matthias Beyer 3341e3640c
Merge pull request #1224 from matthiasbeyer/git-version-in-version
Git version in version
2018-02-18 20:03:09 +01:00
Matthias Beyer 3bd8822f4f Use version string from git, if present 2018-02-13 11:53:51 +01:00
Matthias Beyer f5f4fbc397 Add buildscript and infrastructure to include git information in version 2018-02-13 11:38:34 +01:00
Matthias Beyer 5b07baddf8 Add error convenience extension 2018-02-12 21:22:39 +01:00
Matthias Beyer 074f9826fd Implement own displaying implementation for the chain 2018-02-12 21:19:48 +01:00
Matthias Beyer 503b042690 Adapt libimagrt to new error handling 2018-02-12 21:19:47 +01:00
Matthias Beyer 6dd24f3da3 Keep trace_error{,_dbg} for backwards compatibility 2018-02-12 21:19:47 +01:00
Matthias Beyer e481dbfd12 Rewrite libimagerror to be thin layer over error-chain 2018-02-12 21:19:47 +01:00
Matthias Beyer 9e3c966d84
Merge pull request #1273 from matthiasbeyer/update-version-numbers
Update version string: 0.6.0 -> 0.7.0
2018-02-11 17:50:52 +01:00
Matthias Beyer 2e4c29dd07
Merge pull request #1277 from matthiasbeyer/libimagstore/store-debug-output-prettify
Prettify Store debug output implementation
2018-02-11 15:19:13 +01:00
Matthias Beyer 30d2c28a22 Update version string: 0.6.0 -> 0.7.0 2018-02-11 14:22:24 +01:00
Matthias Beyer 8fcd2a6c8c Prettify Store debug output implementation 2018-02-11 13:36:37 +01:00
Matthias Beyer fa8af0c053
Merge pull request #1275 from matthiasbeyer/clap-features
Clap features
2018-02-11 13:29:17 +01:00
Matthias Beyer 863b52c2f0 Add TraceIterator::trace_unwrap_exit()
* Exits on the first Err(_)
* Introduces new Iterator type for iterating with unwrap and exit on
  error
2018-02-10 16:41:06 +01:00
Matthias Beyer 8656a38c50 Update dependency: clap: 2.17 -> 2.29 2018-02-10 16:40:34 +01:00
Matthias Beyer 9d2900a7dc Compile clap with suggestions and color support 2018-02-10 16:40:34 +01:00
Matthias Beyer d5a9e4930d Update dates in license header
And add missing header in one file
2018-02-07 02:48:53 +01:00
Matthias Beyer de613c9ebd
Merge pull request #1227 from matthiasbeyer/libimagentryutil/filtered-iterators
libimagentryutil: filtered iterators
2018-02-01 20:22:12 +01:00
Matthias Beyer 06cb8d50fb Make StoreId::is_in_collection() generic over AsRef<str> 2018-02-01 16:46:57 +01:00
Matthias Beyer b3f546129a Add StoreIdIteratorWithStore::without_store() 2018-02-01 16:46:38 +01:00
Matthias Beyer 8e931cd79f Change calls to into_get_iter() to not take argument 2018-02-01 16:46:38 +01:00
Matthias Beyer 3b01a9eb2f Add API in StoreIdIteratorWithStore to get acting iterators
This patch adds API functions in the StoreIdIteratorWithStore iterator
type to transform it into a iterator which _does_ something (as in the
`libimagstore::iter` API).

It mimics the API which is offered by `libimagstore::iter`.
2018-02-01 15:47:39 +01:00
Matthias Beyer 030e32e44f Provide StoreId Iterator which has a ref to the Store
This change is needed so we can refactor the "get" iterator to not take
an argument (the store) later, which improves the API.
2018-02-01 15:47:39 +01:00
Matthias Beyer 164b6b7f10 Move documentation to appropriate place 2018-01-29 09:38:32 +01:00
Matthias Beyer 7731b88c97 Remove map_err_trace_exit() calls in favour of map_err_trace_exit_unwrap() 2018-01-29 09:38:32 +01:00
Matthias Beyer fcfc397fc8 env_logger: 0.5.0-rc.2 -> 0.5 2018-01-18 14:15:40 +01:00
Matthias Beyer 8d9c7dce4f env_logger: 0.5.0-rc.1 -> 0.5.0-rc.2 2018-01-15 11:22:09 +01:00
Matthias Beyer 635d000344 log: 0.4.0-rc.1 -> 0.4.0 2018-01-15 11:21:52 +01:00
Matthias Beyer c45130ddd0 env_logger: 0.4.* -> 0.5.0-rc.1 2018-01-15 11:20:27 +01:00
Matthias Beyer 0aba7d2939 Adapt libimagrt for new log setup 2018-01-15 11:20:07 +01:00
Matthias Beyer f209e12410 Update dependency: log: 0.3.* -> 0.4.0-rc.1 2018-01-15 11:20:07 +01:00
Matthias Beyer 3ef5fcfab6 libimagstore: Replace read with typed read 2018-01-13 01:14:03 +01:00
Matthias Beyer febecd85e5 libimagrt: Replace read with typed read 2018-01-13 01:14:03 +01:00
Matthias Beyer 0c4be78223 Update dependency: toml-query -> 0.6 2018-01-13 01:14:03 +01:00
Matthias Beyer bfc35e0517 Remove dependency "version"
Because the "version" crate is licensed as GPL, which would us require
to release imag as GPL, we remove the crate now.
2018-01-12 13:33:40 +01:00
Matthias Beyer 689310edfe Rename `Store::retrieve_copy` to `Store::get_copy`
The function was named falsely and nobody noticed. So nobody uses this
function yet - hopefully - as this change is a breaking API change.
2018-01-08 15:16:41 +01:00
Matthias Beyer d5ce99b170 Refactor toml destructure matching.
Use accessor functionality and function chaining now.
2018-01-05 11:37:09 +01:00
Matthias Beyer 4184a1e5d0 Replace matching with function chaining 2018-01-05 11:37:09 +01:00
Matthias Beyer fa8ac03701 Replace matching with function chaining 2018-01-05 11:37:09 +01:00
Matthias Beyer 7d1d41884c Replace matching with function chaining 2018-01-05 11:37:09 +01:00
Matthias Beyer 529f3f83da
Merge pull request #1187 from matthiasbeyer/libimagerror/display-fix
Improve error output
2018-01-01 20:47:24 +01:00
Matthias Beyer 774933ae4a
Merge pull request #1163 from matthiasbeyer/libimagstore/mighty-iters
libimagstore: More powerful iterator extensions
2017-12-25 22:02:56 +01:00
Matthias Beyer 9890371652
Merge pull request #1185 from matthiasbeyer/bump-version-strings
Update version strings: 0.5.0 -> 0.6.0
2017-12-25 21:06:14 +01:00
Matthias Beyer 0ae7b6b387 Do not call description() when displaying the error 2017-12-25 19:44:29 +01:00
Matthias Beyer 46a8d373b3 Allow dead code in whole module 2017-12-25 19:23:41 +01:00
Matthias Beyer 7d67b67440 Update version strings in tests 2017-12-25 19:17:07 +01:00
Matthias Beyer 3c8dd19d11 Update version strings: 0.5.0 -> 0.6.0 2017-12-25 19:17:07 +01:00
Matthias Beyer 9128d04866 Remove test
This test is not applicable anymore because it tests (and tested) the
wrong thing.

It was to check whether the function failed because the "imag" key
contained the wrong type, but this is not tested by that function. The
function only checks whether the "imag" key is present.
2017-12-25 17:59:50 +01:00
Matthias Beyer 35410aaa2e Refactor: Remove unneccessary functions 2017-12-25 17:59:50 +01:00
Matthias Beyer 20a552f527 Refactor header checking to use toml-query 2017-12-25 17:59:50 +01:00
Matthias Beyer 2bf91fab09 Enhance error types 2017-12-25 17:59:50 +01:00
Matthias Beyer 0870665668 Add iterator extension for iterators over Result<T, E> 2017-12-24 13:52:50 +01:00
Matthias Beyer 67410b3ad2 Implement iter extension for all iterators over StoreId 2017-12-24 13:52:50 +01:00
Matthias Beyer 0ed636bb06 Refactor libimagrt+libimagstore to pass whole configuration object
Before we extracted the store configuration from the configuration
toml::Value object and passed it to the store.

This is unecessary overhead.

Now we pass the whole configuration object and let the store extract the
required values.
2017-12-24 13:52:18 +01:00
Matthias Beyer 174d8d76e9 Remove configuration member, reduce configuration
We only need the configuration to check whether creating the store
directory is actually allowed.
2017-12-24 13:52:13 +01:00
Matthias Beyer 38b56df406 Add new dependency: toml-query 2017-12-24 13:52:13 +01:00
Matthias Beyer af67ff51c8 Remove accidentially slipped-in println!() 2017-12-06 19:51:02 +01:00
Matthias Beyer 77f93e77f0 Fix syntax 2017-11-18 12:28:20 +01:00
Matthias Beyer 23820e322e
Merge pull request #1157 from matthiasbeyer/imag-location-from-env
Try to get RTP from IMAG_RTP
2017-10-31 16:24:51 +01:00
Matthias Beyer dc26f8c20c
Merge pull request #1156 from matthiasbeyer/store-verify-from-cli-app
Move verify implementation from Store to CLI interface
2017-10-31 15:47:57 +01:00
Matthias Beyer 4250241f18 Try to get RTP from IMAG_RTP 2017-10-31 15:30:29 +01:00
Matthias Beyer 82c30edcee Simplify matching 2017-10-31 15:04:07 +01:00
Matthias Beyer 131881cd01 Use ? operator instead of try!() macro 2017-10-31 15:04:07 +01:00
Matthias Beyer a20871eb5e Add badges in Cargo.toml of all crates 2017-10-31 15:03:30 +01:00
Matthias Beyer 5d76e7bafa Use ? operator instead of try!() macro 2017-10-31 15:03:30 +01:00
Matthias Beyer 2855a89e24 Move verify implementation from Store to CLI interface 2017-10-31 13:11:34 +01:00
Matthias Beyer eca7219039 Rewrite configuration providing in runtime
Before the configuration object (the raw TOML object) was provided via a
wrapper object `Configuration`. This was ugly and not very nice to use.

Now, we only have the `toml::Value` object we lend out from
`Runtime::config()`.

The changes included libimagrt internal rewrites, which are not visible
to the user. Anyways, this change changes the API for config-fetching
from the runtime, so fixes for all other crates may follow.

The changes also removed the support for reading the "editor" setting
from the configuration file, which was not used anyways (in the example
imagrc.toml file).
The CLI-reading and ENV-reading are still supported, though.
2017-10-31 09:25:14 +01:00
Matthias Beyer e7aa5af9be Merge pull request #1149 from matthiasbeyer/libimagrt/remove-logging-format-overrides
Remove override functionality for logging formats
2017-10-16 10:11:28 +02:00
Matthias Beyer e5d93f5ff3 Remove override functionality for logging formats 2017-10-16 00:47:42 +02:00
Matthias Beyer e43b524420 Merge pull request #1150 from matthiasbeyer/libimagrt/override-logging-with-debug-flag
Fix: Overide logging with --debug
2017-10-15 23:28:10 +02:00
Matthias Beyer 16b5652fdd Remove accidentially slipped-in println 2017-10-15 19:49:06 +02:00
Matthias Beyer 817933c99f Fix: Overide logging with --debug
Formerly, the --debug flag was ignores. This change overrides the
logging with the CLI specified logging if it was provided.

If --debug was provided, the logging is set to debugging, if --verbose
was provided info logging is used.
2017-10-15 19:48:06 +02:00
Matthias Beyer 23f4d7948f Fix Store::entries() to not yield directories
Before the iterator did also yield storeids for directories, which was a
bug.

This change introduces a new if_file() function in the store-internal
backend, which is needed to check whether a path actually points to a
File, be it inmemory or on the real filesystem.

That's because tests might fail if they check via PathBuf::is_file() as
in tests, the entries only exist inmemory.
2017-10-13 14:26:06 +02:00
Matthias Beyer 758166637b Update toml-query: 0.3.* -> 0.4
This update is needed for the error-chain update, as the toml-query
0.4.0 release also bumps this dependency.
2017-10-12 22:13:04 +02:00
Matthias Beyer 663242db7e Update dependency: error-chain: 0.10 -> 0.11 2017-10-12 22:12:27 +02:00
Matthias Beyer 3ed9c1fcc8 Merge pull request #1131 from matthiasbeyer/libimagerror/trace-and-unwrap-helper
Add helper for tracing error and exit or unwrap the value
2017-10-12 22:08:48 +02:00
Matthias Beyer 67a127f700 Update dependency: itertools: 0.6 -> 0.7 2017-10-12 19:45:50 +02:00
Matthias Beyer bb26d1c895 Update dependency: ansi_term: 0.9 -> 0.10 2017-10-12 19:44:33 +02:00
Matthias Beyer eb4681bf65 Add helper for tracing error and exit or unwrap the value 2017-10-12 19:02:37 +02:00
Matthias Beyer d044e7a928 Add helper functions to register all helpers 2017-10-12 18:46:58 +02:00
Matthias Beyer eb07bce1d0 Move handlebars custom helpers to libimaginteraction 2017-10-12 18:46:58 +02:00
Matthias Beyer f266791142 Add multi-destination logging to logger
The logger was not able to handle multiple destinations before. Now it
is possible for the logger.

The file must be held behind an Arc<Mutex<_>> so we can use the logging
from multiple threads but also because we need to borrow mutably, so
that bit changes whith this commit.
2017-10-08 18:08:51 +02:00
Matthias Beyer b587bbbdc1 Fix: Create directory before renaming file 2017-10-01 01:59:41 +02:00
Matthias Beyer 24210c0068 Add some debug output 2017-10-01 01:59:13 +02:00
Matthias Beyer 169107d569 Remove FoldResult 2017-09-30 10:45:10 +02:00
Matthias Beyer 73f6016221 Update version strings: 0.4.0 -> 0.5.0 2017-09-24 13:05:01 +02:00
Matthias Beyer 555c0bb1df Fix Walkdir depth
From the documentation of Walkdir::min_depth():

    Set the minimum depth of entries yielded by the iterator.

    The smallest depth is 0 and always corresponds to the path given to
    the new function on this type. Its direct descendents have depth 1,
    and their descendents have depth 2, and so on.

This means that when we started with "/tmp/store", we end up yielding
that exact path in the first iteration. This is exactly what we do _not_
want.

Setting the minimal depth to 1 fixes this bug.
2017-09-21 16:31:25 +02:00
Matthias Beyer 5a868015e6 Merge pull request #1098 from matthiasbeyer/libimagstore/glob-iter-early-error
Return glob errors instead of tracing internally
2017-09-21 09:29:34 +02:00
Matthias Beyer c6e94dfd3c Return glob errors instead of tracing internally
This changes the internal GlobStoreIdIterator to return Result<StoreId>,
which gives us the possibility to aggregate errors in the
Store::retrieve_for_module() function and return them instead of tracing
them from the store.

The changes the internals to actually fetch the whole list of storeids,
which is unfortunate of course, but changing the interface is not an
option here, in my opinion.

At least we're only aggregating pathes, so the memory usage is pretty
low here.
2017-09-20 22:42:11 +02:00
Matthias Beyer 8bbaeeef45 Fix: Store::delete() should check FS as well
This patch fixes a problem where the Store::delete() function only
checked the store-internal cache whether an entry exists, but not the
Filesystem. After this patch is applied, the Store::delete() function
also checks the filesystem whether the entry exists.
2017-09-20 22:24:59 +02:00
Matthias Beyer e2bf6c48ef Merge pull request #1096 from matthiasbeyer/fix-log-output
Register the no-escape escape functionality in handlebars
2017-09-20 22:00:53 +02:00
Matthias Beyer de69d31a58 Register the no-escape escape functionality in handlebars
Before, handlebars automatically applied html escaping, which resulted
in <>'& beeing escaped. But we don't need to escape for terminal output.
2017-09-20 19:12:08 +02:00
Matthias Beyer 79b6c26502 Serialize TOML pretty 2017-09-20 18:38:31 +02:00
Matthias Beyer c558addbd6 Add debug/trace output in Store 2017-09-20 12:05:44 +02:00
Matthias Beyer 162b36d6ee Update dependency specs
Most notably:

* env_logger: 0.4 -> 0.5
* hoedown: 5.0.0 -> 6.0.0
* itertools: 0.5 -> 0.6
* lazy_static: 0.1.15 -> 0.2
* regex: 0.1 -> 0.2
* semver: 0.5 -> 0.8
* url: 1.2 -> 1.5
* uuid: 0.3 -> 0.5

(This list is most surely not complete)
2017-09-19 17:16:19 +02:00
Matthias Beyer a01a2c18f8 Check in Store::move_by_id() whether target exists, not only in cache but also on FS 2017-09-17 15:44:19 +02:00
Matthias Beyer 29e1107d3e Add file abstraction function to check whether path exists 2017-09-17 15:43:57 +02:00
Matthias Beyer 22b9f8ecdd Do not insert the links array in the core header 2017-09-16 19:44:09 +02:00
Matthias Beyer 8b8e4e9c6e Minify iterator helper implementation 2017-09-15 13:17:12 +02:00
Matthias Beyer fce5df48c8 Add simple iterator helpers for StoreIdIterator -> CRUD Iterator 2017-09-15 13:07:49 +02:00
Matthias Beyer 53c7d602eb Merge pull request #1062 from matthiasbeyer/libimagstore/error-opt
libimagstore: Optimize errors
2017-09-10 11:45:59 +02:00
Matthias Beyer 785e17a4a3 Add param to StoreIdHasNoBaseError 2017-09-10 10:48:51 +02:00
Matthias Beyer a670172880 Add param to StoreIdLocalPartAbsoluteError 2017-09-10 10:48:50 +02:00
Matthias Beyer b772908697 Add params to EntryRenameError 2017-09-10 10:48:50 +02:00
Matthias Beyer 2ce2ba54da Replace GlobError with link to ::glob::PatternError 2017-09-10 10:48:50 +02:00
Matthias Beyer 6aa695974c Add param to EntryAlreadyExists error 2017-09-10 10:48:50 +02:00
Matthias Beyer 126aa75a2c Add param to ConfigTypeError 2017-09-09 22:24:58 +02:00
Matthias Beyer 307165d1b2 Remove ConfigReadError because ::toml_query::error::Error is now linked in 2017-09-09 22:15:18 +02:00
Matthias Beyer a015b07f6a Remove TomlReadError by linking in ::toml_query::error::Error 2017-09-09 22:09:36 +02:00
Matthias Beyer 4849cc4822 Remove TemplateStringRegistrationError by linking in handlebars error type 2017-09-09 22:04:32 +02:00
Matthias Beyer 83f9350d98 Add param to EntryAlreadyBorrowed error 2017-09-09 21:59:36 +02:00
Matthias Beyer a28613b889 Add param to StorePathCreate 2017-09-09 21:59:36 +02:00
Matthias Beyer ff8569809b Add parameter to StorePathExists error 2017-09-09 21:59:36 +02:00
Matthias Beyer 78db822917 Remove unused error type 2017-09-09 21:59:36 +02:00
Matthias Beyer ca9123c740 Add parameter to IdNotFound error 2017-09-09 21:27:10 +02:00
Matthias Beyer b682e7f8db Remove warning which is printed by the store 2017-09-09 21:14:08 +02:00
Matthias Beyer 21440d58aa Remove outdated comment 2017-09-09 21:13:38 +02:00
Matthias Beyer 3d8f75300d Remove unecessary error chaining 2017-09-09 21:13:21 +02:00
Matthias Beyer 976f280511 Update toml-query: 0.3.* -> ^0.3.1
This release contains a bugfix for a critical bug in the
`TomlValueInsertExt::insert()` algorithm which was triggered by an
edgecase.
2017-09-06 19:30:32 +02:00
Matthias Beyer b10d63c134 Rewrite Store::entries() implementation
As we rely on the filesystem in Store::entries(), which is a bug and
shouldn't be done, we rewrite this function and use the file_abstraction
framework.
2017-09-06 16:11:19 +02:00
Matthias Beyer c115215fa4 Merge branch 'master' into libimagerror/integration
This merge solved a _LOT_ of conflicts and was a rather complicated one,
as parts of the conflict-resolution involved rewriting of half the
stuff.

This merge commit fixes all the things so a `cargo check --all`
succeeds, but I did not yet check whether tests run without failure.
2017-09-04 23:02:45 +02:00
Matthias Beyer 7ce44e8090 Remove "IntoError" trait, use error_chain functionality 2017-09-03 21:34:07 +02:00
Matthias Beyer 28d7085b2d Remove error_chain dependency, not needed 2017-09-03 21:33:55 +02:00
Matthias Beyer b6909a2c86 libimagrt: Rewrite error handling 2017-09-03 21:33:54 +02:00
Matthias Beyer 2df99524e7 libimagstore: rewrite error handling code 2017-09-03 21:33:54 +02:00
Matthias Beyer 603808a9fa Impl IntoError for error kinds 2017-09-03 15:42:06 +02:00
Matthias Beyer 9713a4632c Remove error_gen module entirely 2017-09-03 15:42:06 +02:00
Matthias Beyer a309fdb280 Add recursion limits to crates 2017-09-03 15:42:06 +02:00
Matthias Beyer 11d881d3a9 Add dependency to crates: error_chain = 0.10 2017-09-03 15:42:06 +02:00
Matthias Beyer e77d353c52 Rewrite macros to do error-chain behind the scenes 2017-09-03 15:42:03 +02:00
Matthias Beyer 4908cc6aaa Add more helpers 2017-09-03 13:48:05 +02:00
Matthias Beyer 0683bf198b Fix recursion problem 2017-09-03 13:48:05 +02:00
Matthias Beyer 93444be412 Light code cleanup 2017-09-03 13:48:05 +02:00
Matthias Beyer 64f96092cd Fix aggregation 2017-09-03 13:48:05 +02:00
Matthias Beyer 482377abb9 Actually print error here (as logging isnt initialized at this point) 2017-09-03 13:48:05 +02:00
Matthias Beyer 5ec1cd48a0 Implement format-fetching from config/cli 2017-09-03 13:48:05 +02:00
Matthias Beyer ae24954020 Implement templating 2017-09-03 13:48:05 +02:00
Matthias Beyer 2c66dcdf37 Rewrite logging: Types
This is the first part of a series of patches that reimplements the
logging backend to be more powerful and configurable.

This first patch adds types and infrastructure to be able to implement a
powerful logging abstraction.

It does not implement much functionality, except for a check whether a
module is enabled or not when logging (if configured in the config
file).
2017-09-03 13:48:05 +02:00
Matthias Beyer ab06263507 Add store extraction to Runtime
This is necessary to be able to re-build a Runtime object with an new
set of "commandline arguments". For example if a test wants to test two
calls to imag, for example a "add" operation followed by a "remove" operation.

These functions are feature-gated therefor and should only be used in
tests.
2017-09-02 10:42:11 +02:00
Matthias Beyer 048517a3c2 Fix readme links in cargo metadata 2017-09-01 18:48:02 +02:00
Matthias Beyer a710a5b72b Remove unused variable 2017-08-31 10:57:19 +02:00
Matthias Beyer ac804bd839 Remove unused keyword "mut" where not needed 2017-08-31 10:57:11 +02:00
Matthias Beyer ae5255c7c7 Remove unused crate imports
This patch removes unused crate imports reported by newer rust versions.

Some crates were only required for tests, some only for tests with
macro_import - these things were fixed with feature gates.
2017-08-31 10:56:15 +02:00
Matthias Beyer c987130cc1 Merge pull request #1018 from matthiasbeyer/remove-toml-ext
Remove toml ext
2017-08-28 14:10:40 +02:00
Matthias Beyer c0c62bd1b5 Change crates to use toml-query crate 2017-08-28 12:22:37 +02:00
Matthias Beyer 3024fefcb9 Remove toml_ext module 2017-08-28 12:22:13 +02:00
Matthias Beyer 43ca0b43b1 Move "Header" trait for toml::Value to store module 2017-08-28 12:22:13 +02:00
Matthias Beyer d0f8002682 Ensure deny() for warnings is in all crates 2017-08-27 20:08:03 +02:00
Matthias Beyer 2fcead5f53 Fix broken README symlinks
Along: Add files in documentation for modules that not yet had one.
2017-08-27 15:13:25 +02:00
Matthias Beyer 59a3662ac4 Reorganize code in subdirs 2017-08-27 15:12:09 +02:00