Commit graph

992 commits

Author SHA1 Message Date
0d1cfb6b4b Refactor: Do not provide functions for these identifiers
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-07-26 23:20:50 +02:00
flip1995
2c26fd2753 Fix Hash vs PartialEq bug found by Clippy
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-07-26 23:05:09 +02:00
9c896eb98b Add checks whether variables are valid unicode and propagate appropriate error
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-07-25 19:52:49 +02:00
5f10ab976f Rewrite get_rtp_match() to not panic
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-07-24 21:32:21 +02:00
ba77f5e8ba Add cli validators for date and datetime 2019-07-14 12:29:31 +02:00
8bf6e66d41 Fix for update to new version of mdcat
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-07-09 21:28:29 +02:00
c09c5b8bad Remove use of Itertools
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-30 19:27:54 +02:00
2185d44011 Update all dependencies
This patch updates all dependencies but not "nom".

Done with `cargo upgrade --all` and manual editing.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-30 16:44:23 +02:00
6b8c236b67 Merge branch 'libimaghabit-dont-copy-comment-to-instance' into master 2019-06-30 13:14:36 +02:00
f3c41915fd Do not create comment in habit instance
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-30 11:34:50 +02:00
191b535479 Change HabitInstance implementation to not contain comment in instance
This patch changes the HabitInstance implementation so that the comment
is not expected to exist in the instance object itself.

This is done for less data duplication.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-30 11:31:49 +02:00
a21d4b7122 Add DiaryId::get_date_representation() function
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-30 10:56:55 +02:00
0d5027051d Fix: Location of tags should not change in the refactoring
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
bd564ad209 Add tests
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
3eff42be5a Update dependency: toml-query: 0.9.2 for index-out-of-bounds fixes
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
ae9fbe866f Add test whether setting tags works
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
c5519da011 Tagable should not be implemented for Value
Oh my dear, what was I thinking?

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
51dad94cc9 Simplify implementation of has_tags()
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
08ba6c68a6 Remove unused imports
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
59bea23004 Simplify implementation of has_tag()
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
87bfb422dc Simplify implementation of remove_tag()
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
e95a4cd15d Simplify implementation of add_tag()
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
061c5beb85 Simplify implementation of set_tags()
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
2ef57a69ed Simplify implementation using toml-query Partial
This patch rewrites the get_tags() function to use toml_query::read::Partial.

The helper functions is_tag_str and is_tag are rewritten for
compatiblity.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-29 21:36:59 +02:00
1047a06a64 Add trace output
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-26 20:27:38 +02:00
8912939e29 libimagentrylink: Add debugging output
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-26 20:27:35 +02:00
99da4b777a Rename module: timetrackingstore -> store 2019-06-26 20:27:06 +02:00
0eac6d9931 Add support for directional links
This patch adds support for directional links in libimagentrylink.

A directional link is added to the same header as the "internal" links,
which are unidirectional.

The "outgoing" link is added in "links.to", the "incoming" links are
added to "links.from".

This way we can always traverse all linkage. The `Linkable::links()`
method is changed to always return _all_ link.
The `Link` type was extended for notions of "to" and "from" links.

Also adds testing.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-26 20:26:41 +02:00
c9414d944d Fix expected link in test
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-23 21:43:07 +02:00
64b1d9c79c Add more debug output 2019-06-23 21:07:32 +02:00
45d0d2d3bb Add test whether adding an URL works
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-23 21:07:29 +02:00
ad3c2c6249 Rewrite UrlLinker
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-23 21:07:13 +02:00
ed8546c7dd Reimplement link module with header Partial
This patch reimplements the "link" module using the
`toml_query::read::Partial` feature.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-23 21:06:45 +02:00
cdc90f7be7 Refactor: Remove notion of "external link"s
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-23 13:11:49 +02:00
59ddb70345 Fix: Make sure links are sorted and deduplicated 2019-06-23 11:06:19 +02:00
d89a700fd1 Remove annotateable linking
This patch removes the annotateable linking feature from libimagentrylink.
It was not used anyways.

