Commit graph

218 commits

Author SHA1 Message Date
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
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
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
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
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
87d6f1221f Add testcase for reading multiple lines 2018-03-02 21:48:13 +01:00
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
1521005e79
Merge pull request #1307 from matthiasbeyer/libimagstore/entry-parse-fix
Rewrite entry parsing algorithm
2018-02-20 22:03:00 +01:00
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
732fc32b75 Fix trace count space width
Was five here, but should be four.
2018-02-20 20:24:27 +01:00
00b86709b6 Use writeln!() instead of write!() 2018-02-20 19:24:34 +01:00
7653a040da
Merge pull request #1294 from matthiasbeyer/libimagstore/store-debug-fix
Simplify Store debug impl
2018-02-19 12:27:37 +01:00
5f99018807 Simplify store debug print 2018-02-19 11:51:21 +01:00
c2dfb2ef52 Refactor timetrack subcommands output for broken pipe errors 2018-02-19 11:14:18 +01:00
6a341d3723 Abstract exit code as a type 2018-02-19 11:14:18 +01:00
256bc47222 Refactor into two independent extensions 2018-02-19 10:40:26 +01:00
39107c5296 Add result extension for translating io errors to exit codes 2018-02-19 10:40:26 +01:00
841d3ffb60 Remove OnErr extension which is not used 2018-02-18 20:04:22 +01:00
3341e3640c
Merge pull request #1224 from matthiasbeyer/git-version-in-version
Git version in version
2018-02-18 20:03:09 +01:00
3bd8822f4f Use version string from git, if present 2018-02-13 11:53:51 +01:00
f5f4fbc397 Add buildscript and infrastructure to include git information in version 2018-02-13 11:38:34 +01:00
5b07baddf8 Add error convenience extension 2018-02-12 21:22:39 +01:00
074f9826fd Implement own displaying implementation for the chain 2018-02-12 21:19:48 +01:00
503b042690 Adapt libimagrt to new error handling 2018-02-12 21:19:47 +01:00
6dd24f3da3 Keep trace_error{,_dbg} for backwards compatibility 2018-02-12 21:19:47 +01:00
e481dbfd12 Rewrite libimagerror to be thin layer over error-chain 2018-02-12 21:19:47 +01:00
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
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
30d2c28a22 Update version string: 0.6.0 -> 0.7.0 2018-02-11 14:22:24 +01:00
8fcd2a6c8c Prettify Store debug output implementation 2018-02-11 13:36:37 +01:00
fa8af0c053
Merge pull request #1275 from matthiasbeyer/clap-features
Clap features
2018-02-11 13:29:17 +01:00
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
8656a38c50 Update dependency: clap: 2.17 -> 2.29 2018-02-10 16:40:34 +01:00
9d2900a7dc Compile clap with suggestions and color support 2018-02-10 16:40:34 +01:00
d5a9e4930d Update dates in license header
And add missing header in one file
2018-02-07 02:48:53 +01:00
de613c9ebd
Merge pull request #1227 from matthiasbeyer/libimagentryutil/filtered-iterators
libimagentryutil: filtered iterators
2018-02-01 20:22:12 +01:00
06cb8d50fb Make StoreId::is_in_collection() generic over AsRef<str> 2018-02-01 16:46:57 +01:00
b3f546129a Add StoreIdIteratorWithStore::without_store() 2018-02-01 16:46:38 +01:00
8e931cd79f Change calls to into_get_iter() to not take argument 2018-02-01 16:46:38 +01:00
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
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
164b6b7f10 Move documentation to appropriate place 2018-01-29 09:38:32 +01:00
7731b88c97 Remove map_err_trace_exit() calls in favour of map_err_trace_exit_unwrap() 2018-01-29 09:38:32 +01:00
fcfc397fc8 env_logger: 0.5.0-rc.2 -> 0.5 2018-01-18 14:15:40 +01:00
8d9c7dce4f env_logger: 0.5.0-rc.1 -> 0.5.0-rc.2 2018-01-15 11:22:09 +01:00
635d000344 log: 0.4.0-rc.1 -> 0.4.0 2018-01-15 11:21:52 +01:00
c45130ddd0 env_logger: 0.4.* -> 0.5.0-rc.1 2018-01-15 11:20:27 +01:00
0aba7d2939 Adapt libimagrt for new log setup 2018-01-15 11:20:07 +01:00
f209e12410 Update dependency: log: 0.3.* -> 0.4.0-rc.1 2018-01-15 11:20:07 +01:00
3ef5fcfab6 libimagstore: Replace read with typed read 2018-01-13 01:14:03 +01:00
febecd85e5 libimagrt: Replace read with typed read 2018-01-13 01:14:03 +01:00
0c4be78223 Update dependency: toml-query -> 0.6 2018-01-13 01:14:03 +01:00
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
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
d5ce99b170 Refactor toml destructure matching.
Use accessor functionality and function chaining now.
2018-01-05 11:37:09 +01:00
4184a1e5d0 Replace matching with function chaining 2018-01-05 11:37:09 +01:00
fa8ac03701 Replace matching with function chaining 2018-01-05 11:37:09 +01:00
7d1d41884c Replace matching with function chaining 2018-01-05 11:37:09 +01:00
529f3f83da
Merge pull request #1187 from matthiasbeyer/libimagerror/display-fix
Improve error output
2018-01-01 20:47:24 +01:00
774933ae4a
Merge pull request #1163 from matthiasbeyer/libimagstore/mighty-iters
libimagstore: More powerful iterator extensions
2017-12-25 22:02:56 +01:00
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
0ae7b6b387 Do not call description() when displaying the error 2017-12-25 19:44:29 +01:00
46a8d373b3 Allow dead code in whole module 2017-12-25 19:23:41 +01:00
7d67b67440 Update version strings in tests 2017-12-25 19:17:07 +01:00
3c8dd19d11 Update version strings: 0.5.0 -> 0.6.0 2017-12-25 19:17:07 +01:00
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
35410aaa2e Refactor: Remove unneccessary functions 2017-12-25 17:59:50 +01:00
20a552f527 Refactor header checking to use toml-query 2017-12-25 17:59:50 +01:00
2bf91fab09 Enhance error types 2017-12-25 17:59:50 +01:00
0870665668 Add iterator extension for iterators over Result<T, E> 2017-12-24 13:52:50 +01:00
67410b3ad2 Implement iter extension for all iterators over StoreId 2017-12-24 13:52:50 +01:00
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
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
38b56df406 Add new dependency: toml-query 2017-12-24 13:52:13 +01:00
af67ff51c8 Remove accidentially slipped-in println!() 2017-12-06 19:51:02 +01:00
77f93e77f0 Fix syntax 2017-11-18 12:28:20 +01:00
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
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
4250241f18 Try to get RTP from IMAG_RTP 2017-10-31 15:30:29 +01:00
82c30edcee Simplify matching 2017-10-31 15:04:07 +01:00
131881cd01 Use ? operator instead of try!() macro 2017-10-31 15:04:07 +01:00
a20871eb5e Add badges in Cargo.toml of all crates 2017-10-31 15:03:30 +01:00
5d76e7bafa Use ? operator instead of try!() macro 2017-10-31 15:03:30 +01:00
2855a89e24 Move verify implementation from Store to CLI interface 2017-10-31 13:11:34 +01:00
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
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
e5d93f5ff3 Remove override functionality for logging formats 2017-10-16 00:47:42 +02:00
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
16b5652fdd Remove accidentially slipped-in println 2017-10-15 19:49:06 +02:00
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
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
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
663242db7e Update dependency: error-chain: 0.10 -> 0.11 2017-10-12 22:12:27 +02:00
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
67a127f700 Update dependency: itertools: 0.6 -> 0.7 2017-10-12 19:45:50 +02:00
bb26d1c895 Update dependency: ansi_term: 0.9 -> 0.10 2017-10-12 19:44:33 +02:00
eb4681bf65 Add helper for tracing error and exit or unwrap the value 2017-10-12 19:02:37 +02:00
d044e7a928 Add helper functions to register all helpers 2017-10-12 18:46:58 +02:00
eb07bce1d0 Move handlebars custom helpers to libimaginteraction 2017-10-12 18:46:58 +02:00
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