1d165f6fc2
Remove Deref for StoreId but provide basic functions within the type
2016-08-28 18:41:52 +02:00
69b3f6bf87
Rewrite Display for StoreId
2016-08-28 18:41:52 +02:00
fb1df533c5
Rewrite Into<PathBuf> for StoreId
2016-08-28 18:41:52 +02:00
6841b7c340
Rewrite StoreId::storified()
2016-08-28 18:41:52 +02:00
264d651f1d
Make StoreId be two parts: base and id
2016-08-28 18:41:52 +02:00
Marcel Müller
820fa287a0
Remove duplication
2016-08-25 09:30:47 +02:00
Marcel Müller
a82ef32142
Add missing FileAbstractions call
2016-08-24 16:58:48 +02:00
Marcel Müller
60a315e553
Rename lazyfile file to file_abstraction
2016-08-24 16:58:47 +02:00
Marcel Müller
c8e296e221
Move all abstractions to LazyFile and change it to FileAbstraction
2016-08-24 16:58:47 +02:00
Marcel Müller
1c71326ede
Add simple test
2016-08-24 16:58:47 +02:00
Marcel Müller
74dcd1f141
Add implementation of Test Lazyfile
2016-08-24 16:58:47 +02:00
Marcel Müller
bc1af19750
Add FileNot{Written,Seeked} errors
2016-08-24 16:58:47 +02:00
Marcel Müller
1d1ad65705
Split up LazyFile for test/prod
2016-08-24 16:58:46 +02:00
Marcel Müller
363a1d246a
Use Read instead of File for from_file
...
Also change it to `from_reader`
2016-08-24 16:58:46 +02:00
Marcel Müller
ef4455d9f3
Comment out tests
2016-08-24 16:58:43 +02:00
ddbc38e756
Merge pull request #659 from asuivelentine/libimagstore/unused-import
...
removed unused import
2016-08-23 21:36:03 +02:00
Kai Sickeler
5148bc1a6e
removed unused import
2016-08-23 19:58:50 +02:00
Kai Sickeler
16935d9153
Upgrade toml dependency to 0.2
2016-08-06 17:22:39 +02:00
e37316f3f4
Fix possible w-lock panic
...
For a detailed explanation on the issue this commit tries to solve, have
a look at
7b5d37a039
which explains the issue in detail.
2016-08-02 18:59:17 +02:00
84ae516dc3
Fix possible w-lock panic
...
for a detailed explanation of the issue this commit tries to solve have
a look at
7b5d37a039
which explains the issue in detail.
2016-08-02 18:59:17 +02:00
ea17755ad4
Fix possible w-lock panic
...
for a detailed explanation have a look at
7b5d37a039
Which explains the issue this commit solves in more detail.
2016-08-01 20:28:38 +02:00
7b5d37a039
Fix: Make sure we release the Write-Lock
...
This was suggested by Marcel Müller, who also debugged this issue and
found that this snippet was the error.
The problem was, that we had the write-lock when starting the hooks. If
the hook runs into an Err() mapping part where the Entry could already
be drop()ed, Rust tries to be smart and drops the object. As we are
still in the creation code of the entry, this paniced as we still hold
the W-Lock and the drop() tryies to call _update() on the entry, which
also tries to W-lock it.
With the new additional scope, the W-lock gets dropped early and we do
not have this problem anymore.
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Suggested-by: Marcel Müller <neikos@neikos.email>
Reported-by: Matthias Beyer <mail@beyermatthias.de>
2016-08-01 20:00:31 +02:00
Kai Sickeler
b6437a0b0f
Implement Debug for FileLockEntry, do not derive it
2016-07-27 19:26:45 +02:00
0ba67f7873
Check whether implictely creating the store path is allowed
2016-07-25 17:02:38 +02:00
4d650a63f7
Add error kind for implicit create denied
2016-07-25 17:02:38 +02:00
442b1537be
Add helper to check config for implicit-create
2016-07-25 17:02:38 +02:00
cdf6bc6fa5
Make warning more verbose, tell what kind of variable cannot be fetched
2016-07-18 15:44:34 +02:00
ce766427da
Merge pull request #561 from matthiasbeyer/libimagstore/verify
...
Libimagstore/verify
2016-07-17 13:03:54 +02:00
6b1fdfbc1d
Add Store::verify()
2016-07-17 00:59:04 +02:00
bb8dad256c
Fix comment how config has to look
2016-07-16 22:17:05 +02:00
2a95d4f79d
Merge pull request #553 from matthiasbeyer/libimagstore/custom-hook-error-data-interface
...
Add interface for custom error data type
2016-07-16 19:15:39 +02:00
b81750ba09
Add interface for custom error data type
2016-07-16 16:52:02 +02:00
01c21e1d95
Remove "Sync" trait bound - we don't need to sync between threads here
...
(and we do not have the possibility to, actually).
2016-07-16 16:18:37 +02:00
6c181d32b6
Merge pull request #548 from matthiasbeyer/libimagstore/storeid-hook-exec-in-mutable-hook-exec
...
Execute StoreIdAccess accessors in MutableHookDataAccessor impl for A…
2016-07-16 11:23:52 +02:00
76d23577c4
Merge pull request #546 from matthiasbeyer/libimagstore/fixed-and-more-hook-error-wrapping
...
Add more error levels in hook execution error wrapping
2016-07-16 11:23:38 +02:00
083b9da1e9
Merge pull request #545 from matthiasbeyer/libimagstore/fix-aspect-config-getting
...
Fix AspectConfig::get_for() implementation
2016-07-16 11:23:20 +02:00
c6be35554b
Merge pull request #547 from matthiasbeyer/libimagstore/aspect-execution-output
...
Add error output in Aspect execution code
2016-07-16 11:21:41 +02:00
ed4744449c
Execute StoreIdAccess accessors in MutableHookDataAccessor impl for Aspect as well
...
We have no other way than doing it this way, and it doesn't hurt, does
it?
2016-07-16 01:15:48 +02:00
6a85760feb
Debug output in MutableHookDatsaAccessor impl for Aspect
2016-07-16 01:15:08 +02:00
8de32622b9
Add more error levels in hook execution error wrapping
2016-07-16 00:57:33 +02:00
ded6a3f240
Add error output in Aspect execution code
2016-07-16 00:57:20 +02:00
c8edb2102f
Fix AspectConfig::get_for() implementation
2016-07-16 00:33:54 +02:00
32617d0a16
Add debug config when getting configuration for a hook
2016-07-16 00:32:58 +02:00
33771f3903
Add debugging output when setting hook configuration
2016-07-16 00:32:54 +02:00
fc72b3f53a
Add more debug output in Store::new()
2016-07-16 00:32:50 +02:00
John Sirois
8ef7b4e0c6
Cleanup HookError
tracing logic.
...
Use `Result::or_else` instead of matching and no-oping the `Ok` case
manually and extract a helper to centralize repeated trace logic.
2016-07-14 20:37:16 -06:00
John Sirois
7f57e5e234
Move from a helper function to a typeclass.
...
This introduces the `FoldResut` trait to move from `func(receiver, ...)`
style to `receiver.func(...)` style. Also add a means to pass the
default result explicitly.
2016-07-14 07:28:54 -06:00
John Sirois
2c40b8734e
Add a fold_ok
utility.
...
Add a utility that folds an iterator into a result and uses it to reduce
boilerplate in the codebase.
2016-07-13 12:43:04 -06:00
9337a14cdd
Update all version strings: 0.1.0 -> 0.2.0
2016-07-12 11:51:20 +02:00
c6f9d91599
Merge pull request #513 from matthiasbeyer/libimagstore/hooks/optionally-deny-mutable-hooks
...
Libimagstore/hooks/optionally deny mutable hooks
2016-07-07 21:52:08 +02:00
7818b523b9
Deny mutable access for hooks if the config says so
2016-07-07 20:29:24 +02:00
eb31da70d1
Remove import: trace_error() function
2016-07-07 17:03:20 +02:00
7f14639c1e
Add configuration parsing/getter for denying of mutable hooks
2016-07-06 19:10:17 +02:00
b4b719b753
Add error kind for denied hooks
2016-07-06 19:09:58 +02:00
d18766b4b4
Remove checking for aborting errors
...
As the Aspect execution catches the aborting hooks and returns them, we
cannot have a non-aborting error here, so there is no point in checking
for aborting errors.
2016-07-06 18:01:00 +02:00
580ea28877
Fix Display impl for StoreId by using lossy string rep if PathBuf::to_str() fails
2016-07-05 13:47:58 +02:00
d7f22020e6
Merge pull request #489 from matthiasbeyer/libimagstore/storify-id
...
Libimagstore/storify
2016-07-04 19:26:42 +02:00
9605d6daa6
Ensure that StoreId::storified() does not alter already storified StoreId objects
2016-07-04 12:49:12 +02:00
a706680fd5
Revert "Store::create() Make outgoing storeid object unstorified"
...
This reverts commit 41d7d1c213
.
2016-07-04 12:46:06 +02:00
31d5dac63d
Revert "Add StoreId::unstorified()"
...
This reverts commit 37380c84b9
.
We do not want such a feature in the store, actually.
StoreId objects are either storified or not, but you cannot unstorify
them.
2016-07-04 12:45:17 +02:00
41d7d1c213
Store::create() Make outgoing storeid object unstorified
2016-07-04 12:44:58 +02:00
9f213ddc31
Add error kind for storeid handling errors
2016-07-04 12:44:58 +02:00
37380c84b9
Add StoreId::unstorified()
2016-07-04 12:44:58 +02:00
12b8f8f331
Move storification of StoreId object to new StoreId::storified() func
2016-07-02 17:52:12 +02:00
ea4487a481
Impl Display for StoreId
2016-06-30 11:02:58 +02:00
45a24de853
store.rs: Replace error boxing and wrapping with result helper from libimagerror
2016-06-27 18:16:43 +02:00
484520842a
lazyfile.rs: Replace error boxing and creation by call to new helper function
2016-06-27 18:00:12 +02:00
0a05b9825c
call helper generator macros in error module
2016-06-27 17:59:46 +02:00
55e6c29275
Add another level of error enclosure
2016-06-08 15:11:53 +02:00
e75b524e53
Add error kinds for Move functions
2016-06-08 15:11:53 +02:00
84a0778a5b
Refactor: Use helper function for equal codelines
2016-06-08 15:08:06 +02:00
3c40df1ae7
Add Store::save_to() to create a copy of an entry
2016-06-08 15:08:06 +02:00
2ce84a3dbf
Add {Pre, Post}Move hooks
2016-06-08 15:08:00 +02:00
12cac663d0
Implement save_as()
2016-06-08 14:03:17 +02:00
f885e6c80b
Implement move_by_id()
2016-06-08 14:03:17 +02:00
5b16771f4f
Add (unimplemented) functions for moving store entries
2016-06-08 14:02:52 +02:00
88e89d7927
Merge pull request #456 from matthiasbeyer/libimagstore/errors-to-identify-store-api-call
...
Add a set of error kinds to identify the store call the error came from
2016-06-06 18:28:48 +02:00
ea5319812d
Merge pull request #439 from matthiasbeyer/libimagstore/fle-and-entry-have-storeid
...
Remove duplicated StoreId member in FileLockEntry, use member from Entry
2016-05-29 02:15:26 +02:00
9d37ffef91
Merge pull request #454 from matthiasbeyer/libimagstore/hook-exec-error-fix
...
Libimagstore/hook exec error fix
2016-05-29 01:31:17 +02:00
55e5255293
Remove duplicated StoreId member in FileLockEntry, use member from Entry
2016-05-29 00:01:05 +02:00
ce12a22ef5
Merge pull request #440 from matthiasbeyer/libimagstore/load-unload-hooks
...
Libimagstore/load unload hooks
2016-05-28 23:59:32 +02:00
64e28f3c31
Fix C/P fail
...
The store executed the wrong hooks here, because of a C/P failure.
This fixes this bug.
2016-05-28 23:47:26 +02:00
812379c46d
Hook data accessors should implement Debug
2016-05-28 23:47:13 +02:00
d85f747066
Add a set of error kinds to identify the store call the error came from
2016-05-28 23:30:50 +02:00
a42b6a10db
Add error tracing support in Aspect implementation
...
This removes the parallelization feature from the Aspect codebase as
std::error::Error does not implement Send, so we cannot send the error
from a child thread to a parent thread.
This is clearly not an optimal implementation now, but we have hook
non-aborting-error tracing support, which is more important than
parallelization support, at least in this early stage of development.
An issue has to be opened for re-implementing parallelization of hooks.
2016-05-28 21:08:55 +02:00
6c7d6c29ea
Rewrite pre-hook execution
2016-05-28 21:08:55 +02:00
eb80714402
HookError: Add optional non-aborting mode
2016-05-28 21:08:07 +02:00
42289a085e
Fix glob() pattern
2016-05-28 17:28:38 +02:00
a6200b67c0
Merge pull request #446 from matthiasbeyer/libimagstore/fix-get
...
Fix Store::get()
2016-05-28 10:35:42 +02:00
19aec6327f
Fix Store::get()
2016-05-27 23:58:37 +02:00
3d9d5795e4
Rewrite hook error module with error macros
2016-05-27 10:15:29 +02:00
cb87b4b5d8
Remove old error code which is unused
2016-05-27 10:13:03 +02:00
183c46a7dd
Use Into implementations to convert error kinds into error types
2016-05-27 10:11:51 +02:00
e91eb2f55d
Use error.into() instead of building full type
2016-05-26 22:19:29 +02:00
5e98bd76b1
Shorten type names in import
2016-05-26 22:19:08 +02:00
25c4bea818
Shorten type names in import
2016-05-26 22:17:08 +02:00
fdb5d1bb24
Replace old error construction code with new libimagerror functionality
2016-05-26 22:16:29 +02:00
2ad5cb48aa
Implement store-unload hooks
2016-05-26 21:04:04 +02:00
f19c057258
Merge pull request #432 from matthiasbeyer/libimagerror/simple-into
...
libimagerror: Impl Into<error name> for all <errorkindname>
2016-05-24 15:23:08 +02:00
41b5d6d230
Merge pull request #400 from matthiasbeyer/libimagutil/match-helper
...
Libimagutil/match helper
2016-05-24 14:41:43 +02:00
b1f43e3ef5
Impl Into<error name> for all <errorkindname>
2016-05-24 14:31:44 +02:00
b6f5b71df1
libimagstore: Refactor code with is_match!() macro
2016-05-23 21:43:20 +02:00
f0b665e5f2
libimagstore: Add dependency: libimagutil
2016-05-23 21:43:10 +02:00
80b9cae5fe
Merge pull request #391 from matthiasbeyer/libimagstore/get
...
Libimagstore/get
2016-05-23 20:01:38 +02:00
e45d9200bf
Adapt error generating code in libimagstore
2016-05-23 17:06:07 +02:00
dd7e146081
impl Into<StoreIdIterator> for GlobStoreIdIterator to be able to convert easily
2016-05-23 14:52:32 +02:00
839ec051a4
Add Store::get_all_versions() for getting all versions of a StoreId entry
2016-05-23 14:52:13 +02:00
df33dec0c3
Add new error kind: StorePathError
2016-05-23 14:51:39 +02:00
b4f17576f6
Add Store::get() for getting or failing if entry does not exist
2016-05-23 14:51:38 +02:00
bf14b9ae4e
Update dependency: fs2 0.2.2 -> 0.2.*
2016-05-23 13:37:26 +02:00
cc8642f54f
libimagstore: Replace error module imports with macro helper
2016-05-19 18:22:03 +02:00
42f7e086a3
Replace error code with macro for code generation
2016-05-17 00:26:35 +02:00
627fa7de46
Replace error code with macro for code generation
2016-05-17 00:26:35 +02:00
a69fd78058
Add dependency: libimagerror
2016-05-17 00:26:35 +02:00
a56f000e3e
Remove unneeded scope
2016-05-15 14:02:30 +02:00
a26a0645bd
Remove iflet by mapping
2016-05-15 14:01:55 +02:00
944a9bf876
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
0b7f815104
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
81810dbcc8
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
604e59ae3c
Remove unwrap() calls by matching
2016-05-15 14:01:55 +02:00
2a6e4c62fe
Remove unwrap() by matching, remove unneeded deref()
2016-05-15 14:01:55 +02:00
8d9bd5154d
Remove unwrap() by matching, remove unneeded deref()
2016-05-15 14:01:55 +02:00
a481200c9a
Replace unwrap() by matching
2016-05-15 14:01:55 +02:00
1e1cbec98b
Replace unwrap() by matching
2016-05-15 14:01:55 +02:00
70b3d3906e
Replace unwrap() by matching
2016-05-15 14:01:55 +02:00
1f66f67791
Replaced unwrap() by matching
2016-05-15 14:01:55 +02:00
7b612ce8fb
Remove iflet by mapping over Option/Result types
2016-05-15 14:01:55 +02:00
f9f5fa5717
Shorten code by using StoreError as SE and StoreErrorKind as SEK
2016-05-15 14:01:55 +02:00
a852da54dd
Remove iflet by using Option::{map_err, and}()
2016-05-15 14:00:40 +02:00
3fb6d507e5
Remove unwrap() by matching
2016-05-15 14:00:40 +02:00
ac8bcde239
Remove unwrap() hell by matching
2016-05-15 14:00:40 +02:00
Andre Bogus
cd224eaeff
roll back closure, remove unneeded slice & imports
2016-05-14 20:12:19 +02:00
Andre Bogus
981707c9c9
more style adaptations
...
again following clippy
2016-05-13 22:27:53 +02:00
b9d8e5728b
Move GlobStoreIdIterator implementation so we can have it non-public
2016-05-12 17:27:41 +02:00
a510e1b6b6
Add error printing (debug) in GlobStoreIdIterator helper type
2016-05-12 17:24:27 +02:00
5972ce7f37
Make StoreIdIterator generic
...
This patch makes the StoreIdIterator type generic over all iterators
with Item = StoreId.
As the StoreIdIterator type was previousely used for iterating over a
glob() result, I had to wrap this result type in another iterator type
which is then wrapped in StoreIdIterator.
With this patch applied, other libraries may use the StoreIdIterator
type to abstract things away in their implementation.
2016-05-12 17:21:04 +02:00
9f528fb929
Merge pull request #390 from matthiasbeyer/update-log
...
Update log
2016-05-11 12:35:27 +02:00
62f6478476
Update log: 0.3.* -> 0.3
2016-05-10 17:54:47 +02:00
87c55d5906
Remove old check from config validation
...
These keys are not used, actually.
2016-05-09 17:11:59 +02:00
285832f45f
Merge pull request #349 from matthiasbeyer/libimagstore/walk
...
Libimagstore/walk
2016-05-09 15:53:17 +02:00
c32065c2d6
Implement Store::walk()
2016-05-07 13:17:23 +02:00
3842e177d7
Make Entry::{from_file,from_str} generic over IntoStoreId
2016-05-04 13:30:19 +02:00
5d6c226953
Make some store functions generic over IntoStoreId
2016-05-04 13:30:19 +02:00
24ddf5d53b
Impl IntoStoreId for StoreId
2016-05-04 13:30:19 +02:00
7e17e213be
Fixup ModuleEntryPath macro type
2016-05-04 13:30:19 +02:00
b4db587a10
Impl Deref<PathBuf> for StoreId
2016-05-03 14:58:18 +02:00
4d4acf9168
Fix IntoStoreId implementation
2016-05-03 14:58:05 +02:00
799b9e27a5
Remove typedef for StoreId type
...
but make it a new type instead.
Also derive and implement as many traits as possible for it, so we keep
backwards compatibility as much as possible.
Anyways, we need to rewrite some code for this.
Suggested-by: Marcel Müller <neikos@neikos.email>
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2016-05-03 14:58:05 +02:00
770cc3e86b
Add dependency: walkdir = 0.1.5
2016-04-28 17:52:46 +02:00
b629d0b8f1
Merge pull request #367 from matthiasbeyer/unwrap_err
...
Unwrap err
2016-04-21 15:08:36 +02:00
cb3683940e
Remove unneeded module specifiers from Deref{,Mut} impls
2016-04-21 13:13:58 +02:00
fd9dee7dea
Implement Debug for StoreIdIterator
2016-04-20 21:46:02 +02:00
872114d86f
FileLockEntry: Derive Debug
2016-04-20 21:46:02 +02:00
01c226f0ca
Revert change to unwrap_err() here, trait bounds not fulfilled
2016-04-20 21:46:02 +02:00
0bb40fca11
libimagstore: Replace .err().unwrap() with .unwrap_err()
2016-04-20 21:46:01 +02:00
144c42aee5
libimagstore Update regex 0.1.x -> 0.1.*
2016-04-17 21:00:31 +02:00
6a407365bd
Enhance store config errors by printing (println)
2016-03-26 15:28:35 +01:00
b7aac5e275
Remove aspects which were removed in #277
2016-03-26 15:03:34 +01:00
4a3fdfe862
Merge pull request #288 from matthiasbeyer/libimagstore/fix-wrong-hook-call
...
Fix wrong hook execution: post-retrieve
2016-03-26 13:57:00 +01:00
9e3de45bdd
Merge pull request #281 from matthiasbeyer/per-crate-readme
...
Per crate readme
2016-03-26 13:56:47 +01:00
94bed5f364
Merge pull request #287 from matthiasbeyer/libimagstore/hooks/fix-missing-tostr-impl
...
Add missing hook_error_type_as_str() impl
2016-03-26 13:56:43 +01:00
7c276d541d
Merge pull request #279 from matthiasbeyer/libimagstore/rewrite-file
...
Truncate file to zero size before writing new content, so we do not p…
2016-03-26 13:56:06 +01:00
0a181479c8
Merge pull request #277 from matthiasbeyer/libimagstore/remove-unused-aspects
...
Libimagstore/remove unused aspects
2016-03-26 13:55:46 +01:00
93d7b81dc5
Merge pull request #276 from matthiasbeyer/libimagstore/config-getter
...
Store::config() added, mainly for debugging use
2016-03-26 13:55:11 +01:00
ad35d0bf50
Add missing hook_error_type_as_str() impl
2016-03-25 19:17:35 +01:00
bb918db5c3
Fix wrong hook execution: post-retrieve
2016-03-25 19:17:19 +01:00
b54576d95d
Add README for libimagstore
2016-03-25 15:56:42 +01:00
ab417a17d0
Truncate file to zero size before writing new content, so we do not partially write the file
2016-03-25 15:39:26 +01:00
Kai Sickeler
cdbc0ceae5
Removed unused functions
2016-03-25 15:22:45 +01:00
Kai Sickeler
797a707c8e
removed unused Pre- / PostRead aspects
2016-03-25 15:22:45 +01:00
ad18091b88
Store::config() added, mainly for debugging use
2016-03-25 15:15:37 +01:00
c5c60cf36d
impl Debug for Store
2016-03-25 13:30:26 +01:00
22052ba9f0
Add some more error types to be more specific about what happened
2016-03-25 13:30:16 +01:00
a96ca837c6
Make HookPosition clonable
2016-03-24 17:57:19 +01:00
2deb98d764
Add deny() so we turn some warnings into errors
2016-03-22 19:44:04 +01:00
c59ed7d2fe
Use unused result when file.write_all() and return error
2016-03-22 19:44:04 +01:00
dc7a212278
Use unused result which must be used when file.seek()ing
2016-03-22 19:44:04 +01:00
a45571e299
Remove unused function AspectConfig::config()
2016-03-22 19:44:04 +01:00
8e852384bd
Remove unused function from Store
2016-03-22 19:44:04 +01:00
a9eddb088a
Remove unused functions from LazyFile
...
- Remove uses of LazyFile::new() from tests
- Use LazyFile::get_file_mut() in test as we want the file mut anyways
2016-03-22 19:43:48 +01:00
af161394ad
Remove dead code in configuration.rs
2016-03-22 19:43:48 +01:00
a4c820d308
Remove unused keyword "mut"
2016-03-22 19:43:48 +01:00
8aa3f31970
Remove unused variables
2016-03-22 19:43:48 +01:00
2fb59b3ae6
Remove unused imports
2016-03-22 19:43:48 +01:00
041a2a4942
Add encoding error if typeconversion fails
2016-03-19 15:15:04 +01:00
fe0849f8eb
Add implementation for Store::retrieve_for_module()
2016-03-19 15:15:04 +01:00
80945fcd16
Rewrite build_entry_path() so it does not panic!() anymore
2016-03-19 14:48:09 +01:00
b8b49b3240
Move: build_entry_path() from imag-store to libimagstore
2016-03-19 14:47:45 +01:00
65a64774b6
Fix: Allow NonMutableAccess in MutableHookDataAcessor
2016-03-16 16:46:54 +01:00
feac9ae9e8
Store::new(): Aspect configuration added
2016-03-16 16:46:54 +01:00
96deb17515
Aspect: Optionally get configuration
2016-03-16 16:46:54 +01:00
f1246093f1
Implement AspectConfig::get_for()
2016-03-16 16:46:54 +01:00
08b36972f1
Make store configuration optional
2016-03-16 16:46:54 +01:00
0286d8a25e
Store: Add hook configuration on registration
2016-03-16 16:46:54 +01:00
59fdb7ef3d
Store: Get configuration object not as reference, to avoid livetimes
2016-03-16 16:46:54 +01:00
6dae03d731
Hook: Must provide name, gets reference to configuration
2016-03-16 16:46:54 +01:00
9961f64ce6
Add AspectConfig type
2016-03-16 16:46:53 +01:00
c942c74f05
Implement getter for aspect names
2016-03-16 16:46:53 +01:00
d249f604d8
Implement: config_is_valid()
2016-03-16 16:46:53 +01:00
cd55e7d625
Add Aspect building based on configuration
2016-03-16 16:46:53 +01:00
1fe545eb8b
Add configuration.rs
2016-03-16 16:46:53 +01:00
a771db9ea4
Add error kind for config errors
2016-03-16 16:46:53 +01:00
9e8ef57f72
Remove {Pre, Post}HookErrorKind types as they are not needed anymore
2016-03-16 16:46:53 +01:00
987b271cc7
Add access type checking error
2016-03-16 16:46:53 +01:00
5ba260943b
Make hook execution parallel for NonMutableHookDataAccessor impl for Aspect
2016-03-16 16:46:53 +01:00
7102a57808
Make hook execution parallel for StoreIdAccessor impl for Aspect
2016-03-16 16:46:53 +01:00
d8760c9737
Impl NonMutableHookDataAccessor::access() for Aspect
2016-03-16 16:46:53 +01:00
c4c02f2274
Impl MutableHookDataAccessor::access_mut() for Aspect
2016-03-16 16:46:53 +01:00
2022f4e4bb
Impl StoreIdAccessor::access() for Aspect
2016-03-16 16:46:53 +01:00
2c544382a1
We do not need boxes here
2016-03-16 16:46:53 +01:00
679865464b
Reimplement hook registration and execution
2016-03-16 16:46:52 +01:00
d6a581e69f
Add HookPosition enum
2016-03-16 16:46:52 +01:00
37a505609e
Remove hook traits. There can only be one trait: Hook
2016-03-16 16:46:52 +01:00
be1ba5be4b
Add Aspect type for hook system
2016-03-16 16:46:52 +01:00
3e62b71605
Add StoreIdAccessor trait
2016-03-16 16:46:52 +01:00
fa9e8e8192
Split hook/mod.rs into several files
2016-03-16 16:46:52 +01:00
3f15fd0fa8
Move hook.rs -> hook/mod.rs
2016-03-16 16:46:52 +01:00
a9600f23b3
Threaded hook execution
2016-03-16 16:46:52 +01:00
79ba3f5151
Hook calling rewrite
2016-03-16 16:46:52 +01:00
0610f0756a
Add dep: crossbeam = 0.2.8
2016-03-16 16:46:52 +01:00
3421e8d4d9
Add HookExecutionError error kind
2016-03-16 16:46:52 +01:00
1c40be78a9
Add HookAccessor types for accessing mutable/nonmutable hook calling in a generic way
2016-03-16 16:46:52 +01:00
e1414beb8d
Impl Into<HookError> for error kinds to convert errors in a simple way
2016-03-16 16:46:51 +01:00
57831dceb0
Add HookErrorKind enums for Pre and Post errors
2016-03-16 16:46:51 +01:00
d7733aa13a
Make hooks configurable
...
This introduces the Configurable trait and abstracts the
dependency-traits for each trait over a generic "Hook" trait, which
requires Configurable and Debug to be implemented, but has no own
functions.
Configuring is done _without_ the Runtime object, so we can be sure that
the hooks do not have access to the store object.
2016-03-16 16:46:51 +01:00
d9a4512821
Add debug output for hook exec functions
2016-03-16 16:46:51 +01:00
da3554d98e
Add debug output for hook register functions
2016-03-16 16:46:51 +01:00
6af5be15ad
Hooks must implement Debug
2016-03-16 16:46:51 +01:00
bb0e7e2468
Implement: execute_post_delete_hooks()
2016-03-16 16:46:51 +01:00
f703e8a4cd
Implement: execute_post_update_hooks()
2016-03-16 16:46:51 +01:00
7014256407
Implement: execute_post_retrieve_hooks()
2016-03-16 16:46:51 +01:00
5831d3bc7b
Implement: execute_post_create_hooks()
2016-03-16 16:46:51 +01:00
196be30d91
Implement: execute_post_read_hooks()
2016-03-16 16:46:51 +01:00
09acddaef9
Implement: execute_pre_delete_hooks()
2016-03-16 16:46:51 +01:00
5aa663987b
Implement: execute_pre_update_hooks()
2016-03-16 16:46:51 +01:00
94128f8bcc
Implement: execute_pre_retrieve_hooks()
2016-03-16 16:46:50 +01:00
3244b87c7e
Implement: execute_pre_create_hooks()
2016-03-16 16:46:50 +01:00
975a2bc8b9
Implement: execute_pre_read_hooks()
2016-03-16 16:46:50 +01:00
ac280ba616
Insert pre/post hook execution functions
2016-03-16 16:46:50 +01:00
3cf2588104
Add error types for pre/post hooks
2016-03-16 16:39:39 +01:00
17b1d6c390
Redefine hook trait system
2016-03-16 16:39:39 +01:00
001c80b72d
Hook: Add traits which must be implemented for Hook
2016-03-16 16:39:39 +01:00
b9127381b8
Add hook registering
2016-03-16 16:39:39 +01:00
d99d25a3e1
Add HookRegisterError kind
2016-03-16 16:39:14 +01:00
e969b8678e
Add hook traits
2016-03-16 16:39:14 +01:00
361dec4cec
Revert "Check whether the StoreId is inside the store, before doing anything on the FS"
...
This reverts commit 373502217e
.
2016-03-12 16:06:10 +01:00
9a918c9252
Merge pull request #242 from matthiasbeyer/libimagstore/revert-id_in_store-check
...
Revert "Check whether the StoreId is inside the store, before doing a…
2016-03-11 16:02:11 +01:00
6d7065d10e
Fix test: StoreId does not start with "/" anymore
2016-03-10 19:12:00 +01:00
a9a64d4ab6
Fix: implicitely create directories on file saving
2016-03-10 19:06:27 +01:00
a3a09ff4ee
Fix store creation of libimagstore
...
The macro may not prefix the StoreId internal PathBuf with '/', so this
path is not absolute. This way we can introduce `storify_id()` which
creates a proper PathBuf into the store out of our StoreId object.
Does not yet do verification whether the path is inside the store,
actually.
2016-03-10 18:46:26 +01:00
3413646934
Revert "Check whether the StoreId is inside the store, before doing anything on the FS"
...
This reverts commit 373502217e
as this commit was introducing a bug.
The StoreId type says `/test/example` for a store id path, which is
completely valid, as the root (`/`) is the store itself. The
id_in_store() function assumed that the store-id is the full
(file-system) path to the store entry, which is false.
This commit does not introduce a fix but revert the check.
2016-03-10 18:14:53 +01:00
df1fd31771
libimagstore: Update glob 0.2.10 -> 0.2.11
2016-03-07 17:46:58 +01:00
257fe1880e
EntryHeader: Function to get toml object
2016-03-06 11:51:09 +01:00
74634227e0
Use unused result
2016-03-01 21:23:09 +01:00
22e9f8a93b
Remove unused import
2016-03-01 21:21:14 +01:00
1a8106dfd2
Add missing error-forwarding
2016-03-01 21:20:53 +01:00
38b9e15615
Remove unreachable statement
2016-03-01 21:19:15 +01:00
08c37c5fcb
Remove unused "mut" from EntryHeader::delete()
2016-03-01 21:18:17 +01:00
ed3da38701
Remove unused "mut" from EntryHeader::read_with_sep()
2016-03-01 21:18:10 +01:00
309e70df14
Remove unused "mut" from EntryHeader::set_with_sep()
2016-03-01 21:18:04 +01:00
85e69f083e
Remove unused "mut" from EntryHeader::insert_with_sep()
2016-03-01 21:17:49 +01:00
4390c39a6c
Remove unused "mut" from Store::delete()
2016-03-01 21:17:40 +01:00
8dfccba0b8
Remove unused "mut" from Store::retrieve_copy()
2016-03-01 21:17:33 +01:00
87bf7854c7
store: Update regex = 0.1.54
2016-02-23 13:13:22 +01:00
df4bc13018
use lazy_static so we do not compile regex multiple times
2016-02-20 21:06:47 +01:00
0cab0f114d
Merge pull request #149 from matthiasbeyer/libimagstore/header-field-path-util
...
Add header field addressing by str
2016-02-14 16:10:56 +01:00
9951422dc4
Impl From<Table> for EntryHeader
2016-02-12 22:07:15 +01:00
794e7617e3
Impl Into<Table> for EntryHeader
2016-02-12 22:02:33 +01:00
df9313c599
Add EntryHeader::insert_with_sep()
2016-02-12 21:57:53 +01:00
54ba22d0ef
Add EntryHeader::set_with_sep()
2016-02-12 21:56:48 +01:00
bca0143343
Add EntryHeader::read_with_sep() which allows seperator modification
2016-02-12 21:55:06 +01:00
a4fa1bac07
Add split-char setting
2016-02-12 21:50:44 +01:00
6397068ddc
Add test for EntryHeader::delete()
2016-02-12 20:02:57 +01:00
cb87f31a23
Add EntryHeader::delete()
2016-02-12 20:02:56 +01:00
30e8afeced
Add tests for inserting values
2016-02-12 20:02:56 +01:00
965c3445a1
Add test for setting value at new path
2016-02-12 20:02:56 +01:00
dd53e467d7
Add EntryHeader::set() test
2016-02-12 20:02:56 +01:00
b4362f5c65
Alter: EntryHeader should contain a Value, not the BTreeMap<>
2016-02-12 20:02:56 +01:00
74a9b844ca
Add debugging output in tests
2016-02-12 20:02:41 +01:00
60ccf58f84
Merge pull request #148 from neithernut/impl-store-retrieve_copy
...
Implement Store::retrieve_copy()
2016-02-12 18:59:56 +01:00
103a0dea17
Add test: EntryHeader::read()
2016-02-11 15:45:48 +01:00
731a446546
Implement EntryHeader::read()
2016-02-11 15:45:47 +01:00
548aee8d5f
Implement EntryHeader::set()
2016-02-11 15:45:47 +01:00
4d94f8a67f
Implement: EntryHeader::insert()
2016-02-11 15:45:47 +01:00
3b09e0c214
Move helper functions outside of walk_header(), so we can use them
2016-02-11 15:45:47 +01:00
42aade5cef
Add tests for path-to-value extractor functionality
2016-02-11 15:43:58 +01:00
4759076249
Implement walk_header()
2016-02-11 15:43:58 +01:00
a2e3598c01
Add more error types for header walking
2016-02-11 15:43:58 +01:00
0727fca797
Add tokenizer helper function
2016-02-11 15:43:58 +01:00
2f6cfb5868
Add interface for header field addressing by str
2016-02-11 15:43:58 +01:00
00ccc22ef5
Add some debugging output for {create,retrieve,delete}
2016-02-09 20:09:12 +01:00
d85f985694
Fixup path-includes-path checker
2016-02-09 20:08:58 +01:00
ddd54e03ad
Add store path getter
2016-02-09 13:45:13 +01:00
a0afc9245b
Merge pull request #186 from TheNeikos/verify-toml_table
...
Verify that nothing but tables exist in base table
2016-02-07 01:54:35 +01:00
ebb076c9fd
Merge pull request #184 from matthiasbeyer/libimagstore/fix-179
...
Check whether the StoreId is inside the store
2016-02-07 01:45:48 +01:00
Marcel Müller
e315fa9dcf
Remove unwrap in drop and warn users
2016-02-07 01:28:16 +01:00
Marcel Müller
9ba2439da3
Add debug output
2016-02-07 01:28:15 +01:00
Marcel Müller
6173cff762
Verify that nothing but tables exist in base table
2016-02-07 01:27:50 +01:00
Marcel Müller
293fd0da00
Add verify
2016-02-06 18:57:39 +01:00
Marcel Müller
e079628397
Remove unneeded closure
2016-02-06 18:52:17 +01:00