Commit Graph

578 Commits

Author SHA1 Message Date
Matthias Beyer 0a181479c8 Merge pull request #277 from matthiasbeyer/libimagstore/remove-unused-aspects
Libimagstore/remove unused aspects
2016-03-26 13:55:46 +01:00
Matthias Beyer 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
Matthias Beyer ad35d0bf50 Add missing hook_error_type_as_str() impl 2016-03-25 19:17:35 +01:00
Matthias Beyer bb918db5c3 Fix wrong hook execution: post-retrieve 2016-03-25 19:17:19 +01:00
Matthias Beyer b54576d95d Add README for libimagstore 2016-03-25 15:56:42 +01:00
Matthias Beyer 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
Matthias Beyer ad18091b88 Store::config() added, mainly for debugging use 2016-03-25 15:15:37 +01:00
Matthias Beyer c5c60cf36d impl Debug for Store 2016-03-25 13:30:26 +01:00
Matthias Beyer 22052ba9f0 Add some more error types to be more specific about what happened 2016-03-25 13:30:16 +01:00
Matthias Beyer a96ca837c6 Make HookPosition clonable 2016-03-24 17:57:19 +01:00
Matthias Beyer 2deb98d764 Add deny() so we turn some warnings into errors 2016-03-22 19:44:04 +01:00
Matthias Beyer c59ed7d2fe Use unused result when file.write_all() and return error 2016-03-22 19:44:04 +01:00
Matthias Beyer dc7a212278 Use unused result which must be used when file.seek()ing 2016-03-22 19:44:04 +01:00
Matthias Beyer a45571e299 Remove unused function AspectConfig::config() 2016-03-22 19:44:04 +01:00
Matthias Beyer 8e852384bd Remove unused function from Store 2016-03-22 19:44:04 +01:00
Matthias Beyer 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
Matthias Beyer af161394ad Remove dead code in configuration.rs 2016-03-22 19:43:48 +01:00
Matthias Beyer a4c820d308 Remove unused keyword "mut" 2016-03-22 19:43:48 +01:00
Matthias Beyer 8aa3f31970 Remove unused variables 2016-03-22 19:43:48 +01:00
Matthias Beyer 2fb59b3ae6 Remove unused imports 2016-03-22 19:43:48 +01:00
Matthias Beyer 041a2a4942 Add encoding error if typeconversion fails 2016-03-19 15:15:04 +01:00
Matthias Beyer fe0849f8eb Add implementation for Store::retrieve_for_module() 2016-03-19 15:15:04 +01:00
Matthias Beyer 80945fcd16 Rewrite build_entry_path() so it does not panic!() anymore 2016-03-19 14:48:09 +01:00
Matthias Beyer b8b49b3240 Move: build_entry_path() from imag-store to libimagstore 2016-03-19 14:47:45 +01:00
Matthias Beyer 65a64774b6 Fix: Allow NonMutableAccess in MutableHookDataAcessor 2016-03-16 16:46:54 +01:00
Matthias Beyer feac9ae9e8 Store::new(): Aspect configuration added 2016-03-16 16:46:54 +01:00
Matthias Beyer 96deb17515 Aspect: Optionally get configuration 2016-03-16 16:46:54 +01:00
Matthias Beyer f1246093f1 Implement AspectConfig::get_for() 2016-03-16 16:46:54 +01:00
Matthias Beyer 08b36972f1 Make store configuration optional 2016-03-16 16:46:54 +01:00
Matthias Beyer 0286d8a25e Store: Add hook configuration on registration 2016-03-16 16:46:54 +01:00
Matthias Beyer 59fdb7ef3d Store: Get configuration object not as reference, to avoid livetimes 2016-03-16 16:46:54 +01:00
Matthias Beyer 6dae03d731 Hook: Must provide name, gets reference to configuration 2016-03-16 16:46:54 +01:00
Matthias Beyer 9961f64ce6 Add AspectConfig type 2016-03-16 16:46:53 +01:00
Matthias Beyer c942c74f05 Implement getter for aspect names 2016-03-16 16:46:53 +01:00
Matthias Beyer d249f604d8 Implement: config_is_valid() 2016-03-16 16:46:53 +01:00
Matthias Beyer cd55e7d625 Add Aspect building based on configuration 2016-03-16 16:46:53 +01:00
Matthias Beyer 1fe545eb8b Add configuration.rs 2016-03-16 16:46:53 +01:00
Matthias Beyer a771db9ea4 Add error kind for config errors 2016-03-16 16:46:53 +01:00
Matthias Beyer 9e8ef57f72 Remove {Pre, Post}HookErrorKind types as they are not needed anymore 2016-03-16 16:46:53 +01:00
Matthias Beyer 987b271cc7 Add access type checking error 2016-03-16 16:46:53 +01:00
Matthias Beyer 5ba260943b Make hook execution parallel for NonMutableHookDataAccessor impl for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer 7102a57808 Make hook execution parallel for StoreIdAccessor impl for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer d8760c9737 Impl NonMutableHookDataAccessor::access() for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer c4c02f2274 Impl MutableHookDataAccessor::access_mut() for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer 2022f4e4bb Impl StoreIdAccessor::access() for Aspect 2016-03-16 16:46:53 +01:00
Matthias Beyer 2c544382a1 We do not need boxes here 2016-03-16 16:46:53 +01:00
Matthias Beyer 679865464b Reimplement hook registration and execution 2016-03-16 16:46:52 +01:00
Matthias Beyer d6a581e69f Add HookPosition enum 2016-03-16 16:46:52 +01:00
Matthias Beyer 37a505609e Remove hook traits. There can only be one trait: Hook 2016-03-16 16:46:52 +01:00
Matthias Beyer be1ba5be4b Add Aspect type for hook system 2016-03-16 16:46:52 +01:00
Matthias Beyer 3e62b71605 Add StoreIdAccessor trait 2016-03-16 16:46:52 +01:00
Matthias Beyer fa9e8e8192 Split hook/mod.rs into several files 2016-03-16 16:46:52 +01:00
Matthias Beyer 3f15fd0fa8 Move hook.rs -> hook/mod.rs 2016-03-16 16:46:52 +01:00
Matthias Beyer a9600f23b3 Threaded hook execution 2016-03-16 16:46:52 +01:00
Matthias Beyer 79ba3f5151 Hook calling rewrite 2016-03-16 16:46:52 +01:00
Matthias Beyer 0610f0756a Add dep: crossbeam = 0.2.8 2016-03-16 16:46:52 +01:00
Matthias Beyer 3421e8d4d9 Add HookExecutionError error kind 2016-03-16 16:46:52 +01:00
Matthias Beyer 1c40be78a9 Add HookAccessor types for accessing mutable/nonmutable hook calling in a generic way 2016-03-16 16:46:52 +01:00
Matthias Beyer e1414beb8d Impl Into<HookError> for error kinds to convert errors in a simple way 2016-03-16 16:46:51 +01:00
Matthias Beyer 57831dceb0 Add HookErrorKind enums for Pre and Post errors 2016-03-16 16:46:51 +01:00
Matthias Beyer 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
Matthias Beyer d9a4512821 Add debug output for hook exec functions 2016-03-16 16:46:51 +01:00
Matthias Beyer da3554d98e Add debug output for hook register functions 2016-03-16 16:46:51 +01:00
Matthias Beyer 6af5be15ad Hooks must implement Debug 2016-03-16 16:46:51 +01:00
Matthias Beyer bb0e7e2468 Implement: execute_post_delete_hooks() 2016-03-16 16:46:51 +01:00
Matthias Beyer f703e8a4cd Implement: execute_post_update_hooks() 2016-03-16 16:46:51 +01:00
Matthias Beyer 7014256407 Implement: execute_post_retrieve_hooks() 2016-03-16 16:46:51 +01:00
Matthias Beyer 5831d3bc7b Implement: execute_post_create_hooks() 2016-03-16 16:46:51 +01:00
Matthias Beyer 196be30d91 Implement: execute_post_read_hooks() 2016-03-16 16:46:51 +01:00
Matthias Beyer 09acddaef9 Implement: execute_pre_delete_hooks() 2016-03-16 16:46:51 +01:00
Matthias Beyer 5aa663987b Implement: execute_pre_update_hooks() 2016-03-16 16:46:51 +01:00
Matthias Beyer 94128f8bcc Implement: execute_pre_retrieve_hooks() 2016-03-16 16:46:50 +01:00
Matthias Beyer 3244b87c7e Implement: execute_pre_create_hooks() 2016-03-16 16:46:50 +01:00
Matthias Beyer 975a2bc8b9 Implement: execute_pre_read_hooks() 2016-03-16 16:46:50 +01:00
Matthias Beyer ac280ba616 Insert pre/post hook execution functions 2016-03-16 16:46:50 +01:00
Matthias Beyer 3cf2588104 Add error types for pre/post hooks 2016-03-16 16:39:39 +01:00
Matthias Beyer 17b1d6c390 Redefine hook trait system 2016-03-16 16:39:39 +01:00
Matthias Beyer 001c80b72d Hook: Add traits which must be implemented for Hook 2016-03-16 16:39:39 +01:00
Matthias Beyer b9127381b8 Add hook registering 2016-03-16 16:39:39 +01:00
Matthias Beyer d99d25a3e1 Add HookRegisterError kind 2016-03-16 16:39:14 +01:00
Matthias Beyer e969b8678e Add hook traits 2016-03-16 16:39:14 +01:00
Matthias Beyer 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
Matthias Beyer 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
Matthias Beyer 6d7065d10e Fix test: StoreId does not start with "/" anymore 2016-03-10 19:12:00 +01:00
Matthias Beyer a9a64d4ab6 Fix: implicitely create directories on file saving 2016-03-10 19:06:27 +01:00
Matthias Beyer 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
Matthias Beyer 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
Matthias Beyer df1fd31771 libimagstore: Update glob 0.2.10 -> 0.2.11 2016-03-07 17:46:58 +01:00
Matthias Beyer 257fe1880e EntryHeader: Function to get toml object 2016-03-06 11:51:09 +01:00
Matthias Beyer 74634227e0 Use unused result 2016-03-01 21:23:09 +01:00
Matthias Beyer 22e9f8a93b Remove unused import 2016-03-01 21:21:14 +01:00
Matthias Beyer 1a8106dfd2 Add missing error-forwarding 2016-03-01 21:20:53 +01:00
Matthias Beyer 38b9e15615 Remove unreachable statement 2016-03-01 21:19:15 +01:00
Matthias Beyer 08c37c5fcb Remove unused "mut" from EntryHeader::delete() 2016-03-01 21:18:17 +01:00
Matthias Beyer ed3da38701 Remove unused "mut" from EntryHeader::read_with_sep() 2016-03-01 21:18:10 +01:00
Matthias Beyer 309e70df14 Remove unused "mut" from EntryHeader::set_with_sep() 2016-03-01 21:18:04 +01:00
Matthias Beyer 85e69f083e Remove unused "mut" from EntryHeader::insert_with_sep() 2016-03-01 21:17:49 +01:00
Matthias Beyer 4390c39a6c Remove unused "mut" from Store::delete() 2016-03-01 21:17:40 +01:00
Matthias Beyer 8dfccba0b8 Remove unused "mut" from Store::retrieve_copy() 2016-03-01 21:17:33 +01:00
Matthias Beyer 87bf7854c7 store: Update regex = 0.1.54 2016-02-23 13:13:22 +01:00
Matthias Beyer df4bc13018 use lazy_static so we do not compile regex multiple times 2016-02-20 21:06:47 +01:00
Matthias Beyer 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
Matthias Beyer 9951422dc4 Impl From<Table> for EntryHeader 2016-02-12 22:07:15 +01:00
Matthias Beyer 794e7617e3 Impl Into<Table> for EntryHeader 2016-02-12 22:02:33 +01:00
Matthias Beyer df9313c599 Add EntryHeader::insert_with_sep() 2016-02-12 21:57:53 +01:00
Matthias Beyer 54ba22d0ef Add EntryHeader::set_with_sep() 2016-02-12 21:56:48 +01:00
Matthias Beyer bca0143343 Add EntryHeader::read_with_sep() which allows seperator modification 2016-02-12 21:55:06 +01:00
Matthias Beyer a4fa1bac07 Add split-char setting 2016-02-12 21:50:44 +01:00
Matthias Beyer 6397068ddc Add test for EntryHeader::delete() 2016-02-12 20:02:57 +01:00
Matthias Beyer cb87f31a23 Add EntryHeader::delete() 2016-02-12 20:02:56 +01:00
Matthias Beyer 30e8afeced Add tests for inserting values 2016-02-12 20:02:56 +01:00
Matthias Beyer 965c3445a1 Add test for setting value at new path 2016-02-12 20:02:56 +01:00
Matthias Beyer dd53e467d7 Add EntryHeader::set() test 2016-02-12 20:02:56 +01:00
Matthias Beyer b4362f5c65 Alter: EntryHeader should contain a Value, not the BTreeMap<> 2016-02-12 20:02:56 +01:00
Matthias Beyer 74a9b844ca Add debugging output in tests 2016-02-12 20:02:41 +01:00
Matthias Beyer 60ccf58f84 Merge pull request #148 from neithernut/impl-store-retrieve_copy
Implement Store::retrieve_copy()
2016-02-12 18:59:56 +01:00
Matthias Beyer 103a0dea17 Add test: EntryHeader::read() 2016-02-11 15:45:48 +01:00
Matthias Beyer 731a446546 Implement EntryHeader::read() 2016-02-11 15:45:47 +01:00
Matthias Beyer 548aee8d5f Implement EntryHeader::set() 2016-02-11 15:45:47 +01:00
Matthias Beyer 4d94f8a67f Implement: EntryHeader::insert() 2016-02-11 15:45:47 +01:00
Matthias Beyer 3b09e0c214 Move helper functions outside of walk_header(), so we can use them 2016-02-11 15:45:47 +01:00
Matthias Beyer 42aade5cef Add tests for path-to-value extractor functionality 2016-02-11 15:43:58 +01:00
Matthias Beyer 4759076249 Implement walk_header() 2016-02-11 15:43:58 +01:00
Matthias Beyer a2e3598c01 Add more error types for header walking 2016-02-11 15:43:58 +01:00
Matthias Beyer 0727fca797 Add tokenizer helper function 2016-02-11 15:43:58 +01:00
Matthias Beyer 2f6cfb5868 Add interface for header field addressing by str 2016-02-11 15:43:58 +01:00
Matthias Beyer 00ccc22ef5 Add some debugging output for {create,retrieve,delete} 2016-02-09 20:09:12 +01:00
Matthias Beyer d85f985694 Fixup path-includes-path checker 2016-02-09 20:08:58 +01:00
Matthias Beyer ddd54e03ad Add store path getter 2016-02-09 13:45:13 +01:00
Matthias Beyer 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
Matthias Beyer 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
Matthias Beyer 373502217e Check whether the StoreId is inside the store, before doing anything on the FS 2016-02-06 18:48:59 +01:00
Matthias Beyer 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
Matthias Beyer ddd61f9c1f libimagstore: Update dep: version: 1.1.0 -> 2.0.1 2016-02-05 21:53:26 +01:00
Matthias Beyer 959a68f1a6 Merge pull request #153 from matthiasbeyer/libimagstore/add-debugging-output
Libimagstore/add debugging output
2016-02-05 16:03:23 +01:00
Matthias Beyer 0931ede580 Merge pull request #165 from matthiasbeyer/remove-unused-imports
Remove unused imports
2016-01-30 13:47:57 +01:00
Matthias Beyer 213cb32a88 Fix: Add EntryHeader::toml_mut() 2016-01-30 12:38:36 +01:00
Matthias Beyer f6e03c804e store/store: Remove unused imports 2016-01-29 23:06:15 +01:00
Matthias Beyer 814e85508b store/error: Remove unused imports 2016-01-29 23:06:04 +01:00
Matthias Beyer 33b6a89a02 Merge pull request #156 from matthiasbeyer/libimagstore/fix-private-intostoreid
Fix: Make IntoStoreId public
2016-01-29 19:11:03 +01:00
Matthias Beyer 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
Matthias Beyer fbb296495b Merge pull request #154 from matthiasbeyer/libimagstore/fix-152
Fix: negation error
2016-01-29 19:10:51 +01:00
Matthias Beyer 72cf550c9f Fix: seek() file back on reading it 2016-01-29 18:17:41 +01:00
Matthias Beyer 69bebfcfc0 Fix: Make IntoStoreId public 2016-01-29 17:03:24 +01:00
Matthias Beyer c64cdad63b Fix: Add missing documentation for mod module_path 2016-01-29 17:03:05 +01:00
Matthias Beyer 38791ea2f9 Fix: negation error
Suggested-by: Marcel Müller <neikos@neikos.email>
2016-01-29 16:53:13 +01:00
Matthias Beyer 3b51328aa7 Merge pull request #145 from neithernut/fix-store-retrieve
Fix Store::retrieve()
2016-01-29 16:29:38 +01:00
Matthias Beyer b04c676eb9 Add store debugging output 2016-01-28 21:06:49 +01:00
Matthias Beyer 4bc905c692 Add debug output for LazyFile::{get_file_mut,create_file}() 2016-01-28 21:00:33 +01:00
Matthias Beyer 2c398d941b Let LazyFile derive Debug 2016-01-28 21:00:13 +01:00
Matthias Beyer 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
Matthias Beyer 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
Matthias Beyer 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
Matthias Beyer 82873d82ba Merge pull request #143 from TheNeikos/add-store_update
Implement storenetry:write_entry
2016-01-24 20:25:57 +01:00
Matthias Beyer 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
Matthias Beyer bbd08d9526 Add Store::retrieve_for_module() 2016-01-24 17:40:06 +01:00
Matthias Beyer 36770abac5 Add iterator type for StoreId 2016-01-24 17:39:41 +01:00
Matthias Beyer e951666e3d Use glob 2016-01-24 17:39:41 +01:00
Matthias Beyer 1d69aa5066 Add dep: glob = 0.2.10 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
Matthias Beyer 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
Matthias Beyer 796cd01343 Init the header with default values 2016-01-23 16:41:22 +01:00
Matthias Beyer 38292ea8cb Dont pass the table to the header object, but generate it in ::new() 2016-01-23 16:40:00 +01:00
Matthias Beyer c48f3afcf4 Return error if create() fails 2016-01-23 11:57:40 +01:00
Matthias Beyer 0c3bcc3f15 Add error kind: Create errors 2016-01-23 11:57:40 +01:00
Matthias Beyer 80b0501d03 Introduce error if the store path exists but is a file 2016-01-23 11:57:40 +01:00
Matthias Beyer 4f71563eb4 Store::new(): Create path if nonexistent 2016-01-23 11:57:40 +01:00
Matthias Beyer ffe56c4993 Add test with current version 2016-01-23 11:44:48 +01:00
Matthias Beyer 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
Matthias Beyer a8ac1593e7 Add dep: version = 1.1.0 2016-01-23 11:44:48 +01:00
Matthias Beyer b0859c3e2f Use semver parser instead of regex 2016-01-23 11:44:47 +01:00
Matthias Beyer b486960720 Add version-string verification 2016-01-23 11:30:54 +01:00
Matthias Beyer dd11e32d82 Include regex 2016-01-23 11:30:54 +01:00
Matthias Beyer f4fbbb688d Add dep: regex 2016-01-23 11:30:54 +01:00
Matthias Beyer 775d724a8c Add header test: Invalid version string 2016-01-23 11:30:54 +01:00
Matthias Beyer 1187f7d9b3 Add header verification test 2016-01-23 11:30:53 +01:00
Matthias Beyer 9884f78dae Move header verifying into helper function 2016-01-23 11:30:53 +01:00
Matthias Beyer 2a4f3baf0b Add tests on header checkers 2016-01-23 11:30:53 +01:00
Matthias Beyer 3e661439e8 Add sanity-check to header parsing 2016-01-23 11:30:53 +01:00
Matthias Beyer 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
Marcel Müller 4d28b57658
Remove remaining Cargo.lock files 2016-01-22 20:15:32 +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
Marcel Müller a85d658f33 iQIcBAABCgAGBQJWol+6AAoJEN1O030MrHbiP6YP/0gq5zudvb0JtDAxbwYUuY0H
kl+2eDAclmvugaOyzCi4LC1CHPakJVauEwmWqJ50IrJt6uBsf4tCbWCtMnPXnnVe
 K3yYGbzHwObTALk6TxfnQltdIUcghVuFwC93gE+lsNi/JrL3pzxXyU7t/bs4canP
 QluV6o3HW4Y4vXn/d0Lnjkb7gpNxDaeMShm1xvb3OcKKUtO4ni4xOUsVi5zlI+kk
 UYuh+V/FJFA0tmKbvJqVan20/Xt462vyGCL36JmAOEFmOLZ+PIL6bpTzoupJYEtc
 9yWZD7VQLU6SurFMNhEoALoS3/Vn+F/kBvAzjO8hUs9at/ocs/1WzG59RiV/TBKF
 mJbRyiODdASqBRWUW9S4vULX3tVsNrUFtit3quxh4YDVmtGcT/YEF/kmE2s9QFxH
 3yECBdo6FZXWtIWeGiLaLxr5L4eqNIsfhDTfa0Dtn/0w8SIZlUCDBanEyFpaCBtI
 2wjwea8ywk9ydkOCCZv5TCnYJewYuMvFmQrhOZTMw5ZAo1urT7wa7AhTVXbZ9B0E
 7wheTkQ5fNx2SmrB06Tdzt8ZnizjOhTEmzLYlB3T7E2hFfoohGxPqT1iAh/RGCvL
 PdQCA0QCKXenjiaIbA4zBwrvOIpsgs/keJ1HnK9EVmwddXdkLqdqzAlpb/BwATVL
 TH3JxmTYRZ1+eJkN1jpj
 =Fk4L
 -----END PGP SIGNATURE-----