Also, this patch rewrites the complete linking code to use the
toml-query "typed" feature rather than constructing everything by
itself.

This removes a lot of unmaintainable boilerplate code.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-23 10:35:14 +02:00
11c2cab916 Allow unused variable here 2019-06-22 12:00:07 +02:00
1ffdb72315 Remove obsolete (internal) function 2019-06-22 12:00:02 +02:00
5dc6829354 Rename module: linker -> linkable
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-21 23:22:48 +02:00
ef17930c29 Rename interface
With this patch, the libimagentrylink library interface gets renamed.

The trait gets renamed to the more descriptive name "Linkable", the
functions get renamed to not contain any notion of "internal" anymore.

This patch also adapts the whole source tree for the new libimagentrylink
interface, also renaming variables to not contain "_internal_" anymore.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-06-21 23:22:47 +02:00
f21b6e53a2 Merge branch 'libimagentrylink-split' into master 2019-06-15 16:48:50 +02:00
2268fd8091 Import toml-query with typed feature
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-31 12:48:00 +02:00
901502b67e Split "internal" module into several submodules
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-31 12:48:00 +02:00
d02d53594e Fix debug output message 2019-05-31 12:48:00 +02:00
d2a5e8fb59 Rename functions: *_external_link -> *_url
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-31 12:48:00 +02:00
7f2e4c8442 Adapt tested path 2019-05-31 12:48:00 +02:00
8b66672772 Fix libimagentrymarkdown for new url lib 2019-05-31 12:48:00 +02:00
8a5bc09b62 Fix libimagbookmark for new url library 2019-05-31 12:48:00 +02:00
c33c29e8e2 Fix import for new libimagentryurl lib
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-31 12:48:00 +02:00
098d25db89 Move code from external libimagentrylink module to libimagentryurl
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-31 12:48:00 +02:00
5cb641044f Add libimagentryurl
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-30 17:51:33 +02:00
3e22fbe352 Fix imports for new viewer interface
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-30 11:12:44 +02:00
11955f699f Change interface of Viewer to propagate io errors
Because we need to catch errors that are caused by a borken pipe when
writing to stdout (for example), this patch changes the interface of the
Viewer trait to return an error enum that can be used to check whether
an IO error happened.

The calling code can then decide whether to ignore a broken pipe error
or whether to handle it properly.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-30 11:12:43 +02:00
151e4d0aa8 Replace deprecated functioncall
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-30 10:09:43 +02:00
5f5ce54edb Rewrite to use derive macro
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-30 09:39:22 +02:00
a3f771ca65 Add comment why we do this
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-30 09:32:07 +02:00
fb8b50fa9a Remove boilerplate by enabling serde in "log" dependency
This patch adds the "serde" feature to the "log" dependency, so we can
deserialize logging levels directly into "log" types.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-30 09:32:07 +02:00
185ec25b9e 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>
2019-05-30 09:32:07 +02:00
a7d53e47d1 Update toml-query to 0.9.0
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-29 18:39:25 +02:00
1482f70320 Update dependency: toml: 0.4 -> 0.5
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-29 18:39:25 +02:00
1c6b02454c Remove unused functions 2019-05-25 10:43:24 +02:00
b18c3e0361 Remove ununsed sourcefile
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-25 10:43:24 +02:00
5ff2c3e8e3 Remove lazy_static
we don't need lazy static here, so remove it and the dependency as well.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-25 10:43:24 +02:00
Leon Schuermann
ed457495c8 Introduce proper error handling in IdPathProvider
Prior to this change, the IdPathProvider implementation would be
responsible for exiting the process on insufficient / wrong arguments.
However, such error handling should be performed together with the
business logic and not in CLI-parsing related code.

