eb20a9d881
Merge pull request #1477 from matthiasbeyer/libimagstore/remove-walk
...
Remove Store::walk()
2018-05-02 18:39:11 +02:00
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
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
2bf09e7737
Only create directory if it does not exist
2018-05-01 22:29:46 +02:00
84f426297e
Add debug output
2018-05-01 22:29:46 +02:00
b27b392f4b
Add trace output
2018-05-01 22:29:46 +02:00
972327e35e
Remove Store::reset_backend()
2018-05-01 21:09:51 +02:00
2f0a557068
Fix for passing Arc<_> to store interface instead of Box<_>
2018-05-01 21:08:57 +02:00
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
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
6ee3f4a3f6
Refactor libimagentrycategory to fit new store iterator interface
2018-05-01 17:44:01 +02:00
6f81d02445
Refactor libimagentryannotation to fit new store iterator interface
2018-05-01 17:44:01 +02:00
40688a3c2d
Refactor libimagwiki to fit new store iterator interface
2018-05-01 17:44:01 +02:00
715753ed25
Refactor libimagtodo to fit new store iterator interface
2018-05-01 17:44:01 +02:00
72c83ae3f7
Refactor libimagtimetrack to fit new store iterator interface
2018-05-01 17:44:01 +02:00
08114bbf36
Refactor libimagnotes to fit new store iterator interface
2018-05-01 17:44:00 +02:00
e643f36fa3
Refactor libimaghabit to fit new store iterator interface
2018-05-01 17:44:00 +02:00
bf0bef058d
Refactor libimagdiary to fit new store iterator interface
2018-05-01 17:44:00 +02:00
8f03b4a71a
Refactor libimagcontact to fit new store iterator interface
2018-05-01 17:44:00 +02:00
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
f4556f3983
Rewrite backend to not collect on pathes_recursively()
2018-05-01 17:44:00 +02:00
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
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
6a5bcb2709
Remove unused error kinds
2018-04-30 18:54:11 +02:00
6a40ac6b98
Add information about which storeid is the cause of the error in errors
2018-04-30 18:53:54 +02:00
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
b3cf96d88b
Refactor error handling, use more error chaining
2018-04-30 17:29:27 +02:00
fc92cfc36f
Move header filters to FailableFilter
2018-04-29 11:43:32 +02:00
30ac77d626
Add error module
2018-04-29 11:43:32 +02:00
e08ec34893
Remove empty module
2018-04-29 11:43:32 +02:00
6d21d8eb49
Update dependency: filters: 0.2 -> 0.3
2018-04-29 10:46:36 +02:00
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
93c3bb5862
Upgrade variables to 64 bit
2018-04-28 23:27:12 +02:00
5870fa0785
Fix: Use 16 bit variables for GPS degree/minute/second
2018-04-28 23:18:02 +02:00
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
82867f3ff6
Fix tests for new interface
2018-04-27 13:24:59 +02:00
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
9fc9e7fe17
Outsource iterator in iter module
2018-04-26 12:05:28 +02:00
ab15d89e64
Rewrite CategoryRegister as CategoryStore
2018-04-26 12:05:28 +02:00
5f305ef7a7
Add module for category handling
2018-04-26 12:05:28 +02:00
c26f1aae2a
This module should be named "entry"
2018-04-26 11:20:40 +02:00
f321aa82a1
Make sure category is linked when setting it
2018-04-26 11:20:09 +02:00
0bacfb0a88
Merge pull request #1446 from matthiasbeyer/travis-clippy
...
Travis: clippy
2018-04-26 10:25:45 +02:00
ea80a5a09b
Derive Default for InMemoryFileAbstraction, remove constructor
2018-04-25 19:15:07 +02:00
6a34e7a8fd
Derive Default for FSFileAbstraction, reduces boilerplate
2018-04-25 19:15:07 +02:00
bf363c4748
Use "if let" if matching on a single pattern
2018-04-25 19:15:07 +02:00
f1142c414d
Use ok_or_else() instead of ok_or()
2018-04-25 19:15:07 +02:00
22170a0d55
Do not String::from(String)
2018-04-25 19:13:51 +02:00
6f5590713a
Use single quotes here
2018-04-25 19:13:51 +02:00
44521a7c8c
Dont use "return" keyword at end of function
2018-04-25 19:13:51 +02:00
dc18e650bb
Collapse nested if-else-if
2018-04-25 19:13:51 +02:00
67675b2ab2
Remove unecessary clone
2018-04-25 19:13:51 +02:00
a25f650ca0
Be more ergonomic here
2018-04-25 19:13:51 +02:00
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
154c2e482b
Change generate_variants() helper to use base by ref
2018-04-25 19:13:50 +02:00
42c4186dec
Use or_else() instead of or()
2018-04-25 19:13:50 +02:00
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
56c1b78d93
Add getters for DeserVcard helper type
2018-04-25 13:45:00 +02:00
abc142f4b5
Rewrite library
...
libimagcontact stores all contact information in the entry header now.
2018-04-25 12:54:01 +02:00
3eab3af7b0
Remove all libimagentryref usage
2018-04-25 11:30:42 +02:00
775508a6ed
Refactor: Use AsRef<str> instead of String as arg type
2018-04-24 23:12:14 +02:00
488ce9fe91
Clippy fixes
2018-04-24 23:12:14 +02:00
524c391ee0
Remove unused dependency
2018-04-24 22:16:40 +02:00
563c76c375
Remove "stdio" file abstraction from store implementation
2018-04-24 22:16:40 +02:00
19e0471f5b
Remove tests with JsonMapper in backend
2018-04-24 22:16:40 +02:00
ba453323ba
Remove support for changing store backend
2018-04-24 22:16:40 +02:00
d12844aff0
Add markdown viewer functionality
2018-04-24 18:06:45 +02:00
55d9b5456f
Adapt to new libimagentryview interface
...
And properly implement Viewer for DiaryViewer
2018-04-24 16:46:15 +02:00
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
5666ef12d0
Rewrite to not use Store::retrieve_for_module()
2018-04-24 14:01:40 +02:00
2c52957b63
Replace call to retrieve_for_module() with entries()
...
The iterator type handles everything else.
2018-04-24 13:40:42 +02:00
190da895f9
Do not use Store::retrieve_for_module() anymore here
2018-04-24 13:40:42 +02:00
22fb26dc12
Replace Store::retrieve_for_module() with own iterator type
2018-04-24 13:40:42 +02:00
007c02c2f1
Rewrite all_category_names() for removed Store::retrieve_for_module()
2018-04-24 13:40:42 +02:00
255f4211c9
Rewrite use of iterator with own iterator implementation
2018-04-24 13:40:42 +02:00
bae9188a08
Remove GlobStoreIdIterator helper iterator type
2018-04-24 13:40:42 +02:00
d70092d691
Remove: Store::retrieve_for_module
2018-04-24 13:40:42 +02:00
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
93226ce987
Merge pull request #1434 from matthiasbeyer/libimagdiary/fix-youngest-entry
...
Fix: get_youngest_entry_id()
2018-04-22 15:06:26 +02:00
ee75d2309c
Fix: imag-log show should order by datetime
2018-04-22 14:33:53 +02:00
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
19940d3e1c
Set version string by hand here if we do not build with cargo
2018-04-22 13:38:24 +02:00
8262de29fe
Update dependency: log: 0.4.0-rc.1 -> 0.4
2018-04-20 20:19:02 +02:00
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
91a72709f8
Add wrapping functionality to StdoutViewer
2018-04-19 21:54:39 +02:00
808689cc05
Suggest imag-init if no config is found
2018-04-19 10:57:13 +02:00
d2dceb6640
Update version numbers: 0.7.0 -> 0.8.0
2018-04-19 10:05:53 +02:00
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
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
4568b1f625
Merge pull request #1380 from matthiasbeyer/minor
...
Minor patches
2018-04-18 16:46:41 +02:00
51205af668
Merge pull request #1400 from matthiasbeyer/imag-wiki/init
...
imag-wiki: init
2018-04-18 15:42:27 +02:00
95d3fbebcc
Merge pull request #1182 from matthiasbeyer/libimagwiki/init
...
libimagwiki: init
2018-04-18 15:13:56 +02:00
9daf2cae86
Update dependency: task-hookrs: master -> 0.5
2018-04-18 14:59:26 +02:00
adede7bf26
Remove notion of "main page"
2018-04-18 14:32:23 +02:00
6f16924514
Remove functionality to delete whole wiki
2018-04-18 14:32:09 +02:00
88b57910df
Merge pull request #1403 from matthiasbeyer/remove-pipe-magic
...
Revert "Implement pipe magic in libimagrt"
2018-04-17 17:39:54 +02:00
98f8366e4c
Fix documentation in crate metadata
2018-04-17 15:55:08 +02:00
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
816708a1aa
Add documentation for type
2018-04-16 10:53:23 +02:00
8928f9cb94
Automatically create "index" and link new pages
2018-04-16 10:53:23 +02:00
5e51a77b3f
Add logging output
2018-04-15 10:27:33 +02:00
918d7a76b6
Add Wiki::delete_entry()
2018-04-15 10:27:09 +02:00
2b8a83d9a7
Add entry getter function
2018-04-15 10:27:09 +02:00
c242a362e4
Add id iterator
2018-04-15 10:27:09 +02:00
bb0d4319c3
Initial import: libimagwiki
2018-04-15 10:27:09 +02:00
899f3b9eb9
Update dependency: toml-query: 0.4 -> 0.6
2018-04-15 09:15:16 +02:00
0f19b7e4b2
Use --verbose with "info" level by default
2018-04-15 08:38:11 +02:00
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
604f350340
Add logging in store
2018-04-14 16:55:36 +02:00
fb4917d050
Remove feature to generate commandline completion scripts
2018-04-14 14:35:28 +02:00
207346bea0
Add lints
2018-04-14 00:41:31 +02:00
40b85f13b5
Add lints
2018-04-14 00:41:31 +02:00
d02b298d5a
Add lints
2018-04-14 00:41:31 +02:00
a40d90fef2
Add lints
2018-04-14 00:41:31 +02:00
76c8443e50
Merge pull request #1395 from matthiasbeyer/clap-text-wrap
...
Clap text wrap
2018-04-13 22:46:09 +02:00
3819dabff1
Remove attribute
...
This fixes a crash with the (beta) compiler rustc 1.26.
2018-04-13 16:41:42 +02:00
aeec10bf76
Use clap with wrap_help feature
2018-04-13 16:19:10 +02:00
b59c234588
Use clap "^2.29" instead of ">=2.29"
2018-04-13 16:17:43 +02:00
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
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
ae5c4cf9ba
Fix: view entries sorted
2018-04-13 13:41:02 +02:00
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
16a76f6213
Exit if handler does not find subcommand
2018-04-08 20:38:46 +02:00
2017874a8b
Add debug output
2018-04-08 20:29:14 +02:00
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
a769186cd7
Make iterator lifetimes less restricting
2018-04-07 13:55:54 +02:00
93195b3bad
Default clap app builder: Allow external subcommands
2018-04-04 19:34:13 +02:00
cb8b5a0cf6
Add helper for handling unknown subcommands
2018-04-03 18:23:01 +02:00
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
7429754665
Rewrite edit_in_tmpfile() for new Runtime::editor() signature
2018-03-23 23:55:11 +01:00
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
13af364b76
Add header editing support
2018-03-23 17:16:40 +01:00
9e0d0d9f6c
Add Entry::replace_from_buffer()
2018-03-23 15:44:34 +01:00
aa32dd1ec2
Add debugging output if kairos fails to parse input
2018-03-23 10:05:58 +01:00
6f33e4e322
Add debug output
2018-03-23 10:05:58 +01:00
bcdbb8197a
Use "ui" module in libimagtimeui
2018-03-23 10:05:58 +01:00
7e623f39b8
Add message why panic
...
So we see that when grepping the source for `unimplemented!()`.
2018-03-23 10:05:58 +01:00
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
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
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
30233456df
Fix: Use retrieve in retrieve variant
2018-03-22 21:34:00 +01:00
b62d7eab85
Fix: libimaghabit::habit::HabitTemplate should link created instances to the template
2018-03-22 21:32:58 +01:00
c857f97287
Merge pull request #1357 from matthiasbeyer/libimaghabit/create-vs-retrieve
...
Libimaghabit/create vs retrieve
2018-03-22 21:20:26 +01:00
41f7bab1c5
Fix: Store::create() should fail if the entry exists
2018-03-22 21:16:11 +01:00
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
247b9499a7
Refactor for less verbose code
2018-03-22 14:00:10 +01:00
2232f0153f
Dedup code
2018-03-22 13:54:15 +01:00
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
45fdeb4e18
Add helper to check whether an instance exists for a date
2018-03-22 13:44:41 +01:00
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