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
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
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
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
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
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
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
373502217e
Check whether the StoreId is inside the store, before doing anything on the FS
2016-02-06 18:48:59 +01:00
eb0d1dba69
Merge pull request #176 from matthiasbeyer/update-crate-version
...
libimagstore: Update dep: version: 1.1.0 -> 2.0.1
2016-02-05 22:04:27 +01:00
ddd61f9c1f
libimagstore: Update dep: version: 1.1.0 -> 2.0.1
2016-02-05 21:53:26 +01:00
959a68f1a6
Merge pull request #153 from matthiasbeyer/libimagstore/add-debugging-output
...
Libimagstore/add debugging output
2016-02-05 16:03:23 +01:00
0931ede580
Merge pull request #165 from matthiasbeyer/remove-unused-imports
...
Remove unused imports
2016-01-30 13:47:57 +01:00
213cb32a88
Fix: Add EntryHeader::toml_mut()
2016-01-30 12:38:36 +01:00
f6e03c804e
store/store: Remove unused imports
2016-01-29 23:06:15 +01:00
814e85508b
store/error: Remove unused imports
2016-01-29 23:06:04 +01:00
33b6a89a02
Merge pull request #156 from matthiasbeyer/libimagstore/fix-private-intostoreid
...
Fix: Make IntoStoreId public
2016-01-29 19:11:03 +01:00
618d39cf7c
Merge pull request #155 from matthiasbeyer/libimagstore/fix-missing-doc
...
Fix: Add missing documentation for mod module_path
2016-01-29 19:10:56 +01:00
fbb296495b
Merge pull request #154 from matthiasbeyer/libimagstore/fix-152
...
Fix: negation error
2016-01-29 19:10:51 +01:00
72cf550c9f
Fix: seek() file back on reading it
2016-01-29 18:17:41 +01:00
69bebfcfc0
Fix: Make IntoStoreId public
2016-01-29 17:03:24 +01:00
c64cdad63b
Fix: Add missing documentation for mod module_path
2016-01-29 17:03:05 +01:00
38791ea2f9
Fix: negation error
...
Suggested-by: Marcel Müller <neikos@neikos.email>
2016-01-29 16:53:13 +01:00
3b51328aa7
Merge pull request #145 from neithernut/fix-store-retrieve
...
Fix Store::retrieve()
2016-01-29 16:29:38 +01:00
b04c676eb9
Add store debugging output
2016-01-28 21:06:49 +01:00
4bc905c692
Add debug output for LazyFile::{get_file_mut,create_file}()
2016-01-28 21:00:33 +01:00
2c398d941b
Let LazyFile derive Debug
2016-01-28 21:00:13 +01:00
88f6086c97
Add dep: log = 0.3.5
2016-01-28 20:59:43 +01:00
Julian Ganz
c6ec47a8af
Change status _after_ calling StoreEntry::get_entry()
...
StoreEntry::get_entry() will return an error if the store entry's status
is "borrowed".
2016-01-28 20:47:34 +01:00
Julian Ganz
355ec697c1
Implement Store::retrieve_copy()
2016-01-25 22:26:00 +01:00
Julian Ganz
1085127036
Add missing error handling
...
We don't want to panick if a lock inside the store is broken. We want to
notify the user, so she can start panicking.
2016-01-25 20:38:45 +01:00
6c53f172dc
Minify implementation of Store::retrieve()
2016-01-25 15:32:50 +01:00
Julian Ganz
540348380e
Mark store entry as borrowed
2016-01-25 12:34:37 +01:00
Julian Ganz
86ab4ba4b1
Slimline translation from entry to file lock entry
2016-01-25 12:32:30 +01:00
Julian Ganz
9760f72e79
get_entry() already asserts the entry is not borrowed
2016-01-25 12:31:22 +01:00
Julian Ganz
acfbb16eb2
Fix Store::retrieve()
...
The previous version of `Store::retrieve()` required the entry to be
already registered in the store's hashmap.
2016-01-24 22:57:11 +01:00
4a08eed700
Merge pull request #144 from matthiasbeyer/libimagstore/add-missing-pub
...
Fix: Add missing "pub" on Entry functions
2016-01-24 20:29:11 +01:00
82873d82ba
Merge pull request #143 from TheNeikos/add-store_update
...
Implement storenetry:write_entry
2016-01-24 20:25:57 +01:00
d24f661778
Fix: Add missing "pub" on Entry functions
2016-01-24 20:20:43 +01:00
Marcel Müller
4e990465c8
Implement storeentry:write_entry
2016-01-24 20:05:33 +01:00
bbd08d9526
Add Store::retrieve_for_module()
2016-01-24 17:40:06 +01:00
36770abac5
Add iterator type for StoreId
2016-01-24 17:39:41 +01:00
e951666e3d
Use glob
2016-01-24 17:39:41 +01:00
Marcel Müller
ee8cf35fcc
Implement store::create
2016-01-24 17:34:29 +01:00
Marcel Müller
c7f584a81a
Add from_str to Entry
2016-01-24 17:04:33 +01:00
Marcel Müller
fdc3dde95b
Change names to reflect changes
2016-01-24 17:04:33 +01:00
Marcel Müller
15931d3471
Remove EntryHeader::new_current
2016-01-24 17:04:33 +01:00
Marcel Müller
a64ffdfc56
Implement entry reading
2016-01-24 17:04:33 +01:00
Marcel Müller
97b7090824
Partially implement get_entry
2016-01-24 17:04:33 +01:00
Marcel Müller
50413101c4
Move entry, content and header into store
2016-01-24 17:04:32 +01:00
Marcel Müller
ba2e52788b
Add entry_creation
2016-01-24 17:04:32 +01:00
Marcel Müller
d949cddc65
Implement Store::retrieve
2016-01-24 17:04:32 +01:00
24ebe6736e
Merge pull request #114 from matthiasbeyer/libimagstore/store-new-behaviour
...
Store::new(): Create path if nonexistent
2016-01-23 19:57:44 +01:00
796cd01343
Init the header with default values
2016-01-23 16:41:22 +01:00
38292ea8cb
Dont pass the table to the header object, but generate it in ::new()
2016-01-23 16:40:00 +01:00
c48f3afcf4
Return error if create() fails
2016-01-23 11:57:40 +01:00
0c3bcc3f15
Add error kind: Create errors
2016-01-23 11:57:40 +01:00
80b0501d03
Introduce error if the store path exists but is a file
2016-01-23 11:57:40 +01:00
4f71563eb4
Store::new(): Create path if nonexistent
2016-01-23 11:57:40 +01:00
ffe56c4993
Add test with current version
2016-01-23 11:44:48 +01:00
e01f70aaad
Use version
...
We use this not only for tests, but for the whole crate, as I assume
that we might need this crate later on in the non-test sources anyways.
2016-01-23 11:44:48 +01:00
b0859c3e2f
Use semver parser instead of regex
2016-01-23 11:44:47 +01:00
b486960720
Add version-string verification
2016-01-23 11:30:54 +01:00
dd11e32d82
Include regex
2016-01-23 11:30:54 +01:00
775d724a8c
Add header test: Invalid version string
2016-01-23 11:30:54 +01:00
1187f7d9b3
Add header verification test
2016-01-23 11:30:53 +01:00
9884f78dae
Move header verifying into helper function
2016-01-23 11:30:53 +01:00
2a4f3baf0b
Add tests on header checkers
2016-01-23 11:30:53 +01:00
3e661439e8
Add sanity-check to header parsing
2016-01-23 11:30:53 +01:00
6be3011e85
Add: EntryHeader::parse()
...
Introduce Error + Error-kind for it, return Result<> from the ::parse()
function.
2016-01-23 11:28:20 +01:00
Marcel Müller
03c2ded21b
Move tempdir to dev-dependencies
2016-01-22 21:08:56 +01:00
Homu
2e77afbb3c
Auto merge of #125 - TheNeikos:add-store_utils, r=matthiasbeyer
...
Add store utils
Do not merge yet!!
2016-01-22 10:31:02 -08:00
Homu
7511e220c8
Auto merge of #110 - neithernut:remove-residual-storeentry-methods, r=matthiasbeyer
...
Remove methods which are not needed anymore
These methods were intended for managing cached entries. Sice it was
decided not to serve caching in the store, these methods are no longer
needed.
2016-01-23 03:06:09 +09:00
Marcel Müller
40572d946d
iQIcBAABCgAGBQJWomU5AAoJEN1O030MrHbiHZgQAKF7BnDgNMMMLS0B5EkN+rtJ
...
KDMJjn8iaHcww1H2GMAPxW24xTNdD4JbWOBBC/g76YUtO9XdpXgeiz7JvtfAtZuQ
mltpTAUncCRFRuTHqvDnKKPWXv4s0NpTJthJOtse+FwhWF8hgCKkXef8lJeMDxLg
7ipF/bIFnUAYq1BUc2NVguAVD23c+l05lgTEaUlzqNENozJWGqA8EwpE2ShEpjSH
RmOD9FowY1pFqfIOOTdNcVSNAnIM2LnCEqS9BgeE1vtToeOo9yz9B+ffyqoJgjEp
AD8Q0S4Kp0pMkduUpZbCEu3KCcSUcdRpojdsAbMKPiiMW/CDQQk3RUavO41zSci3
gUOqnURaEbLBG4j3h47sA3PZOcsDrBLYL9G4aWk/6BG8kctrC4b3yzDU50InWOJQ
2b1ppTCcQYnTUOLMvYkm1sFk/LhofH+Wk3GypGlIvw9xJISNHj73G9Qo3tF6OhWL
/FaMlPPJYTbWsCaQcJTNKO7QcLyV72bJUDBaN9Z8+2ueQvqEwNvBOEcbJnce51+b
1sOoklhEjpLpGUGvQn0l8Ig2ezV98CJrOwHPqQSTrFBcrCRB2sHLMmt0AzLjINEH
SCRUj3ZUqp9TMU3X/zH1f1d8lglJhmZcPBomclbliyeXHiSvrBKGytfzeKG+aNIK
6Ionaq9akACh5kbjctGZ
=Y00k
-----END PGP SIGNATURE-----
Add lints to make sure macro does not generate warnings
2016-01-22 18:22:01 +01:00
Marcel Müller
560e7106f8
iQIcBAABCgAGBQJWomPqAAoJEN1O030MrHbiYEEQALGQfJYEfbCgvVejgiwOKMjv
...
m7U7nEQbMMVYHVbeCdUs2PXHwCFr8slSccyWoF0QNHX4/Tx5t+XJ9JnRsyIhQyzi
UWRQo3mHDErn2lP+M+4kfDWPpOdJicJKAxyiLgGo/Aw5CblX9MAaKfE85rZh7atx
JM567tN+O/Cflt676Mva3xnzpisHFKVJKG58k+QzmZOgNtROWg3PTyAb+/T2c6Vd
Ty+zW4zt7LwKjGlK9YEDqEwpg3STKUPT9T5S6ZFkPHBbjPVtM5yXK1oTWOpE7zn+
iXSjCqfC2Ok+MT9YB1loexY2f6bzwqZkmWHl3M+4f1fJfhBQR0Zdz4a/hyp2YLcv
hVW/X/AeVCdoMOBZ9PCaFjY6aXFycB6HlDDU1jldCN5U08BfY+h6hDtW5xaPLj2s
WWeyIZgnqLJsGk7VK+/KAdDZMAZVwoC69AVXQS+IjejetQWHY5OFhCBfRVZ02/aX
jwdZSfw5oNCGsvrzknkcECL9bPQAGRptoLbGuuLNPaACNd8ebWTmw4gwxFYwwAGY
Dq6NDA33S3uRDvK24MpUA8g5OxsU8kzblhP6iYqGTg0dLnGFRzioKDg3v7NFKN9/
Yy7g1uQCZIVbrVnZF6w68jfuX6IoIHWl6eg6De2AmMNClYGZflDzbSoYCZkiz1d4
AR6HHXLT84nAJ2tCgK0S
=6TMR
-----END PGP SIGNATURE-----
Add macro to create ModuleEntryPath
2016-01-22 18:16:26 +01:00
af411fbdb0
Add Entry mutable getters
2016-01-22 14:25:03 +01:00
c21bed3af9
Add Entry getters
2016-01-22 14:24:20 +01:00
cfa8c29eaf
error.rs: Add documentation
2016-01-21 21:31:48 +01:00
434a766536
lazyfile.rs: Add documentation
2016-01-21 21:30:41 +01:00
64ee182d63
entry.rs: Add documentation
2016-01-21 21:28:29 +01:00
67ae39ab5b
header.rs: Add documentation
2016-01-21 21:28:18 +01:00
f921a73fb0
content.rs: Add documentation
2016-01-21 21:28:08 +01:00
Marcel Müller
a75ba8ea72
iQIcBAABCgAGBQJWnTB3AAoJEN1O030MrHbi9V4P/3tis8CVncUcVFC5NohTBbRk
...
tFrubrLNw+ketVYV8JsHPtygtvZ8jfMy3DdSTHqxOoC0jPEERSMwkZ98AVySS70w
D2A9Wjxt6s2heg23MMpEtP/axBMoSshj30Hu/S70qI9M0HskloJ1he02urhs9LqA
kCUnS9oiiQ2qxtOuoGk4NLwOa/fyPFdznYjBjFOnIjf6Qmc0xaMTvxSei1H18GcW
+Ug9eU3XERV4mehehXSqzrAKa3zTsF3dur6Y+e6rgYbaQpv7vBNlNr733R1ao0tY
A8UUb/90hIUKpfgLNQYbAXI37AvrKj5njk/BGm5ca/gRUwWkL1nKkkolvJvsjQgO
hyifT3JmHmtOa4A4mgDF1DLOAZVkOXCKPbA9HIaI0wpZMHEBjGD7UTf52QtLD4Cv
0rwgGqAR1qzUw4ijzwYm+s/YNbm9Ecn22cmRIvk5ZGGbWu+q2Y+9+b/sCbgr2EQP
lWkxT8qF/sNw9MVhwrnu2FpimL0IaZ9iKSPGSzbsoaBm4M86STGPYXrIaycq6i3u
17Dqvv3U26R08AEw/5thZFwazOMj305M0CjqkyvNGCosKHG+FrHIgK4hgNmB5vGe
T11RkfSRq15s+TRgcvjIYrPmtrcXB11+WBzI2K/nSQOnjCENYx2oBKRSBILwhuaC
TQedJRXhwAp32VO3Hojb
=TpUb
-----END PGP SIGNATURE-----
Seek to beginning of file before reading
2016-01-18 19:35:35 +01:00
927205dfcc
Fix test: lazy_file_with_file
2016-01-18 18:30:55 +01:00
Marcel Müller
9d0afade98
iQIcBAABCgAGBQJWnR7yAAoJEN1O030MrHbien4P/2ixFj7HRpWLZDARUTOy1f0I
...
E/WY5FhCD5Nx2EAu1urJhZORwAeOyJurQVjoSC8FfcayK87Co3Hw9bt9CDB5uIxt
aQlkA5YkamSlL1FQlOmcEqBUBISGmRtXB89zWeDWscRTrHb9pAPFZmrKpnklfa5r
Lye3dAT7yrpTsPp2HxY2ojw5qHRb5Ojp57SKvAX27bYyEjk8PIREC2ZIgk08Mw1h
kmx2QsIvWKGGTkOoBj/Lw+rL1aW+b6E6VdVngeZ04l9qU+3JOtHUkFyfvaiJvf7V
0HDiQIEHDjLCeZwvjVgzxBxQE/pANpMtno6y3LF99FdgfQtQy6hswaUpMilk2N9X
Mq+kZ1bWaz6Q2Oo3GSFhWeAOgM/en1MHuxRQhjUMZVxp1tsqLo3piq5Ywi1kg/yR
Dsxvw/AmQbkV8S77RhbIN+aRbSg6kBs6QmaAy4fVB4f+fnp6WKHIZ4yselZMtwUI
AHVsXCvlQwmDm4BG4khJfKEd36x9hJAWnpKkNCprGhedN8QRgV7GmHZ4b3LBtODB
UI338SX6ZyZmnYQV3mNgJ5mvzffnjZF0xup5rMLOg3SyNjKoirjYdlbb2SH7tNLp
+EwBIJGCaFbiVFRoh1iHTvxtbKj218NPjP6ZU+UowBM5mlysRpVtCAYVGPprl+u7
aOtLp8WQDjnf8ysBL5pk
=ZLhc
-----END PGP SIGNATURE-----
Use tempdir in tests
2016-01-18 18:20:50 +01:00
Marcel Müller
5d3cb4a3af
iQIcBAABCgAGBQJWnRh+AAoJEN1O030MrHbiUHQQAJ3bhzz4O7qytq9X4WUkW80W
...
A+Dk5Oyzm4QajdMDw1lW+FJT1LHAA4q14nTKTZlCZKT0doxZYbQENrBjzhAQaKin
kIZSrCmKulziAVLIuXGq9wmaz6CJ4kHb+GWlC82U575yIb8XBpqpIjUAwboP9xZk
xHaGT8l9+KPMUCXd9zU3KCJHg3ZO3ckOJm0gmG4JvmvaUX+r38cgO3zwRPpdVLVW
cnQ/aPLkaeLfP2auSdRDeVOkhcl5uWgdQcvnqTkPUb+gQUXV01WpqzoxmVhEPVv1
kLWIGRzFEmxrNadAqJTC9AE5DBnoRM7/cge2QZ9vVtJsdcwRYwjw4qSunvPAusdb
lXmA0+1aJPpkGMHVywNBHYq5fR89etrQBZ3Roz9LAp2eKNAsXyJYg0CT6PgzmEhp
cPVOCHizXWwCLFRZI0zn9WSWS9EFm0H2FJDGfSDAoNPyO2RAmtu+8tXU+vgwvox+
B3j5jEQmF8c8A+SE0Qeh7IloQWMXCfnJrgeo7sbhYq8w0WPTLhiX7BEtu3K3Nvi6
bG00BHihvOD2wu1DiTIzPTJkP3rMK4VD6sZmXSUFjEVtzn1rN9l2hYjkyMQj/xlG
RATEMP4TvB/eVktfZ+nFr5XtGGFAY1hsVBd5FnV874J6OHGD6zqt21lgxGCF0MUw
cwqyKk6K+l6Ljf8UAdvx
=Ni+I
-----END PGP SIGNATURE-----
Add file creation
2016-01-18 17:53:18 +01:00
Homu
bec97f8fc2
Auto merge of #111 - neithernut:impl-store-delete, r=matthiasbeyer
...
Implement `Store::delete()`
Targets #106 .
2016-01-17 10:12:30 -08:00
Julian Ganz
82ed978e90
Styling: remove some whitespace and a scope
2016-01-17 19:08:15 +01:00
Julian Ganz
e6c05e4f5b
Implement Store::delete()
2016-01-17 18:50:03 +01:00
Julian Ganz
bcebe86546
Add new error type for low-level file system errors
2016-01-17 18:45:26 +01:00
Julian Ganz
78701c7332
Add error type for communicating that an entry is locked
...
We need this error type to let the user know when she is trying to
remove an item which is currently edited.
2016-01-17 18:45:26 +01:00
Homu
c4711d2508
Auto merge of #109 - matthiasbeyer:libimagstore/remove-unused-imports, r=matthiasbeyer
...
Remove unused imports
@TheNeikos
2016-01-18 00:29:49 +09:00
Julian Ganz
66daa255a9
Remove methods which are not needed anymore
...
These methods were intended for managing cached entries. Sice it was
decided not to serve caching in the store, these methods are no longer
needed.
2016-01-17 16:25:14 +01:00
48071fbc7b
Remove unused imports
2016-01-17 16:23:35 +01:00
345e1bffeb
Add Store::new()
2016-01-17 16:04:31 +01:00
Marcel Müller
6ec2b02792
Replace Option with enum of presence
2016-01-17 15:28:25 +01:00
Marcel Müller
cfc6e860b1
Add documentation to src/store.rs
2016-01-17 15:28:24 +01:00
Marcel Müller
313a0f9d7e
Add missing pub modifiers to Store impl
2016-01-17 15:28:24 +01:00
Marcel Müller
463c182bcc
Use StoreEntry instead of a tuple
2016-01-17 15:28:24 +01:00
Marcel Müller
d4c850ef17
Remove export of types
2016-01-17 15:28:24 +01:00
Marcel Müller
dcdd67db9e
Add whitespace between implementations
2016-01-17 15:28:24 +01:00
Marcel Müller
418ab5b9eb
Rename path arguments to id
2016-01-17 15:28:24 +01:00
Marcel Müller
044c19f0cc
Add storeid
2016-01-17 15:28:23 +01:00
Marcel Müller
0b7ad4e2fd
Fix inconsistency
2016-01-17 15:26:04 +01:00
Marcel Müller
34f2d4c1f1
Add Drop to FileLockEntry
2016-01-17 15:25:59 +01:00
Marcel Müller
5b1af2bebd
Add missing Debug, Clone impl
2016-01-16 19:16:41 +01:00
Marcel Müller
3c80180df0
Revert "Make "Store" a trait"
...
This reverts commit 912c84e663
.
2016-01-16 19:04:15 +01:00
Marcel Müller
676dc9073f
Update Store and FSStore to use FileLockEntry
2016-01-16 18:32:57 +01:00
Marcel Müller
5ab6327d97
Rename read to retrieve
2016-01-16 18:29:04 +01:00
Marcel Müller
52f70e5b71
Add FileLockEntry
2016-01-16 18:25:48 +01:00
Marcel Müller
5289547873
Add missing method retrieve_copy
2016-01-16 18:25:22 +01:00
Marcel Müller
9d7f20b68e
Merge branch 'neithernut/init-libstore-alt' into add-libstore
2016-01-16 18:08:21 +01:00
Julian Ganz
70883409aa
Allow to update an item multiple times
2016-01-16 15:12:10 +01:00
Julian Ganz
ba0ef701e9
Use strings correctly
2016-01-16 15:11:20 +01:00
Julian Ganz
6bb48f53f4
Add missing inclusion of SingeUseLock type
2016-01-16 15:08:01 +01:00
Julian Ganz
43b6dbec3e
Pull in the modules in lib.rs
2016-01-16 15:03:24 +01:00
86e7dde4b7
Derive Debug for StoreError
2016-01-16 14:29:09 +01:00
f36615940a
Do not impl Debug but derive
2016-01-16 14:26:29 +01:00
0ace28897f
derive Copy in StoreErrorKind
2016-01-16 14:18:49 +01:00
e7c43c2c9d
Rename: StoreErrorType -> StoreErrorKind
2016-01-16 14:09:34 +01:00
e467c1e8ec
Remove StoreError::expl member
2016-01-16 14:08:39 +01:00
b74e0f713f
Remove From<StoreErrorType> for String and provide private helper for that functionality
2016-01-16 14:06:55 +01:00
791995f8fc
Remove "Unknown" error type
2016-01-16 13:50:10 +01:00
180eab2652
Pass error members on ::new()
2016-01-16 13:39:53 +01:00
48c3cc5f5d
Introduce StoreErrorType enum for simple Error type identification
2016-01-16 13:36:19 +01:00
Julian Ganz
a7d1cdadc0
Add initial version of store interface
...
The interface enables users to both create and remove entries. It also
features methods for retrieval of both unlocked and lockes entries and a
method for writing back the latter one only.
2016-01-16 07:15:49 +01:00
Julian Ganz
6c2962efe9
Add trait for single unlocking of an item
...
Add a trait serving a lock which features only an irreversible unlocking
of an item. Such a type may be used to pass around locked items while
permitting the user to unlock them and perform any operation with a copy
of the original item.
2016-01-16 06:58:30 +01:00
3f20028bac
Add interface impl for FSStore
2016-01-13 22:04:06 +01:00
912c84e663
Make "Store" a trait
2016-01-13 22:03:53 +01:00
d23e2f920d
impl Drop for Store
2016-01-13 21:51:40 +01:00
92f03edf2b
Add extern crate fs2
2016-01-13 21:48:24 +01:00
fff41b447a
Add store-internal cache
2016-01-13 21:47:23 +01:00
4f8aacfa5a
Fixup: Store type: read() should return Arc<RWLock<>>, update() should take that
2016-01-13 11:53:56 +01:00
33f097d662
Add Entry type for store
2016-01-12 18:52:47 +01:00
39fab39f97
Add modules in lib.rs
2016-01-12 18:52:47 +01:00
b1ace253c8
Add Store type for store
2016-01-12 18:52:47 +01:00
f198c5d125
Add EntryContent type for store
2016-01-12 18:52:40 +01:00
4640ae8963
Add error type for store
2016-01-12 18:52:40 +01:00
ac1dd3e7f3
Add EntryHeader type for store
2016-01-12 18:52:34 +01:00
f35029a3d0
Add: libimagstore
2016-01-09 23:51:31 +01:00