This change introduces a clear separation: both parsing errors and
insufficient id path arguments can now be return from inside the
`get_ids`-method, and get passed up to the application logic to be
handled.

This change is reflected in all instances of IdPathProvider and their
surrounding code.

Signed-off-by: Leon Schuermann <leon.git@is.currently.online>
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-24 21:03:34 +02:00
5c8af4460e Fix: Entries::in_collection() should be able to return error
This patch changes the Entries::in_collection() interface to return a
Result<()>. This is needed because the fs backend implementation should
be able to check whether a directory actually exists whenever we change
the iterator.

If the implementation detects that the directory does not exist, we can
fail early and error out.

All usages of the interface are adapted by the patch as well.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 13:37:46 +02:00
5a250bd991 Remove InternalLinker::set_internal_links()
This function needs to be removed because of the following problem:

When linking from one entry to another, and then removing the link in
the first entry with ::set_internal_links(vec![]), we end up with a
dangling link in the second entry, because the ::set_internal_links()
function does not take care of removing the links in the "other"
entries.

Actually, it is not even able to do so, because it would need to
`Store::get()` those entries, but it does not have access to the store.

Adding a `store` parameter to the function would be possible, but only
increase its complexity unnecessarily. This is why I opt for removing
this function (which is btw not used once in the whole imag codebase).

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 02:31:03 +02:00
d034a6f0e2 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
27b75ba2fc Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
5ebbcb774a Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
b808658648 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
f540a317b0 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
c02b2f88de Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
c7ea58eda2 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
d8bcb8ca8e Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
f44e10e295 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
322c063450 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
6e0a179550 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
740729bfda Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
06e78c75de Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
99ee4fdf43 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
26de159415 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
3321b9a643 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
e200e40070 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:55:10 +02:00
1f97584738 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:54:35 +02:00
741e8acb8a Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:54:35 +02:00
5f07d7d21a Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:54:35 +02:00
112a2d6af8 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:53:40 +02:00
00fa3e7b78 Add more context in error messages
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:53:40 +02:00
c7f5420c1d Change is_log() implementation to use kindflag utility
This patch changes the Log::is_log() implementation for Entry to use the
provide_kindflag_path!() infrastructure.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:52:13 +02:00
9f100f2f75 Fix: Do not write newline character when asked not to do
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:52:13 +02:00
1d89844613 Run 'cargo fix' for rust-2018
With this patch we move the codebase to Rust-2018.

The diff was generated by executing

    cargo fix --all --all-features --edition

on the codebase.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-05-18 00:20:59 +02:00
26664a5aec Merge branch 'libimagentryref-override-base' into master 2019-04-22 14:40:30 +02:00
427eac76fe Add Ref::get_path_with_basepath_setting()
This function can be used to override the basepath setting from the
header of the entry so that another basepath is used for looking
up/constructing the actual filepath.

This might come in handy at some point.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 14:40:07 +02:00
ff5e6653ed Add option to override ref data in contact entries
This patch adds a flag to the ContactStore::retrieve* functions so one
can override the ref data in the store for the retrieved entry.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 14:37:43 +02:00
99576bf5bc Merge branch 'remove-libimagnotification' into master 2019-04-22 14:28:23 +02:00
1c851bbb79 Rewrite store interface abstraction
Because we pull in libimagentryref here to create actual references to
the files we parse here, we need to rewrite the interface to be able to
pass the required information to the libimagentryref API.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 14:26:56 +02:00
204da1b0bd Remove libimagnotification
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 14:05:55 +02:00
cf234437d7 Implement Partial for Config
With this implemented, we can fetch the appropriate configuration easily
from the configuration.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 13:06:26 +02:00
2854e88dcc Rename: "ref.collection" to "ref.basepath"
The setting in the header should reflect the name of the setting in the
configuration file, for a better user experience.

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 13:06:26 +02:00
7ae2d926cc Use toml-query master branch during development
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-04-22 13:06:26 +02:00