Add semver crate to Cargo.toml
2016-01-22 17:58:32 +01:00
Matthias Beyer af411fbdb0 Add Entry mutable getters 2016-01-22 14:25:03 +01:00
Matthias Beyer c21bed3af9 Add Entry getters 2016-01-22 14:24:20 +01:00
Matthias Beyer cfa8c29eaf error.rs: Add documentation 2016-01-21 21:31:48 +01:00
Matthias Beyer 434a766536 lazyfile.rs: Add documentation 2016-01-21 21:30:41 +01:00
Matthias Beyer 64ee182d63 entry.rs: Add documentation 2016-01-21 21:28:29 +01:00
Matthias Beyer 67ae39ab5b header.rs: Add documentation 2016-01-21 21:28:18 +01:00
Matthias Beyer 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
Matthias Beyer 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 6a3429d759 iQIcBAABCgAGBQJWnRoNAAoJEN1O030MrHbiYzMQALA2R/WccyxqsOs0A1i/wUdp
saz250bgtXUJ0DKqGRM25+P0idJuIW2/nuOqqAYQ3uWNDxj4oLR21vkGstCO9xvk
 FZ/UARQ3MK8KF0OFRRb+ESTOixtNn2oEaiJuxwdRDG7I3z7YTiijwYM9uTGhFNqD
 Hkkm+X5Hsh9GvxzSN+yEX2Vrvgv9WIerfhyOWBNgK6VKmneX7CNFl3/2E5U152+O
 Nsfd6eeJ5JnMlpmzCiIJyfsT1Bf8ITr8MZpvQJ8dW5Ozgbg5N931NOLoVSMGkNPD
 D1I9XtQX5C8KJmvoBecMZOIurghGSJ4VTM9mOEd6X+AW3fhRoeX6GbNFptQr/UAk
 TfX0nBZxeHvwOLQR+kMNQZ5dmfnmC0VEZFtlxLu22fngOWz80wxPRc3W9/4iWnQg
 OfjfnZkP0NUCPDXbsTnB42MyZA3Ff4t52Lq0qGSVHGTHcwm8WQA3je/oztJ18w9S
 6UysUMbICMo2/OzVKK9OF3i50uLz0JEE9MVLtjmMQ3LrjN5I7qoZ0e5xDTQS6rnf
 Cwt8JsjJbPAk9ynsvjKgom3Q5rPGq3zyrTtViQ025jww5lie0l7dVlenTFvCa95s
 PyKZ64dHGuD0iPEeodVZgSW7KC7F0UNeBSO1fawZ8eYYVlWMk4K2EgcCQPX3ReRB
 ZXebnEZoWqiL4XmZzHb4
 =wpl6
 -----END PGP SIGNATURE-----

