Matthias Beyer
3e22f425b8
Update dependencies
...
ansi_term: 0.10 -> 0.11
regex: 0.2 -> 1
2018-10-06 12:21:20 +02:00
Matthias Beyer
c162856a21
Update dependencies
...
regex: 0.2 -> 1
semver: 0.8 -> 0.9
walkdir: 1 -> 2
2018-10-06 12:21:20 +02:00
Matthias Beyer
989ca3dba8
Update dependencies: regex: 0.2 -> 1, tempfile: 2 -> 3
2018-10-06 12:21:20 +02:00
Matthias Beyer
e34d67d0a1
Update dependency: ansi_term: 0.10 -> 0.11
2018-09-30 15:05:10 +02:00
Matthias Beyer
1c3bc5951f
Update dependency: ansi_term: 0.10 -> 0.11
2018-09-30 15:04:51 +02:00
Matthias Beyer
d9e4eaad3c
Update kairos to master branch
...
Because of the new error-chain version which kairos can depend on, for
which kairos is not yet released.
2018-09-27 15:05:45 +02:00
Matthias Beyer
1fa9b86531
Update dependency: lazy_static: 0.2 -> 1
2018-09-27 15:05:45 +02:00
Matthias Beyer
e838f0d0e7
Update dependency: handlebars: 0.29.0 -> 1.0
2018-09-27 15:05:45 +02:00
Matthias Beyer
f97d9e0d96
Temporarily set vobject to custom fork until we have a new release
2018-09-27 15:05:45 +02:00
Matthias Beyer
946d9891e4
Update dependency: vobject: 0.{4,5} -> 0.6
2018-09-27 15:05:45 +02:00
Matthias Beyer
61738ac9ee
Revert "Update dependency: handlebars: 0.29.0 -> 1.0"
...
This reverts commit a1f0872486995b80216e8a08a2176debdef3752a.
As updating handlebars needs some more involvement, we roll back to the
version we use currently and schedule the update for later.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-09-27 15:05:45 +02:00
Matthias Beyer
c65e73acc8
Update dependency: kairos: 0.1 -> 0.2
2018-09-27 15:05:45 +02:00
Matthias Beyer
abf6a3c384
Update dependency: handlebars: 0.29.0 -> 1.0
2018-09-27 15:05:45 +02:00
Matthias Beyer
764a019817
Update dependency: log: 0.3 -> 0.4
2018-09-27 15:05:45 +02:00
Matthias Beyer
3d12998603
Update dependency: toml-query: 0.6 -> 0.7
2018-09-27 15:05:44 +02:00
Matthias Beyer
0a7afee454
Update dependency: error-chain: 0.11 -> 0.12
2018-09-27 15:05:25 +02:00
Matthias Beyer
d4872f6da3
Optimize the Store::entries() interface
...
The previous iterator was implemented to simply fetch _all_ pathes from
the filesystem, no matter what.
With this implementation, this changes. The iterator now has
functionality to optimize the iteration, if only a subdirectory of the
store is required, for example `$STORE/foo`.
This is done via functionality where the underlying iterator gets
altered.
First of all, the interface was changed to return a `Entries` object,
which itself only covers the libimagstore-internal `PathIterator` type.
This type was changed so that the backend implementation provides an
"PathIterBuilder`, which builds the actual iterator object for the
`PathIterator` type.
The intermediate `StoreIdConstructingIterator` was merged into
`PathIterator` for simplicity.
The `Entries` type got functionality similar to the
`StoreIdIteratorWithStore` type for easier transition to the new API.
This should probably be removed at a later point, though.
As the `walkdir::WalkDir` type is not as nice as it could be, iterators
for two collections in the store could be built like this (untested):
store
.entries()?
.in_collection("foo")
.chain(store.entries()?.in_collection("bar"))
Functionality to exclude subdirectories is not possible with the current
`walkdir::WalkDir` implementation and has to be done during iteration,
with filtering (as usual).
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-09-27 12:19:18 +02:00
Matthias Beyer
d59dca1a23
Add StoreIdIterator::with_store()
2018-09-27 12:19:18 +02:00
Matthias Beyer
8b508fe4c3
Optimize backend impl to not hold open files
...
This patch changes the filesystem-backend implementation of libimagstore
to open files on each read/write rather than holding the file handle in
memory at all times.
Whenever a lot of imag store entries are read into memory, the imag
process may ran out of file descriptors. With this patch applied, a
`Store::get()` call on an entry which is not yet in the store cache
would cause the file to be read, but the FD being dropped after that.
Likewise, a `Store::update()` (which is also called if the imag entry is
dropped) would re-open the file on the filesystem and write the contents
from the imag store cache back to the file.
With this patch, opening hundrets or thousands of imag entries should be
no problem anymore, only the available memory should be a limit then.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-08-11 17:50:22 +02:00
Matthias Beyer
acdc1e84bc
Merge pull request #1495 from matthiasbeyer/imag-diary/fix-missing-header
...
Imag diary/fix missing header
2018-07-27 20:10:59 +02:00
Matthias Beyer
22d63f0946
Add functionality to create entry at a certain time
2018-07-20 01:37:36 +02:00
Matthias Beyer
aff6ff105d
Remove "Header" extension for Value type
2018-07-19 20:58:27 +02:00
Matthias Beyer
f6a7345b4a
Simplify: Move header verification from Value extension to Entry type
2018-07-19 20:58:27 +02:00
Matthias Beyer
9ad1c8d6bd
Simplify: Move default header generation from Value extension to Entry type
2018-07-19 20:58:27 +02:00
Matthias Beyer
1705ecbbff
Fix: Remove (empty) Drop implementation for Store
...
The StoreEntry drop implementation takes care of unlocking the files.
2018-07-19 20:58:27 +02:00
Matthias Beyer
b774ac0e67
Fix: Deleting an Entry could leave artifacts in cache
...
This patch fixes a bug we did not even hit (yet). It is: When deleting
an Entry from the store, this could potentially leave artifacts in the
cache.
Szenario: An Entry, which was loaded (via `Store::get()` for example),
gets `Store::delete()`ed twice. The first call would work as expected,
but leave the Entry in the Store cache. The second call would then fail,
as the Entry is already removed on the FS, but still in the cache. This
would fail - which is the right thing to do here - but with the wrong
error (with a FileError rather than a FileNotFound error).
This patch fixes this.
First of all, the appropriate `PathBuf` object is calculated in all
cases, as this object is needed to check whether the file is actually
there (which could be the case if the Entry is in the cache and if it is
not).
If the entry is in the cache and is borrowed: error. If not, remove the
entry from the cache. Afterwards the file is deleted on disk.
If the entry is not in the cache, but the file exists, the file is removed.
If the file does not exist: error.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-07-19 20:58:27 +02:00
Matthias Beyer
9315a23754
Fix: Use backend abstraction for checking whether a path exists
2018-07-19 20:58:27 +02:00
newpavlov
04b3e7243d
replaced rust-crypto with RustCrypto crates
2018-07-18 19:51:05 +03:00
Matthias Beyer
54c5854761
Remove unnecessary call
2018-06-23 21:56:03 +02:00
Matthias Beyer
3bdd5c959b
Add documentation to StoreId type
2018-06-23 21:56:03 +02:00
Matthias Beyer
c86e4e7db4
Add documentation for Runtime::init_logger()
2018-06-23 21:56:02 +02:00
Matthias Beyer
8d1022b1ac
Fix: Explicitely use Itertools::flatten()
...
As of rustc 1.26, the `flatten()` method on iterators is preserved by
the rust standard library.
This could cause this code to hard-error some time in the future with
the `flatten()` function actually implemented by the standard library.
Hence we move to use the `Itertools::flatten()` function here
explicitely.
2018-05-11 15:45:42 +02:00
Matthias Beyer
2e41656d1a
Fix comment for rustc 1.26
2018-05-11 14:55:23 +02:00
Matthias Beyer
664edc7943
Update version string: 0.8.0 -> 0.9.0
2018-05-09 11:39:33 +02:00
Matthias Beyer
dd3adcd08d
Merge pull request #1482 from matthiasbeyer/libimagrt/cli-validation
...
libimagrt: cli validation
2018-05-04 13:13:33 +02:00
Matthias Beyer
c65a3d1af9
Add CLI validators in default CLI setup
2018-05-04 11:21:49 +02:00
Matthias Beyer
9bf3f6da1b
Update help
2018-05-04 11:20:09 +02:00
Matthias Beyer
23c3a4b863
Update help, clap does the rest here
2018-05-04 11:19:47 +02:00
Matthias Beyer
2e2bce77a0
Add functionality to remove categories
2018-05-04 11:09:20 +02:00
Matthias Beyer
eb20a9d881
Merge pull request #1477 from matthiasbeyer/libimagstore/remove-walk
...
Remove Store::walk()
2018-05-02 18:39:11 +02:00
Matthias Beyer
258d9f90d3
Remove Store::walk()
...
This patch removes the Store::walk() interface.
It was cumbersome and unused anyways.
2018-05-02 17:46:45 +02:00
Matthias Beyer
888b31377e
Fix: Do not check whether path exists - check whether its a file
...
This fixes a bug introduced in 195d921218
where we didn't check whether the path is actually a file.
2018-05-02 14:04:59 +02:00
Matthias Beyer
2bf09e7737
Only create directory if it does not exist
2018-05-01 22:29:46 +02:00
Matthias Beyer
84f426297e
Add debug output
2018-05-01 22:29:46 +02:00
Matthias Beyer
b27b392f4b
Add trace output
2018-05-01 22:29:46 +02:00
Matthias Beyer
972327e35e
Remove Store::reset_backend()
2018-05-01 21:09:51 +02:00
Matthias Beyer
2f0a557068
Fix for passing Arc<_> to store interface instead of Box<_>
2018-05-01 21:08:57 +02:00
Matthias Beyer
42e2f18fb3
Pass around Arc<FileAbstraction> internally
...
Because the iterators need to be able to check whether the file exists
_in the backend_ (not on disk, but in the backend, because of in-memory
test for example), we need to be able to pass the backend to the
iterator intermediate type.
This patch implements this. It does so by changing the internal backend
member of the store from `Box<FileAbstraction>` to
`Arc<FileAbstraction>`, which gives us the ability to clone the
reference to the backend easily without needing to rely on lifetimes
here, because of the Arc.
Also, less boxes are always good.
2018-05-01 21:08:57 +02:00
Matthias Beyer
d08c27e623
Rewrite StoreIdIterator extensions
...
This patch reimplements the iterator extensions.
As we iterate (in StoreIdIterator) over Result<StoreId> now anyways, we
don't need the extensions for Result iterators anymore.
This patch rewrites the extensions to be more simple in every way and
generic over the error type in the iterator.
All the errors have to do is implement From<StoreError>, which is what
they do when linking the generated error types with error_chain to the
libimagstore error types.
2018-05-01 17:44:01 +02:00
Matthias Beyer
6ee3f4a3f6
Refactor libimagentrycategory to fit new store iterator interface
2018-05-01 17:44:01 +02:00
Matthias Beyer
6f81d02445
Refactor libimagentryannotation to fit new store iterator interface
2018-05-01 17:44:01 +02:00
Matthias Beyer
40688a3c2d
Refactor libimagwiki to fit new store iterator interface
2018-05-01 17:44:01 +02:00
Matthias Beyer
715753ed25
Refactor libimagtodo to fit new store iterator interface
2018-05-01 17:44:01 +02:00
Matthias Beyer
72c83ae3f7
Refactor libimagtimetrack to fit new store iterator interface
2018-05-01 17:44:01 +02:00
Matthias Beyer
08114bbf36
Refactor libimagnotes to fit new store iterator interface
2018-05-01 17:44:00 +02:00
Matthias Beyer
e643f36fa3
Refactor libimaghabit to fit new store iterator interface
2018-05-01 17:44:00 +02:00
Matthias Beyer
bf0bef058d
Refactor libimagdiary to fit new store iterator interface
2018-05-01 17:44:00 +02:00
Matthias Beyer
8f03b4a71a
Refactor libimagcontact to fit new store iterator interface
2018-05-01 17:44:00 +02:00
Matthias Beyer
a2ff298e67
Rewrite Store::entries()
...
This patch rewrites the Store::entries() function to not be collecting
the iterator.
It therefore introduces a new, internal, iterator type which creates the
StoreId objects from the pathes the PathIterator yields internally.
With this patch, the Store iterator interface changes, as the iterators
now yield `Result<StoreId, StoreError>` instead of `StoreId`.
This is necessary, as the internal conversion errors shouldn't be
hidden.
Of course, the iterator types (like the StoreGetIterator and so on)
should hold a Result<StoreId> internally as well, and also yield
appropritely. This was changed in this commit, too.
2018-05-01 17:44:00 +02:00
Matthias Beyer
f4556f3983
Rewrite backend to not collect on pathes_recursively()
2018-05-01 17:44:00 +02:00
Matthias Beyer
900d9f0984
Merge pull request #1474 from matthiasbeyer/libimagstore/cache-flush
...
Add functionality to flush the internal cache
2018-04-30 21:07:37 +02:00
Matthias Beyer
41615bcc97
Merge pull request #1473 from matthiasbeyer/libimagstore/more-error-information
...
Add information about which storeid is the cause of the error in errors
2018-04-30 21:07:02 +02:00
Matthias Beyer
6a5bcb2709
Remove unused error kinds
2018-04-30 18:54:11 +02:00
Matthias Beyer
6a40ac6b98
Add information about which storeid is the cause of the error in errors
2018-04-30 18:53:54 +02:00
Matthias Beyer
860e47a256
Add functionality to flush the internal cache
...
Before we had the problem that when iterating over _a lot_ (like 5k)
entries and also fetching them, at some point the OS would return with
"Too many files open".
That is because the store internally caches a lot.
With this change, the Store gets an API to query how big the cache is,
how much the cache can currently hold and (and that's the main thing in
this patch) to flush the cache to disk.
A function to simply ask the store whether its cache should be flushed
(which would us require to ask the OS how many files we can open...
which would be possible with `libc::getrlimit`) does not yet exist,
though, but could be added easily if desired.
2018-04-30 18:39:59 +02:00
Matthias Beyer
b3cf96d88b
Refactor error handling, use more error chaining
2018-04-30 17:29:27 +02:00
Matthias Beyer
fc92cfc36f
Move header filters to FailableFilter
2018-04-29 11:43:32 +02:00
Matthias Beyer
30ac77d626
Add error module
2018-04-29 11:43:32 +02:00
Matthias Beyer
e08ec34893
Remove empty module
2018-04-29 11:43:32 +02:00
Matthias Beyer
6d21d8eb49
Update dependency: filters: 0.2 -> 0.3
2018-04-29 10:46:36 +02:00
Matthias Beyer
0976cab014
Merge pull request #1464 from matthiasbeyer/libimagentrygps/32-bit-gps-values
...
libimagentrygps: 32 bit gps values
2018-04-29 00:35:21 +02:00
Matthias Beyer
93c3bb5862
Upgrade variables to 64 bit
2018-04-28 23:27:12 +02:00
Matthias Beyer
5870fa0785
Fix: Use 16 bit variables for GPS degree/minute/second
2018-04-28 23:18:02 +02:00
Matthias Beyer
5f3b7b31e7
Add support for storing email properties
...
We have to move the `Email` type at the bottom of the DeserVcard type
because it contains a table and we must emit tables as last values when
de/serializing.
Maybe this will shoot us in the foot later, but only with TOML I guess.
We'll see. For now, this is good.
For that we need to update a dependency: vobject -> 0.5
2018-04-27 16:57:37 +02:00
Matthias Beyer
82867f3ff6
Fix tests for new interface
2018-04-27 13:24:59 +02:00
Matthias Beyer
f0969db47c
Rewrite
...
This patch rewrites the whole libimagcategory and brings it to a nice
standard (the code before was rather messy).
Now, categories are represented by an entry in the store and all entries
which have this category are linked to that entry.
2018-04-26 12:05:28 +02:00
Matthias Beyer
9fc9e7fe17
Outsource iterator in iter module
2018-04-26 12:05:28 +02:00
Matthias Beyer
ab15d89e64
Rewrite CategoryRegister as CategoryStore
2018-04-26 12:05:28 +02:00
Matthias Beyer
5f305ef7a7
Add module for category handling
2018-04-26 12:05:28 +02:00
Matthias Beyer
c26f1aae2a
This module should be named "entry"
2018-04-26 11:20:40 +02:00
Matthias Beyer
f321aa82a1
Make sure category is linked when setting it
2018-04-26 11:20:09 +02:00
Matthias Beyer
0bacfb0a88
Merge pull request #1446 from matthiasbeyer/travis-clippy
...
Travis: clippy
2018-04-26 10:25:45 +02:00
Matthias Beyer
ea80a5a09b
Derive Default for InMemoryFileAbstraction, remove constructor
2018-04-25 19:15:07 +02:00
Matthias Beyer
6a34e7a8fd
Derive Default for FSFileAbstraction, reduces boilerplate
2018-04-25 19:15:07 +02:00
Matthias Beyer
bf363c4748
Use "if let" if matching on a single pattern
2018-04-25 19:15:07 +02:00
Matthias Beyer
f1142c414d
Use ok_or_else() instead of ok_or()
2018-04-25 19:15:07 +02:00
Matthias Beyer
22170a0d55
Do not String::from(String)
2018-04-25 19:13:51 +02:00
Matthias Beyer
6f5590713a
Use single quotes here
2018-04-25 19:13:51 +02:00
Matthias Beyer
44521a7c8c
Dont use "return" keyword at end of function
2018-04-25 19:13:51 +02:00
Matthias Beyer
dc18e650bb
Collapse nested if-else-if
2018-04-25 19:13:51 +02:00
Matthias Beyer
67675b2ab2
Remove unecessary clone
2018-04-25 19:13:51 +02:00
Matthias Beyer
a25f650ca0
Be more ergonomic here
2018-04-25 19:13:51 +02:00
Matthias Beyer
84249e3fb5
Be less verbose when constructing an object
...
The rust compiler does some fancy things for us: It automatically finds
the right fields if the name of the variable and the file is the same.
Lets use that to reduce boilerplate with this patch.
2018-04-25 19:13:50 +02:00
Matthias Beyer
154c2e482b
Change generate_variants() helper to use base by ref
2018-04-25 19:13:50 +02:00
Matthias Beyer
42c4186dec
Use or_else() instead of or()
2018-04-25 19:13:50 +02:00
Matthias Beyer
80c07171aa
Make sure we can deserialize
...
Use default values when field is not there when we deserialize. This
does automatically the right thing.
2018-04-25 13:45:00 +02:00
Matthias Beyer
56c1b78d93
Add getters for DeserVcard helper type
2018-04-25 13:45:00 +02:00
Matthias Beyer
abc142f4b5
Rewrite library
...
libimagcontact stores all contact information in the entry header now.
2018-04-25 12:54:01 +02:00
Matthias Beyer
3eab3af7b0
Remove all libimagentryref usage
2018-04-25 11:30:42 +02:00
Matthias Beyer
775508a6ed
Refactor: Use AsRef<str> instead of String as arg type
2018-04-24 23:12:14 +02:00
Matthias Beyer
488ce9fe91
Clippy fixes
2018-04-24 23:12:14 +02:00
Matthias Beyer
524c391ee0
Remove unused dependency
2018-04-24 22:16:40 +02:00
Matthias Beyer
563c76c375
Remove "stdio" file abstraction from store implementation
2018-04-24 22:16:40 +02:00
Matthias Beyer
19e0471f5b
Remove tests with JsonMapper in backend
2018-04-24 22:16:40 +02:00
Matthias Beyer
ba453323ba
Remove support for changing store backend
2018-04-24 22:16:40 +02:00
Matthias Beyer
d12844aff0
Add markdown viewer functionality
2018-04-24 18:06:45 +02:00
Matthias Beyer
55d9b5456f
Adapt to new libimagentryview interface
...
And properly implement Viewer for DiaryViewer
2018-04-24 16:46:15 +02:00
Matthias Beyer
780dd90c8f
Rewrite libimagentryview interface
...
In the previous versions, the sink (where the entries should be written
to) was not passed.
This did conflict with the libimagrt holding the stdout/stderr handles,
because it automatically writes to stdout (which we don't want to do in
some cases).
Passing the sink is way nicer. This patch changes libimagentryview so
that the sink is passed to the viewer.
2018-04-24 16:46:15 +02:00
Matthias Beyer
5666ef12d0
Rewrite to not use Store::retrieve_for_module()
2018-04-24 14:01:40 +02:00
Matthias Beyer
2c52957b63
Replace call to retrieve_for_module() with entries()
...
The iterator type handles everything else.
2018-04-24 13:40:42 +02:00
Matthias Beyer
190da895f9
Do not use Store::retrieve_for_module() anymore here
2018-04-24 13:40:42 +02:00
Matthias Beyer
22fb26dc12
Replace Store::retrieve_for_module() with own iterator type
2018-04-24 13:40:42 +02:00
Matthias Beyer
007c02c2f1
Rewrite all_category_names() for removed Store::retrieve_for_module()
2018-04-24 13:40:42 +02:00
Matthias Beyer
255f4211c9
Rewrite use of iterator with own iterator implementation
2018-04-24 13:40:42 +02:00
Matthias Beyer
bae9188a08
Remove GlobStoreIdIterator helper iterator type
2018-04-24 13:40:42 +02:00
Matthias Beyer
d70092d691
Remove: Store::retrieve_for_module
2018-04-24 13:40:42 +02:00
Matthias Beyer
9303a72a28
Merge pull request #1436 from matthiasbeyer/imag-log/show-ordered
...
Fix: imag-log show should order by datetime
2018-04-22 15:55:25 +02:00
Matthias Beyer
93226ce987
Merge pull request #1434 from matthiasbeyer/libimagdiary/fix-youngest-entry
...
Fix: get_youngest_entry_id()
2018-04-22 15:06:26 +02:00
Matthias Beyer
ee75d2309c
Fix: imag-log show should order by datetime
2018-04-22 14:33:53 +02:00
Matthias Beyer
86b60295ee
Fix: get_youngest_entry_id()
...
We need to reverse the iterator for getting the _youngest_ entry here.
Also seems to fix the issue that imag-diary edit -d <date> did not work
properly.
2018-04-22 14:11:19 +02:00
Matthias Beyer
19940d3e1c
Set version string by hand here if we do not build with cargo
2018-04-22 13:38:24 +02:00
Matthias Beyer
8262de29fe
Update dependency: log: 0.4.0-rc.1 -> 0.4
2018-04-20 20:19:02 +02:00
Matthias Beyer
d08a5ab536
Merge pull request #1417 from matthiasbeyer/libimagrt/suggest-imag-init
...
Suggest imag-init if no config is found
2018-04-20 09:24:44 +02:00
Matthias Beyer
91a72709f8
Add wrapping functionality to StdoutViewer
2018-04-19 21:54:39 +02:00
Matthias Beyer
808689cc05
Suggest imag-init if no config is found
2018-04-19 10:57:13 +02:00
Matthias Beyer
d2dceb6640
Update version numbers: 0.7.0 -> 0.8.0
2018-04-19 10:05:53 +02:00
Matthias Beyer
38726c5906
Always use stdout via output proxy
...
The switching between stdout and stderr on an automated basis caused
errors in the using code, where output was redirected but shouldn't.
2018-04-18 17:58:07 +02:00
Matthias Beyer
542c7e7101
Make stdin always available
...
Because we do not implement the store piping and pipe magic, the stdin
stream should always be available.
2018-04-18 17:42:04 +02:00
Matthias Beyer
4568b1f625
Merge pull request #1380 from matthiasbeyer/minor
...
Minor patches
2018-04-18 16:46:41 +02:00
Matthias Beyer
51205af668
Merge pull request #1400 from matthiasbeyer/imag-wiki/init
...
imag-wiki: init
2018-04-18 15:42:27 +02:00
Matthias Beyer
95d3fbebcc
Merge pull request #1182 from matthiasbeyer/libimagwiki/init
...
libimagwiki: init
2018-04-18 15:13:56 +02:00
Matthias Beyer
9daf2cae86
Update dependency: task-hookrs: master -> 0.5
2018-04-18 14:59:26 +02:00
Matthias Beyer
adede7bf26
Remove notion of "main page"
2018-04-18 14:32:23 +02:00
Matthias Beyer
6f16924514
Remove functionality to delete whole wiki
2018-04-18 14:32:09 +02:00
Matthias Beyer
88b57910df
Merge pull request #1403 from matthiasbeyer/remove-pipe-magic
...
Revert "Implement pipe magic in libimagrt"
2018-04-17 17:39:54 +02:00
Matthias Beyer
98f8366e4c
Fix documentation in crate metadata
2018-04-17 15:55:08 +02:00
Matthias Beyer
d7cfab797f
Revert "Implement pipe magic in libimagrt"
...
This reverts commit ce0bd9298a
.
Pipe magic is removed with this patch.
We remove pipe magic because its implementation in libimagstore is too
complicated and the benefits are too small.
Having this functionality would be really nice, but the cost-benefit
ratio would still be too high.
The implementation in the store would require a rewrite of the internal
caching functionality in the store, plus some functionality to serialize
and deserialize the cache. This is theoretically possible, but as the
store only knows about "StoreEntry" objects, and only the backend knows
of "Entry" (which would be simply de/serializeable), the complexity
increases a _lot_.
Hence, we drop this feature-idea here.
Maybe, at some later point, this functionality will be in imag. The
history of development of this feature is in the history, we just don't
have it merged.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2018-04-16 13:30:59 +02:00
Matthias Beyer
816708a1aa
Add documentation for type
2018-04-16 10:53:23 +02:00
Matthias Beyer
8928f9cb94
Automatically create "index" and link new pages
2018-04-16 10:53:23 +02:00
Matthias Beyer
5e51a77b3f
Add logging output
2018-04-15 10:27:33 +02:00
Matthias Beyer
918d7a76b6
Add Wiki::delete_entry()
2018-04-15 10:27:09 +02:00
Matthias Beyer
2b8a83d9a7
Add entry getter function
2018-04-15 10:27:09 +02:00
Matthias Beyer
c242a362e4
Add id iterator
2018-04-15 10:27:09 +02:00
Matthias Beyer
bb0d4319c3
Initial import: libimagwiki
2018-04-15 10:27:09 +02:00
Matthias Beyer
899f3b9eb9
Update dependency: toml-query: 0.4 -> 0.6
2018-04-15 09:15:16 +02:00
Matthias Beyer
0f19b7e4b2
Use --verbose with "info" level by default
2018-04-15 08:38:11 +02:00
Matthias Beyer
c0607ba2e2
Fix log level setting in runtime
...
Do not immediately set log level to Level::Info if argument is present,
but check value, too.
2018-04-14 21:27:16 +02:00
Matthias Beyer
604f350340
Add logging in store
2018-04-14 16:55:36 +02:00
Matthias Beyer
fb4917d050
Remove feature to generate commandline completion scripts
2018-04-14 14:35:28 +02:00
Matthias Beyer
207346bea0
Add lints
2018-04-14 00:41:31 +02:00
Matthias Beyer
40b85f13b5
Add lints
2018-04-14 00:41:31 +02:00
Matthias Beyer
d02b298d5a
Add lints
2018-04-14 00:41:31 +02:00
Matthias Beyer
a40d90fef2
Add lints
2018-04-14 00:41:31 +02:00
Matthias Beyer
76c8443e50
Merge pull request #1395 from matthiasbeyer/clap-text-wrap
...
Clap text wrap
2018-04-13 22:46:09 +02:00
Matthias Beyer
3819dabff1
Remove attribute
...
This fixes a crash with the (beta) compiler rustc 1.26.
2018-04-13 16:41:42 +02:00
Matthias Beyer
aeec10bf76
Use clap with wrap_help feature
2018-04-13 16:19:10 +02:00
Matthias Beyer
b59c234588
Use clap "^2.29" instead of ">=2.29"
2018-04-13 16:17:43 +02:00
Matthias Beyer
00b6f4ded3
Merge pull request #1394 from matthiasbeyer/libimagentryref/fix-path-when-making-ref
...
Fix: Pass the right path variable here
2018-04-13 15:54:38 +02:00
Matthias Beyer
731b97cccb
Fix: Pass the right path variable here
...
The ref library passed the wrong variable as path which caused the
setting in the entries to be wrong.
This patch fixes this.
2018-04-13 14:06:15 +02:00
Matthias Beyer
ae5c4cf9ba
Fix: view entries sorted
2018-04-13 13:41:02 +02:00
Matthias Beyer
c27dc79afe
Merge pull request #1383 from matthiasbeyer/libimagrt/handler-exit-if-subcommand-not-found
...
libimagrt: Exit if handler does not find subcommand
2018-04-08 22:21:19 +02:00
Matthias Beyer
16a76f6213
Exit if handler does not find subcommand
2018-04-08 20:38:46 +02:00
Matthias Beyer
2017874a8b
Add debug output
2018-04-08 20:29:14 +02:00
Matthias Beyer
c5c9c7b9ba
Fix: Editor commands should be split at whitespace
...
This fixes the following problem:
If the editor setting was "vim " instead of "vim", the editor was called
with `"vim" " "`, which resulted in unexpected behaviour.
The patch fixes this.
2018-04-08 20:28:11 +02:00
Matthias Beyer
a769186cd7
Make iterator lifetimes less restricting
2018-04-07 13:55:54 +02:00
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
7429754665
Rewrite edit_in_tmpfile() for new Runtime::editor() signature
2018-03-23 23:55:11 +01: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
13af364b76
Add header editing support
2018-03-23 17:16:40 +01:00
Matthias Beyer
9e0d0d9f6c
Add Entry::replace_from_buffer()
2018-03-23 15:44:34 +01:00
Matthias Beyer
aa32dd1ec2
Add debugging output if kairos fails to parse input
2018-03-23 10:05:58 +01:00
Matthias Beyer
6f33e4e322
Add debug output
2018-03-23 10:05:58 +01:00
Matthias Beyer
bcdbb8197a
Use "ui" module in libimagtimeui
2018-03-23 10:05:58 +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
835c003491
Merge pull request #1360 from matthiasbeyer/libimaghabit/create-vs-retrieve
...
Fix: Use retrieve in retrieve variant
2018-03-23 10:03:52 +01:00
Matthias Beyer
96f4f93ed0
Merge pull request #1356 from matthiasbeyer/libimaghabit/link-new-instances
...
Fix: libimaghabit::habit::HabitTemplate should link created instances…
2018-03-23 10:03:44 +01:00
Matthias Beyer
c39a1f82e2
Merge pull request #1355 from matthiasbeyer/libimagstore/create-semantic-fix
...
Fix: Store::create() should fail if the entry exists
2018-03-22 22:04:29 +01:00
Matthias Beyer
30233456df
Fix: Use retrieve in retrieve variant
2018-03-22 21:34:00 +01:00
Matthias Beyer
b62d7eab85
Fix: libimaghabit::habit::HabitTemplate should link created instances to the template
2018-03-22 21:32:58 +01:00
Matthias Beyer
c857f97287
Merge pull request #1357 from matthiasbeyer/libimaghabit/create-vs-retrieve
...
Libimaghabit/create vs retrieve
2018-03-22 21:20:26 +01:00
Matthias Beyer
41f7bab1c5
Fix: Store::create() should fail if the entry exists
2018-03-22 21:16:11 +01:00
Matthias Beyer
e4fc2e8010
Merge pull request #1354 from matthiasbeyer/libimaghabit/check-is-done-for-date
...
Add helper to check whether an instance exists for a date
2018-03-22 14:36:32 +01:00
Matthias Beyer
247b9499a7
Refactor for less verbose code
2018-03-22 14:00:10 +01:00
Matthias Beyer
2232f0153f
Dedup code
2018-03-22 13:54:15 +01:00
Matthias Beyer
964b168f18
Add "retrieve" variants for retrieving instances
...
and fix create implementation to use `Store::create()`, which did the
wrong thing.
2018-03-22 13:51:12 +01:00
Matthias Beyer
45fdeb4e18
Add helper to check whether an instance exists for a date
2018-03-22 13:44:41 +01:00
Matthias Beyer
3d7be3a1e0
Merge pull request #1349 from matthiasbeyer/libimagentryref/fixes
...
Fix: Allocating of buffer does not work as expected with Vec::with_ca…
2018-03-21 18:04:37 +01:00
Matthias Beyer
d2eb4936b1
Fix: Allocating of buffer does not work as expected with Vec::with_capacity()
2018-03-20 16:51:19 +01:00
Matthias Beyer
5ceeacd6c8
Provide Ref::make_ref() for making a ref out of an existing entry
2018-03-19 14:18:02 +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
fb9866bd46
Merge pull request #1342 from matthiasbeyer/libimagentryedit/fix-editor-stdinerr-inherit
...
libimagentryedit: fix editor stdinerr inherit
2018-03-12 21:14:01 +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
5d9fd7ab10
Simplify error handling by using linking feature of error-chain
2018-03-12 19:21:48 +01:00
Matthias Beyer
e8ae2fb73e
Add type so that we can serialize a Vcard
2018-03-12 17:45:50 +01:00
Matthias Beyer
bbd0570013
Merge pull request #1334 from matthiasbeyer/libimagcontact/ref-from-uid
...
Change ref creation to use UID from vcard object
2018-03-12 17:06:54 +01:00
Matthias Beyer
6803d66e87
Merge pull request #1324 from matthiasbeyer/minor
...
Minor patches
2018-03-12 15:23:12 +01:00
Matthias Beyer
65d558727e
Change ref creation to use UID from vcard object
2018-03-12 14:43:02 +01:00
Matthias Beyer
252046583a
Merge pull request #1332 from matthiasbeyer/libimagcontact/all-contacts
...
Implement ContactStore::all_contacts()
2018-03-12 14:17:54 +01:00
Matthias Beyer
68ace5d147
Fix typo
2018-03-12 13:32:23 +01:00
Matthias Beyer
8a9b2e9a8f
Fix: use Path::file_stem() instead of Path::file_name()
...
Because we don't want to know the extension of the filename here.
2018-03-12 13:30:31 +01:00
Matthias Beyer
3bf1b6ccec
Implement ContactStore::all_contacts()
2018-03-12 12:52:24 +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
f88884c321
Merge pull request #1321 from matthiasbeyer/libimagdiary/not-on-retrieve-for-module
...
libimagdiary: Do not rely on Store::retrieve_for_module
2018-03-03 13:53:18 +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
8c37fb865a
Rebuild DiaryEntryIterator to be based on StoreIdIterator
...
This patch rebuilds DiaryEntryIterator to be a wrapper around
StoreIdIterator and thus `Diary::entries()` to use `Store::entries` and
not `Store::retrieve_for_module()`.
The `Store::retrieve_for_module()` function is somehow buggy and loads
contents of the files into memory and _somehow_ causes the entries to be
rewritten without newlines.
This bug is fixed by moving away from `Store::retrieve_for_module()`.
2018-03-02 21:25:48 +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
Dylan DPC
e7a5e73d25
Update Cargo.toml
2018-02-26 17:04:53 +05:30
Matthias Beyer
6055520519
Provide unlink() to remove all links
2018-02-25 18:59:02 +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
b2048b3dcf
Merge pull request #1306 from matthiasbeyer/minor
...
Minor patches
2018-02-20 20:23:41 +01:00
Matthias Beyer
00b86709b6
Use writeln!() instead of write!()
2018-02-20 19:24:34 +01:00
Matthias Beyer
461bebe60a
Merge pull request #1302 from matthiasbeyer/libimagdiary/fix-set-isflag
...
libimagdiary: Add "isflag" support
2018-02-20 18:37:48 +01:00
Matthias Beyer
404e9deed2
Add some debug output
2018-02-20 17:29:03 +01:00
Matthias Beyer
585261d468
Add "isflag" support
2018-02-20 17:18:46 +01:00
Matthias Beyer
5773e8a6c8
Remove libimagentrylist
2018-02-20 15:02:46 +01:00
Matthias Beyer
027c4b3287
Remove usage of libimagentrylist
2018-02-20 15:02:46 +01:00
Matthias Beyer
2c0c8347e9
Merge pull request #1285 from matthiasbeyer/libimagentryref/refactor
...
libimagentryref: Rewrite
2018-02-19 14:18:17 +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
88ffe8084c
Merge branch 'libimagentrymarkdown/refactor-libimagref-api-usage' into libimagentryref/refactor
2018-02-19 12:17:53 +01:00
Matthias Beyer
b9b15957fc
Merge branch 'libimagmail/rewrite-libimagref-api-usage' into libimagentryref/refactor
2018-02-19 12:17:48 +01:00
Matthias Beyer
672873c2f1
Make UniqueContactPathGenerator pub
2018-02-19 12:15:39 +01:00
Matthias Beyer
719daf952b
Refactor libimagcontact for new libimagentryref API
2018-02-19 12:15:39 +01:00
Matthias Beyer
c36250e42f
Adapt to new libimagentryref API
2018-02-19 12:15:31 +01:00
Matthias Beyer
30ad7d89b1
Reimplement libimagmail for new libimagentryref interface
2018-02-19 12:15:22 +01:00
Matthias Beyer
1153fb180b
Add function to delete a reference header entry
2018-02-19 12:14:32 +01:00
Matthias Beyer
fd6a7f877a
Remove private macro
2018-02-19 12:14:32 +01:00
Matthias Beyer
a1a85f40d0
Add default generators
2018-02-19 12:14:32 +01:00
Matthias Beyer
2328c8b2b0
Take AsRef<str> rather than &String
2018-02-19 12:14:32 +01:00
Matthias Beyer
cbb47cffcb
Implement Ref functions
2018-02-19 12:14:32 +01:00
Matthias Beyer
ed69fd4b35
Enrich error types
2018-02-19 12:14:32 +01:00
Matthias Beyer
81a8826740
Add impl for RefStore::{get,create,retrieve}_ref()
2018-02-19 12:14:32 +01:00
Matthias Beyer
1014f58cfc
Rewrite interface
2018-02-19 12:14:32 +01:00
Matthias Beyer
73af121882
Remove old concepts
2018-02-19 12:14:32 +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
2b26db70ed
Make HabitBuilder derive Debug
2018-02-18 20:03:50 +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
50b0ffa6ae
Remove calls to trace_error_exit()
2018-02-12 21:19:48 +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
4a4e528aed
Refactor error handling
...
Refactor error handling so we do chain the error with the `?`
operator rather than wrapping it with own types.
Links to other error chains are created with error chain. All unneeded
error kinds were removed.
No API changes.
2018-02-11 23:44:27 +01:00
Matthias Beyer
77be32d80f
Remove "get" iterator, store provides this now
2018-02-11 23:44:27 +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
3b710e082d
Add missing Cargo.toml metadata
2018-02-10 14:11:46 +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
29e88c5de0
Fix: Header entry setting
...
The header was not set properly. This fixes this bug.
2018-02-06 20:42:43 +01:00
Matthias Beyer
346e5a9444
Add link to toml_query error types
2018-02-06 20:42:43 +01:00
Matthias Beyer
e2e3b4f6e2
Update kairos dependency: 0.1.0-beta-2 -> 0.1.0
2018-02-05 16:20:05 +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
3aa2e6edec
Add iterator helper for filtering
2018-02-01 16:46:57 +01:00
Matthias Beyer
06cb8d50fb
Make StoreId::is_in_collection() generic over AsRef<str>
2018-02-01 16:46:57 +01:00
Matthias Beyer
eb6ab8f029
Add IsInCollection helper type
2018-02-01 16:46:57 +01:00
Matthias Beyer
da0c1fa594
Rewrite From<> implementations for habit iterators
...
to be generic over all iterators over StoreIds, so they can be build
directly from them.
2018-02-01 16:46:38 +01:00
Matthias Beyer
3c1a0a51c9
Transform iterator to forget Store reference here
2018-02-01 16:46:38 +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
da4b823048
Merge pull request #1219 from matthiasbeyer/minor
...
Minor patches
2018-02-01 13:18:31 +01:00
Matthias Beyer
92c04c606c
Refactor to use AsRef<str>
2018-02-01 09:26:33 +01:00
Matthias Beyer
7e53ad9f78
Add datetime <-> string conversion utility
2018-02-01 09:26:33 +01:00
Matthias Beyer
4d94791b1f
Move date <-> string conversion utility to libimagutil
2018-02-01 09:26:33 +01:00
Matthias Beyer
7ecaad830c
Refactor to use Iterator::fold()
2018-01-29 09:38:32 +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
4bd156fdb3
Remove unecessary String instantiation
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
68fedfb13a
libimagentryutil: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
a34cae03e5
libimagentryref: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
e9ae81a2ce
libimagentrylink: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
18a6e9b64e
libimagentryfilter: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
6c36c97895
libimagentrydatetime: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
7176c130ff
libimagentrycategory: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
163bf249ff
libimagentryannotation: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
13ff09d8c6
libimagtodo: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
397f79b238
libimagtimetrack: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
cb0cb21220
libimagnotes: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
014b54ad4e
libimaglog: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
f2b72f4738
libimaghabit: Replace read with typed read
2018-01-13 01:14:03 +01:00
Matthias Beyer
46774d765b
libimagdiary: Replace read with typed read
2018-01-13 01:14:03 +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
9a9701fce5
Add flag settings/Contact::is_contact in libimagcontact
2018-01-08 23:46:36 +01:00
Matthias Beyer
7fb13acf15
Add Ref::is_ref()
2018-01-08 23:46:36 +01:00
Matthias Beyer
1f133eac3b
Use libimagentryutil::isa::Is in libimaghabit
2018-01-08 23:31:10 +01:00
Matthias Beyer
00d09e618e
Use libimagentryutil::isa::Is in libimagentryannotation
2018-01-08 23:31:10 +01:00
Matthias Beyer
a7c8fa1212
Add Is::set_isflag() helper function
2018-01-08 23:31:10 +01:00
Matthias Beyer
a246144c26
Add Is helper trait
2018-01-08 23:31:10 +01:00
Matthias Beyer
2d83796ef2
Initial import: libimagentryutil
2018-01-08 23:31:10 +01:00
Matthias Beyer
7cf60d5bec
Merge pull request #1208 from matthiasbeyer/libimagdiary-bookmarkcollection-nonwrapping
...
libimagdiary: Do not wrap store types
2018-01-08 23:11:54 +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
80c460dac9
Transform BookmarkCollection into two traits
...
One trait is implemented on the Store, it retrieves BookmarkCollection
objects.
The other is implemented on `libimagstore::store::Entry` which then
represents a BookmarkCollection.
2018-01-08 15:16:14 +01:00
Matthias Beyer
c0f4a20367
Merge pull request #1200 from matthiasbeyer/refactor-matching-into-command-chaining
...
Refactor matching into command chaining
2018-01-05 15:19:32 +01:00
Matthias Beyer
2c0f35e1a4
Merge pull request #1195 from matthiasbeyer/libimagdiary/support-seconds
...
Add second-support in libimagdiary
2018-01-05 13:54:12 +01:00
Matthias Beyer
824f88e4fd
Refactoring: Use function chaining rather than matching
2018-01-05 13:32:31 +01:00
Matthias Beyer
66b0611103
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
dac817f318
Refactor: Use function chaining and new error type link
2018-01-05 11:37:09 +01:00
Matthias Beyer
1e2ac14d3b
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
c92e459e3a
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
5db3d0c278
Refactor: Use function chaining rather than matching
...
And use a helper function for common functionality
2018-01-05 11:37:09 +01:00
Matthias Beyer
feaa32196b
Refactoring: Use function chaining rather than matching
...
Also introduce error links for this.
2018-01-05 11:37:09 +01:00
Matthias Beyer
3294a77346
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
40490c10d6
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
dd66936e48
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
a386d50df3
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
e7d5e9ebc2
Refactoring: Use function chaining rather than matching
2018-01-05 11:37:09 +01:00
Matthias Beyer
4bb0d0f073
Refactor: Use function chaining instead of matching
2018-01-05 11:37:09 +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
dbd9a2faaf
Replace matching with function chaining
2018-01-05 11:37:09 +01:00
Matthias Beyer
c1ff2b14f0
Replace matching with function chaining
2018-01-05 11:37:09 +01:00
Matthias Beyer
a9135a80fb
Replace matching with command chaining
2018-01-05 11:37:09 +01:00