Add tempdir to Cargo.toml
2016-01-18 17:59:57 +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
Matthias Beyer 48071fbc7b Remove unused imports 2016-01-17 16:23:35 +01:00
Matthias Beyer 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
Matthias Beyer 86e7dde4b7 Derive Debug for StoreError 2016-01-16 14:29:09 +01:00
Matthias Beyer f36615940a Do not impl Debug but derive 2016-01-16 14:26:29 +01:00
Matthias Beyer 0ace28897f derive Copy in StoreErrorKind 2016-01-16 14:18:49 +01:00
Matthias Beyer e7c43c2c9d Rename: StoreErrorType -> StoreErrorKind 2016-01-16 14:09:34 +01:00
Matthias Beyer e467c1e8ec Remove StoreError::expl member 2016-01-16 14:08:39 +01:00
Matthias Beyer b74e0f713f Remove From<StoreErrorType> for String and provide private helper for that functionality 2016-01-16 14:06:55 +01:00
Matthias Beyer 791995f8fc Remove "Unknown" error type 2016-01-16 13:50:10 +01:00
Matthias Beyer 180eab2652 Pass error members on ::new() 2016-01-16 13:39:53 +01:00
Matthias Beyer 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
Matthias Beyer 3f20028bac Add interface impl for FSStore 2016-01-13 22:04:06 +01:00
Matthias Beyer 912c84e663 Make "Store" a trait 2016-01-13 22:03:53 +01:00
Matthias Beyer d23e2f920d impl Drop for Store 2016-01-13 21:51:40 +01:00
Matthias Beyer 92f03edf2b Add extern crate fs2 2016-01-13 21:48:24 +01:00
Matthias Beyer 9845a3354e Add dep: fs2 = 0.2.2 2016-01-13 21:48:18 +01:00
Matthias Beyer fff41b447a Add store-internal cache 2016-01-13 21:47:23 +01:00
Matthias Beyer 4f8aacfa5a Fixup: Store type: read() should return Arc<RWLock<>>, update() should take that 2016-01-13 11:53:56 +01:00
Matthias Beyer 33f097d662 Add Entry type for store 2016-01-12 18:52:47 +01:00
Matthias Beyer 39fab39f97 Add modules in lib.rs 2016-01-12 18:52:47 +01:00
Matthias Beyer b1ace253c8 Add Store type for store 2016-01-12 18:52:47 +01:00
Matthias Beyer f198c5d125 Add EntryContent type for store 2016-01-12 18:52:40 +01:00
Matthias Beyer 4640ae8963 Add error type for store 2016-01-12 18:52:40 +01:00
Matthias Beyer ac1dd3e7f3 Add EntryHeader type for store 2016-01-12 18:52:34 +01:00
Matthias Beyer a6cc103584 Add dep: toml 2016-01-12 18:10:16 +01:00
Matthias Beyer f35029a3d0 Add: libimagstore 2016-01-09 23:51:31 +01:00