Commit Graph

577 Commits

Author SHA1 Message Date
Matthias Beyer 8c2af3e931 Add Path type 2015-12-27 18:00:31 +01:00
Matthias Beyer 85a199ffc8 Add module file for storage 2015-12-27 18:00:31 +01:00
Matthias Beyer 00d0bbf4ae Add basic interface for BM module 2015-12-27 18:00:28 +01:00
Matthias Beyer 7e77d786bb Remove old code, FileIDType::NONE does not exist, we use Option<> 2015-12-21 19:28:15 +01:00
Matthias Beyer dcec155505 Move FileIDType to new module, export publicly 2015-12-21 19:20:09 +01:00
Matthias Beyer 8a7d4b8aaf Add FileHash type, custom type for an ID 2015-12-21 19:20:09 +01:00
Matthias Beyer dd7b412976 Remove code 2015-12-21 19:20:09 +01:00
Matthias Beyer 3212429c9e Impl Debug for Parser 2015-12-19 11:47:24 +01:00
Matthias Beyer d5af28d98d Impl {Display,Debug} for JsonHeaderParser 2015-12-19 11:47:24 +01:00
Matthias Beyer ee78c249f0 Remove leftover file from storage backend moving 2015-12-06 13:15:07 +01:00
Matthias Beyer 188aacad75 Move FileHeader{Spec,Data} to own submodules 2015-12-06 13:09:51 +01:00
Matthias Beyer 3b89148cd0 Move storage/file_id.rs -> storage/file/id.rs 2015-12-06 13:02:21 +01:00
Matthias Beyer 95f6f2e97e Move file.rs to subdirectory 2015-12-06 13:01:02 +01:00
Matthias Beyer 6e0d0058b0 Move key generating to top-level spec helpers 2015-12-06 12:49:31 +01:00
Matthias Beyer dad856ff2a Move get_tags() from BM module to module utilities 2015-12-06 12:49:31 +01:00
Matthias Beyer 7d40b68407 Rename: StorageBackend -> Storage 2015-12-06 12:49:02 +01:00
Matthias Beyer da2b482bda Move Storage Backend code imag::storage::backend -> imag::storage 2015-12-06 12:47:08 +01:00
Matthias Beyer ab3ada0914 Move header helpers from module/header/ to module/helpers/ 2015-12-05 16:03:05 +01:00
Matthias Beyer c6a2d39981 Outsource header utilities into header helper 2015-12-05 16:01:30 +01:00
Matthias Beyer 3a8f2b5493 Refactor: dont use helper but StorageBackendError::new() directly 2015-12-05 15:01:46 +01:00
Matthias Beyer e6a32eafc0 Outsource StorageBackendError building into helper function 2015-12-05 14:24:58 +01:00
Matthias Beyer 9f59478da0 Readability fixes 2015-12-05 11:10:54 +01:00
Matthias Beyer 93393751b2 Remove uneccessary variable 2015-12-05 11:06:22 +01:00
Matthias Beyer 80563cb340 Move tag filtering to sub-function 2015-12-05 11:05:50 +01:00
Matthias Beyer e8c7df4593 Remove variable, use expression directly 2015-12-05 11:03:05 +01:00
Matthias Beyer 166a0cf5dd bm: remove_command: Refactor into sub-functions 2015-12-05 11:00:44 +01:00
Matthias Beyer 75cedc1580 Move to rust stable (1.4 atm) so we can use clap 2015-12-05 10:45:33 +01:00
Matthias Beyer 230d00f35a Remove unused imports 2015-12-05 01:23:06 +01:00
Matthias Beyer 1f8bdef1ed Remove unused variables 2015-12-05 01:18:12 +01:00
Matthias Beyer f7a92b6e79 Resort "use"
First comes std stuff
Second is external crates
Then we have own modules

All in alphabetical order and as few lines as possible if readability is
preserved.
2015-12-05 01:14:13 +01:00
Matthias Beyer 5953563671 Refactor for readability 2015-12-04 23:39:30 +01:00
Matthias Beyer f8e870312e Outsource: ids iterator to files vector 2015-12-04 23:35:48 +01:00
Matthias Beyer 55f740497b Beautify get_tags() helper 2015-12-04 23:26:08 +01:00
Matthias Beyer cd1bb88f20 Rework remove_command() 2015-12-04 23:19:18 +01:00
Matthias Beyer 848fb0b4b4 Ensure we build the globstring _with_ the ID in it 2015-12-04 23:11:59 +01:00
Matthias Beyer 261fbdd038 Add id getter for FileID 2015-12-04 23:11:46 +01:00
Matthias Beyer 87d5852986 Ensure we dont crash if there are no files found 2015-12-04 23:01:37 +01:00
Matthias Beyer fd3d2ec8dc Fixup get_file_by_id() 2015-12-04 22:57:28 +01:00
Matthias Beyer 6473b743a3 Outsource globlist -> Vec<FileID> transformation code snippet 2015-12-04 22:53:31 +01:00
Matthias Beyer dac4911ea2 (partly) Rewrite StorageBackend::get_file_by_id(), so we can get a file with a partially available ID 2015-12-04 22:49:00 +01:00
Matthias Beyer 253658ece5 Fix: FileID::from() should also succeed if we pass a ID as string 2015-12-04 22:31:09 +01:00
Matthias Beyer 2dfb76bd0d Reimplement: Parser::divide_text() 2015-12-04 21:56:48 +01:00
Matthias Beyer 5c38e6752b Fixup glob string generating 2015-12-04 21:56:48 +01:00
Matthias Beyer 08fa8f8655 Add debugging output 2015-12-04 21:56:48 +01:00
Matthias Beyer 2b21d1cb47 StorageBackend::iter_files(): Add caused_by use 2015-12-04 21:56:48 +01:00
Matthias Beyer 90e3f44005 StorageBackend::iter_ids(): Add caused_by() usage
Actually not, as there is no Error implementation for the error we get
to handle here.
2015-12-04 21:56:48 +01:00
Matthias Beyer 87d9ca7d06 Print table only if there are entries 2015-12-04 21:56:48 +01:00
Matthias Beyer b6c1a6301f Use ParserError::with_cause() and build new ParserError object 2015-12-04 21:56:48 +01:00
Matthias Beyer 3a76c05317 ParserError: Add cause 2015-12-04 21:56:47 +01:00
Matthias Beyer 1aaea39b3d storage/parser::divide_text(): Add debug output 2015-12-04 21:56:33 +01:00
Matthias Beyer e72c1c68b9 Fix: Output formatting
The header-content separator dashes were completely missing. Shame on
me.
2015-12-04 21:56:33 +01:00
Matthias Beyer e31239b02b Fix wording in debug message 2015-12-04 21:56:33 +01:00
Matthias Beyer 915cbd24ef Impl From<PathBuf> for FileID, using From<String> for FileID 2015-12-04 21:56:33 +01:00
Matthias Beyer db9c4e48ba ui/TablePrinter: Add debug output 2015-12-04 21:56:33 +01:00
Matthias Beyer 3484858c3d Remove unused code 2015-12-04 21:56:33 +01:00
Matthias Beyer 2ab025a4eb Add test: match_header_spec() testing 2015-12-04 17:52:30 +01:00
Matthias Beyer e025cf8835 Add missing Clone for FileHeaderSpec 2015-12-04 17:52:30 +01:00
Matthias Beyer 04443b34bf Add test: serialize-deserialize-compare 2015-12-04 17:52:30 +01:00
Matthias Beyer 3e75117d69 Add test: Deserialization without Specification should match as well 2015-12-04 17:52:30 +01:00
Matthias Beyer 74a9523f45 Use box_patterns, so we can unbox in the tests 2015-12-04 17:52:30 +01:00
Matthias Beyer 2dce3151bd Remove default impl for Error for ParserError 2015-12-04 17:52:30 +01:00
Matthias Beyer 84e7100229 Add test for deserialization 2015-12-04 17:52:30 +01:00
Matthias Beyer d9019e408e Remove static livetime in ParserError::short() 2015-12-04 17:51:22 +01:00
Matthias Beyer 03856cd3a1 Reimplement StorageBackendError::{new,build} with Into<String> 2015-12-04 15:18:52 +01:00
Matthias Beyer c1d497fa6a Add URL check before adding the "url" to the store 2015-12-04 15:09:03 +01:00
Matthias Beyer 04df3fdf3c Rewrite BMModule::get_filtered_files_from_backend() with the backend speaking Result<> now instead of Option<> 2015-12-04 14:17:32 +01:00
Matthias Beyer 40ae26d0f2 BMModule::list_command() - we get back an Result<> here 2015-12-04 14:17:03 +01:00
Matthias Beyer be094dcfae StorageBackend::iter_files() return Result<> with StorageBackendError on error 2015-12-04 14:04:20 +01:00
Matthias Beyer 3df106ce8b StorageBackend::iter_ids() return Result<> with StorageBackendError on error 2015-12-04 14:02:30 +01:00
Matthias Beyer 1b0f4894ac Use FileIDType::from() and remove select_id_type_from_str() 2015-12-03 17:37:13 +01:00
Matthias Beyer ce4d99384b Impl From<&str> for FileIDType, use implementation in From<String> for FileIDType 2015-12-03 17:36:52 +01:00
Matthias Beyer f25e3683a1 Add hash type to filepath 2015-12-03 17:33:48 +01:00
Matthias Beyer 5c3d0ecce7 Impl Into<FileIDType> for FileID 2015-12-03 17:33:29 +01:00
Matthias Beyer 445f543159 Impl From<String> for FileIDType 2015-12-03 17:33:16 +01:00
Matthias Beyer 02da675b3f Impl Into<String> for FileIDType 2015-12-03 17:33:03 +01:00
Matthias Beyer dbf9ada732 Implement: FileID::from(&String), FileID::from(String) 2015-12-02 22:36:27 +01:00
Matthias Beyer 2c3dd521b8 Add test: file_id_from_string() 2015-12-02 22:35:41 +01:00
Matthias Beyer bcc9771f28 module/bm/commands: Use FileID::into() 2015-12-02 13:43:09 +01:00
Matthias Beyer 557187fbd7 storage/file: Call FileID::new() to build FileID object 2015-12-02 13:43:09 +01:00
Matthias Beyer 8ddfb090b4 ui/file: use FileID::into() 2015-12-02 13:43:09 +01:00
Matthias Beyer 292e29a5f1 Backend: Use FileID::from() 2015-12-02 13:43:09 +01:00
Matthias Beyer d3bdb39468 Reimplement FileID as abstract type, use Into, From traits for conversion 2015-12-02 13:43:09 +01:00
Matthias Beyer e93aa4ceae Refactor uses of file-id-parsing functions to ensure we honnor the Result type 2015-12-02 13:06:08 +01:00
Matthias Beyer 3e94e1612f Add FileIDResult<FileID, FileIDError> 2015-12-02 13:05:48 +01:00
Matthias Beyer 05a9803c05 Fixup: Member name 2015-12-02 12:29:04 +01:00
Matthias Beyer 9231049e30 Remove StorageBackend::build() 2015-12-02 12:28:41 +01:00
Matthias Beyer 731d13e0ba Create store path on storage backend creation 2015-12-02 12:24:05 +01:00
Matthias Beyer abee4d4904 Implement StorageBackend::remove_file() 2015-12-02 12:24:05 +01:00
Matthias Beyer 4675f79aae remove_command(): Be able to run in "checked" mode 2015-12-02 12:24:05 +01:00
Matthias Beyer c81d0bf0a8 Implement remove_command() 2015-12-02 12:24:05 +01:00
Matthias Beyer 484b1fb865 Outsource file retrieving from list_command() into helper function 2015-12-02 12:24:05 +01:00
Matthias Beyer 6fcccc8297 Implement list_command 2015-12-02 12:24:05 +01:00
Matthias Beyer 42181afde5 Add tags_of_file() to extract tags from a File 2015-12-02 12:24:05 +01:00
Matthias Beyer a6ed8e1080 Pass id as &FileID in StorageBackend::get_file_by_id() 2015-12-02 12:24:05 +01:00
Matthias Beyer 103cba0c27 Add File::matches_with(&Regex) 2015-12-02 12:24:05 +01:00
Matthias Beyer e598a475e5 Use prettytable to implement TablePrinter 2015-12-02 12:24:05 +01:00
Matthias Beyer 965779fcaf Impl Debug for BMModule 2015-12-02 12:24:05 +01:00
Matthias Beyer e515a70ec2 Rewrite Debug for Module 2015-12-02 12:24:05 +01:00
Matthias Beyer 043e607765 Implement StorageBackendError::cause() 2015-12-02 12:24:05 +01:00
Matthias Beyer f060c89751 Add helper for building file prefix
This helper builds the file prefix for the files of a module.
2015-12-02 12:24:05 +01:00
Matthias Beyer 144398a2ad Remove explanation member of StorageBackendError to reduce complexibility 2015-12-02 12:24:05 +01:00
Matthias Beyer 83aa5afcbe Build ModuleError out of StorageBackendError if any 2015-12-02 12:24:05 +01:00
Matthias Beyer c3019528cf ModuleError needs a cause as well 2015-12-02 12:24:05 +01:00
Matthias Beyer 4a6d1a74c0 Retry fixing the StorageBackend::cause() 2015-12-02 12:24:05 +01:00
Matthias Beyer 366121b6ed Reimplement StorageBackend::update_file() 2015-12-02 12:24:05 +01:00
Matthias Beyer eabf726846 Outsource file to string parsing 2015-12-02 12:24:05 +01:00
Matthias Beyer e0fefc3da4 Reimplement StorageBackend::put_file() 2015-12-02 12:24:05 +01:00
Matthias Beyer 21d889e1e2 Add caused_by field in StorageBackend 2015-12-02 12:24:05 +01:00
Matthias Beyer 455d6e88ed Use real array instead of text array to save tags 2015-12-02 12:24:05 +01:00
Matthias Beyer cf1687e8ba Convention: module names are lowercase 2015-12-02 12:24:05 +01:00
Matthias Beyer 1038880de9 Save storepath in extra variable 2015-12-02 12:24:05 +01:00
Matthias Beyer 8a2c41ea22 Fix: Build StorageBackend with runtime 2015-12-02 12:24:05 +01:00
Matthias Beyer e78bde72c1 Implement add_command() with backend 2015-12-02 12:24:05 +01:00
Matthias Beyer c9ebe3b7a1 Pass owner to file path builder helper function 2015-12-02 12:24:05 +01:00
Matthias Beyer 98ec735ea3 Add File::owner() - a getter for the owner of a file 2015-12-02 12:24:05 +01:00
Matthias Beyer 593e98ac5d A File is bound to a Module
A File object must be bound to a Module, as one Module owns the File.

This way we can use the Module internally to build the file path later.
2015-12-02 12:24:05 +01:00
Matthias Beyer 0d751f9ffd Add some debug output in StorageBackend::build_filepath_with_id() 2015-12-02 12:24:05 +01:00
Matthias Beyer 7531b5a6d7 Pass module to subcommand.
We need the module in the subcommand for building file paths and so on.

To be able to pass it, we must remove the ::new() function from the
trait, so we can make the parameter a trait object.

This is no object, as the module gets build non-generically from the
main(), so everything is fine with this.
2015-12-02 12:24:05 +01:00
Matthias Beyer ff873c8fe3 Transfer old code to new structure 2015-12-02 12:24:05 +01:00
Matthias Beyer 08d6e8da13 We need to unwrap here (and it is save) 2015-12-02 12:24:05 +01:00
Matthias Beyer fda2c4feea Add CommandEnv building in command calling code in main() 2015-12-02 12:24:05 +01:00
Matthias Beyer 0a026002b0 Pass CommandEnv struct to command exec function
So we can add parameters rather easily.
Also define CommandResult as result type.
2015-12-02 12:24:05 +01:00
Matthias Beyer 9bf9f96ab1 Fix: ModuleError::mk() -> pub ModuleError::new() 2015-12-02 12:24:05 +01:00
Matthias Beyer 18ea01b854 Pass StorageBackend to subcommand function 2015-12-02 12:24:05 +01:00
Matthias Beyer 3f19aba7b2 Add subcommand calling code in main() 2015-12-02 12:24:05 +01:00
Matthias Beyer 4a73a317d4 Move submodule commands/mod.rs to commands.rs 2015-12-02 12:24:05 +01:00
Matthias Beyer e10d1bcb65 Reimplement commands for bm 2015-12-02 12:24:05 +01:00
Matthias Beyer 24a6e961af Change get_commands() for latest trait change 2015-12-02 12:24:05 +01:00
Matthias Beyer 8af9ba48c0 We dont need the command traits anymore 2015-12-02 12:24:05 +01:00
Matthias Beyer 84571bef0a get_commands() can return a HashMap<str, fn()>, which is command name -> command function 2015-12-02 12:24:05 +01:00
Matthias Beyer a24d3175dd We do not have Module::execute() anymore 2015-12-02 12:24:05 +01:00
Matthias Beyer 8404303dbd Remove BMModule::execute() which is not required by the trait anymore 2015-12-02 12:24:05 +01:00
Matthias Beyer 168852714a Add modules for commands of BM module 2015-12-02 12:24:05 +01:00
Matthias Beyer 55361f71fe Add struct for passing environment of command to command execute function 2015-12-02 12:24:05 +01:00
Matthias Beyer a9a33321f7 Make command submodule public 2015-12-02 12:24:05 +01:00
Matthias Beyer f94f8870e9 The exec() function of an ExecutableCommand should get the CLI matches as well 2015-12-02 12:24:05 +01:00
Matthias Beyer 4af971a5d0 Make these types public 2015-12-02 12:24:05 +01:00
Matthias Beyer cbd85b3d8e Module should only provide functionality to get a list of commands it can execute
These commands can then be executed.
2015-12-02 12:24:05 +01:00
Matthias Beyer 86286cce1b Remove livetimes 2015-12-02 12:24:05 +01:00
Matthias Beyer bfccbc32c5 Add BMModule::add() implementation 2015-12-02 12:24:05 +01:00
Matthias Beyer 0896f2093b Fixed inverted logic in get_tags() 2015-12-02 12:24:05 +01:00
Matthias Beyer 006724a184 Refactor get_tags to return no Option 2015-12-02 12:24:05 +01:00
Matthias Beyer 51f6af6346 We should really use String here 2015-12-02 12:24:05 +01:00
Matthias Beyer cd72295c1a Add function to build header content 2015-12-02 12:24:05 +01:00
Matthias Beyer 9f29f0e1b7 Reject tasks if they contain spaces 2015-12-02 12:24:05 +01:00
Matthias Beyer 8cffdddab2 Split header spec into smaller functions 2015-12-02 12:24:05 +01:00
Matthias Beyer b76d38f4c6 Rewrite Bookmark FileHeaderSpec
One file is one bookmark, so we should have the appropriate header spec
for this.
2015-12-02 12:24:05 +01:00
Matthias Beyer 07f223bb8a Add header module with spec 2015-12-02 12:24:05 +01:00
Matthias Beyer de843541f1 Add some debugging output in bm module 2015-12-02 12:24:05 +01:00
Matthias Beyer 15a2480604 Add information on what gets done 2015-12-02 12:24:05 +01:00
Matthias Beyer 750f4cd31c Start adding the BM submodule 2015-12-02 12:24:05 +01:00
Matthias Beyer efe1577f02 TablePrinter should be pub 2015-12-02 12:20:54 +01:00
Matthias Beyer c3397d5238 Use prettytable to implement TablePrinter 2015-12-02 12:20:52 +01:00
Matthias Beyer 918016368e Add file printer helpers 2015-12-02 12:20:23 +01:00
Matthias Beyer 2bab3d48e6 Fix JsonHeaderParser::serialize() 2015-12-02 12:00:20 +01:00
Matthias Beyer 7549db4ffc Fix JsonHeaderParser::visit_json() 2015-12-02 12:00:20 +01:00
Matthias Beyer 500fb281a0 JsonHeaderParser: Make spec optional 2015-12-02 12:00:20 +01:00
Matthias Beyer 34cf5076f9 Reimplement JsonHeaderParser::write() 2015-12-02 12:00:19 +01:00
Matthias Beyer df18071d9a Move JsonHeaderParser::new() out of trait implementation 2015-12-02 12:00:19 +01:00
Matthias Beyer cf196b2492 Fixup: get_file_ids() - use prefix_of_files_for_module() 2015-12-02 12:00:19 +01:00
Matthias Beyer 0e4a56fe68 Reimplement StorageBackend::new(), create directory if not existing, store storepath in extra variable 2015-12-02 12:00:19 +01:00
Matthias Beyer 1e5c50bc0b Fixup: Import remove_file() 2015-12-02 12:00:19 +01:00
Matthias Beyer 0796d0ab36 Fixup: File::from_parser_result() gets module now as well 2015-12-02 12:00:19 +01:00
Matthias Beyer 9a0cc75c6f BackendOperationResult: Add optional type parameter 2015-12-02 12:00:19 +01:00
Matthias Beyer d35e89f27c Fixup: get_file_by_id() gets &Module as well, so it can use build_filepath_with_id() 2015-12-02 12:00:19 +01:00
Matthias Beyer c81800d985 Implement helpers: build_filepath_with_id(), prefix_of_files_for_module() 2015-12-02 12:00:19 +01:00
Matthias Beyer 0363075f9c Implement StorageBackend::remove_file() 2015-12-02 12:00:19 +01:00
Matthias Beyer c23a1e22ab Implement helper write_with_parser() 2015-12-02 12:00:19 +01:00
Matthias Beyer 25b26b03a6 Reimplement StorageBackend::update_file() 2015-12-02 12:00:19 +01:00
Matthias Beyer 8bd782c1a7 Reimplement StorageBackend::put_file() 2015-12-02 12:00:19 +01:00
Matthias Beyer d141a3670f Add StorageBackend::iter_files() 2015-12-02 12:00:19 +01:00
Matthias Beyer 1b6711fe10 Add StorageBackend::iter_ids() 2015-12-02 12:00:19 +01:00
Matthias Beyer d22b991da0 Implement StorageBackendError::build() helper 2015-12-02 12:00:19 +01:00
Matthias Beyer 8ff5dcc9e8 Add StorageBackendError::caused_by member 2015-12-02 12:00:19 +01:00
Matthias Beyer c73cb88df4 Remove StorageBackendError::explanation member 2015-12-02 12:00:19 +01:00
Matthias Beyer 9493c79104 Reimplement Debug for File 2015-12-02 12:00:12 +01:00
Matthias Beyer 535952c2a5 Implement Display for File 2015-12-02 11:58:07 +01:00
Matthias Beyer 6eb7bee355 Reimplement File::contents() with File::{header(),data()} 2015-12-02 11:58:07 +01:00
Matthias Beyer 09940f3228 Each file must have an owning module 2015-12-02 11:58:07 +01:00
Matthias Beyer 90f08cc1f2 Implement File::{header(),data()} as header/data getters 2015-12-02 11:32:59 +01:00
Matthias Beyer d89977a09e Implement File::matches_with(&Regex) 2015-12-02 11:32:14 +01:00
Matthias Beyer 58bd36599f Implement FileHeaderData::matches_with(&Regex) 2015-12-02 11:30:50 +01:00
Matthias Beyer 8f8badebb3 Fix: FileHeaderData::Key::name must be a &'static str 2015-12-02 11:30:14 +01:00
Matthias Beyer 2a468059aa parser: Remove livetimes 2015-12-02 11:28:21 +01:00
Matthias Beyer a5dabe55a9 Provide getter for store path in Runtime object 2015-12-01 18:37:44 +01:00
Matthias Beyer 5942877c43 Add possibility to override store name in CLI 2015-12-01 18:37:29 +01:00
Matthias Beyer da85c3ffe7 Rename function: store_path_str() -> store_path() 2015-12-01 18:36:04 +01:00
Matthias Beyer 5f4718a2e5 Add debug output for Configuration::new() 2015-12-01 18:32:00 +01:00
Matthias Beyer 56cd6dc4ae Configuration::new() should use default values
if the configuration can not be loaded.
2015-12-01 18:25:29 +01:00
Matthias Beyer 9edad2800f Add debugging output in storage parser code 2015-11-27 22:18:26 +01:00
Matthias Beyer 53a14ea1dc Add debug output in storage backend code 2015-11-27 22:14:02 +01:00
Matthias Beyer 20dc562dee Do debug output when creating a file object 2015-11-27 19:37:20 +01:00
Matthias Beyer c82f9ea6ae Implement Debug for File 2015-11-27 19:37:08 +01:00
Matthias Beyer 55d6de627a Add debug output in match_header_spec() 2015-11-27 19:31:46 +01:00
Matthias Beyer beee7b20b4 Add debug output in main 2015-11-27 19:24:58 +01:00
Matthias Beyer beccb7ab3d Implement Debug for Configuration 2015-11-27 19:22:21 +01:00
Matthias Beyer a487fbcaf4 Implement Debug for CliConfig 2015-11-27 19:22:09 +01:00
Matthias Beyer 990252e4e4 Implement Debug for Runtime 2015-11-27 19:22:09 +01:00
Matthias Beyer 469ff607eb Fix: unused import 2015-11-27 17:00:45 +01:00
Matthias Beyer 06ea949e65 Fix: unused import 2015-11-27 17:00:34 +01:00
Matthias Beyer 869cc5e5ab Fix: unused import 2015-11-27 16:59:51 +01:00
Matthias Beyer 56612cf1a0 Fix: unused import 2015-11-27 16:59:44 +01:00
Matthias Beyer 7786eed7f0 Fix: unused import 2015-11-27 16:59:05 +01:00
Matthias Beyer 82e346e89b Fix: unused import 2015-11-27 16:58:38 +01:00
Matthias Beyer 5bd40d208a Fix: unused import 2015-11-27 16:58:19 +01:00
Matthias Beyer e8af265c0c Fix: unused import 2015-11-27 16:57:52 +01:00
Matthias Beyer 6926363f70 Fix: use unimplemented instead of false implementation 2015-11-27 16:55:18 +01:00
Matthias Beyer 8a546dfb26 Fix Bug: Pass iterator value, not currently parsed value 2015-11-27 16:52:09 +01:00
Matthias Beyer 3ed431ad5f Fix: unnecessary parentheses around `if` condition 2015-11-27 16:50:54 +01:00
Matthias Beyer 930a7ecc3f Fix: structure field `dataDump` should have a snake case name such as `data_dump` 2015-11-27 16:50:12 +01:00
Matthias Beyer c8231e5c31 Fix: variable does not need to be mutable 2015-11-27 16:49:25 +01:00
Matthias Beyer c597f6d1f0 Fix compiletime errors 2015-11-24 19:37:22 +01:00
Matthias Beyer a6054d2223 StorageBackendError: Use String instead of str in params 2015-11-24 19:31:22 +01:00
Matthias Beyer f694feacf9 Clone these values when returning them 2015-11-24 19:28:26 +01:00
Matthias Beyer a8bc7ecc47 Make FileHeaderData cloneable 2015-11-24 19:27:57 +01:00
Matthias Beyer 2ed2b17b85 Refactor get_file_by_id() into smaller functions 2015-11-24 16:47:01 +01:00
Matthias Beyer 1b1f0678cb Refactor: File::from_parser_result() shouldnt do error handling, do this in calling code 2015-11-24 16:34:03 +01:00
Matthias Beyer b6af948c0e Implement Storage::get_file_by_id() 2015-11-24 10:59:30 +01:00
Matthias Beyer 176183e718 Refactor helpers for more fine-grained possibilities 2015-11-24 10:59:16 +01:00
Matthias Beyer 4464c32b98 Add helper to build file from Parser return value 2015-11-24 10:58:54 +01:00
Matthias Beyer 8808e911c8 Implement Storage::update_file() 2015-11-24 10:48:30 +01:00
Matthias Beyer 14ae6d623b Refactor: Outsource filepath building 2015-11-24 10:30:52 +01:00
Matthias Beyer f498ffa54c Implement Storage::put_file() 2015-11-24 10:27:42 +01:00
Matthias Beyer 616e0b789b Make Parser::write() public 2015-11-24 10:27:34 +01:00
Matthias Beyer c2135b5c6c Add getter methods for File object contents 2015-11-24 10:27:20 +01:00
Matthias Beyer da792694c5 Add StorageBackend builder 2015-11-23 19:54:08 +01:00
Matthias Beyer e1faad7a28 Add runtime rtp getter (and in cli and configuration types) 2015-11-23 19:48:37 +01:00
Matthias Beyer 14d92d8b2f Add some functions to File, so we can generate file instances with content 2015-11-23 19:27:54 +01:00
Matthias Beyer 91de245836 Rename function to match naming scheme 2015-11-23 19:26:02 +01:00
Matthias Beyer b8fa7c5696 Reset and restart implementation 2015-11-23 19:25:27 +01:00
Matthias Beyer e623b74139 Implement: Storage::createFile() 2015-11-23 19:17:46 +01:00
Matthias Beyer 263a3b7780 Store the file handle in our internal File type 2015-11-23 19:17:46 +01:00
Matthias Beyer 7faa693d5c Move implementation to get a new file on the FS
Now we have a function which creates a new file on the FS and returns
the handle and the FileID object.
2015-11-23 19:17:46 +01:00
Matthias Beyer 48fd3e66f5 Add implementation for Storage::createEmpty() 2015-11-23 19:17:46 +01:00
Matthias Beyer 25de1c6c2a We should use the FileID type in the File 2015-11-23 18:46:09 +01:00
Matthias Beyer bff2bf68c6 We dont need to pass the module here 2015-11-23 18:45:31 +01:00
Matthias Beyer 9aced858ac Outsource file id parsing 2015-11-23 18:42:55 +01:00
Matthias Beyer b0e5f28528 Implement getFileList() 2015-11-23 18:28:24 +01:00
Matthias Beyer 68c6c35f54 Add getFileList(self) to list files from basepath 2015-11-20 15:34:40 +01:00
Matthias Beyer 2af5f404f4 Fix typo in StorageBackend::new() 2015-11-20 15:34:06 +01:00
Matthias Beyer 7e86394b3c add dep: glob 2015-11-20 15:33:40 +01:00
Matthias Beyer e59fbd52c3 Add fn to extract id from path string 2015-11-20 15:33:24 +01:00
Matthias Beyer 42ac04c1a8 Implement StorageBackend::new() 2015-11-10 20:53:35 +01:00
Matthias Beyer 9cff6772c8 Implement StorageBackendError 2015-11-10 20:43:55 +01:00
Matthias Beyer 99a2670803 Add module/command trait 2015-11-10 20:43:53 +01:00
Matthias Beyer ba91e7ee26 The module itself has to be populate the Command instance
This will be done by the module returning a lambda to build the
command instance.
2015-11-10 20:43:35 +01:00
Matthias Beyer f4dbec72ee Add storage/backend setup 2015-11-10 20:43:30 +01:00
Matthias Beyer e73701ace4 Remove old todo module code 2015-11-10 20:33:47 +01:00
Matthias Beyer 159b363d58 Remove the concept of DataParser and Abstract Data types
We use String as type for Data, so we don't have problems with parsing
things and the whole templating foo in the parser gets a lot simpler.
2015-11-10 20:31:05 +01:00
Matthias Beyer e3afb3c0f3 Implement Serialization for FileHeaderData 2015-11-09 18:35:07 +01:00
Matthias Beyer 9167fde4fb Add dependency: serde 2015-11-09 18:35:07 +01:00
Matthias Beyer e8e82f6844 Make functions public 2015-11-09 18:35:07 +01:00
Matthias Beyer fd35a00381 Implement JSON to FileHeaderData parser 2015-11-09 18:35:07 +01:00
Matthias Beyer b211862602 Add json deserializer 2015-11-09 18:35:02 +01:00
Matthias Beyer aa94852e84 Add unimplemented macro in match_header_spec() 2015-11-07 23:40:03 +01:00
Matthias Beyer d260ef20e3 Minify Parser.write() 2015-11-07 23:39:53 +01:00
Matthias Beyer 44994487c6 Minify Parser.read() 2015-11-07 23:39:47 +01:00
Matthias Beyer 2c940d0ca8 Add missing "pub" 2015-11-07 23:39:39 +01:00
Matthias Beyer 850b4579a8 Add type "File" to load a file from disk 2015-11-07 23:39:30 +01:00
Matthias Beyer 111a990b99 Add debugging output in main.rs 2015-11-07 23:38:49 +01:00
Matthias Beyer 1ecb13a8fe Remove early logging, doesnt work 2015-11-07 23:38:40 +01:00
Matthias Beyer b123144202 Fix types
* We can use a str for the key name
* We don't need a box if we have a vec
2015-10-30 18:26:42 +01:00
Matthias Beyer d0af1a493b Make storage modules public 2015-10-30 18:26:42 +01:00
Matthias Beyer 1c2c52fa37 Add "Map" type to FileHeaderSpec and FileHeaderData 2015-10-30 18:09:01 +01:00
Matthias Beyer 9dde3e4f72 Remove path member from MatchError
At this point, this is too complicated to implement for me.
2015-10-30 17:46:25 +01:00
Matthias Beyer 10697feb8a Add error generating
Which required adding of lifetimes
2015-10-30 17:35:21 +01:00
Matthias Beyer caee02c333 Add algorithm to match spec on data 2015-10-30 16:52:02 +01:00
Matthias Beyer f9cc0e41ce Implement Display for FileHeaderSpec 2015-10-30 16:50:02 +01:00
Matthias Beyer 96ca9637d1 Add type MatchError 2015-10-30 16:48:48 +01:00
Matthias Beyer e6fb2f232d FileHeaderSpec, FileHeaderData can derive Debug 2015-10-30 16:47:04 +01:00
Matthias Beyer d54825de6b Move divide_text() into scope of impl Parser 2015-10-30 15:23:29 +01:00
Matthias Beyer b6d52b2616 Implement: Error, Debug, Display for ParserError 2015-10-30 15:22:11 +01:00
Matthias Beyer e426f384f4 Remove old code 2015-10-30 14:48:45 +01:00
Matthias Beyer 589844102d Move parser code out of file.rs 2015-10-30 14:48:45 +01:00
Matthias Beyer 4b8d7b0c4f Add module file 2015-10-30 14:32:22 +01:00
Matthias Beyer 2989cb803d Move module/file to storage/file 2015-10-30 14:31:45 +01:00
Matthias Beyer 52579a3e7c Move: src/storage.rs -> src/storage/mod.rs 2015-10-30 14:31:26 +01:00
Matthias Beyer 50f140edef Implement Parser.write() 2015-10-30 01:05:44 +01:00
Matthias Beyer 11c2fe1260 Implement Abstract Parser which uses Header- and Data-Parser internally 2015-10-30 00:50:35 +01:00
Matthias Beyer 1a4b3f9747 FileDataParser::read() should return Result<> 2015-10-28 21:28:43 +01:00
Matthias Beyer bbefacd0a2 FileHeaderParser::read() should get the string, not a ref to it 2015-10-28 21:28:43 +01:00
Matthias Beyer 380d58a3c0 Move header types/traits outside own module 2015-10-28 21:28:43 +01:00
Matthias Beyer 647d5611c7 Out Traits here must implement the Sized trait 2015-10-28 21:28:43 +01:00
Matthias Beyer 6fa42204cb FileParser -> FileDataParser
Let the FileParser be a FileDataParser, so we have uncoupled the header
parsers from the data parsers.

This way we can make the parsing process multithreaded.
2015-10-28 21:28:43 +01:00
Matthias Beyer 1166f313a3 Add divide_text() function 2015-10-28 17:43:19 +01:00
Matthias Beyer bdb0792040 Add extern crate regex 2015-10-28 17:39:53 +01:00
Matthias Beyer 6ec4a701d3 Implement ParserError 2015-10-28 17:39:51 +01:00
Matthias Beyer ec1df06b24 Add file header types
for specifying header structure and parsing it from "raw" text.
2015-10-28 17:03:52 +01:00
Matthias Beyer b98dea3946 Rename "Config" to "CliConfig" 2015-10-27 00:02:42 +01:00
Matthias Beyer 904d3fa8c0 Pass configuration from cfg file to Runtime as well 2015-10-27 00:01:11 +01:00
Matthias Beyer 497cdde581 Logger should respect configuration 2015-10-26 23:59:24 +01:00
Matthias Beyer 754ad0c6cb Add store path configuration 2015-10-26 23:56:54 +01:00
Matthias Beyer 099d63f13a Implement simple configuration module 2015-10-26 23:52:01 +01:00
Matthias Beyer 32e585e7eb Add configuration module 2015-10-26 22:30:15 +01:00
Matthias Beyer 04567f594d Fix: Runtime.is_{verbose,debugging} 2015-10-26 21:27:04 +01:00
Matthias Beyer 7f224e8f58 Replace all output with macros from logging library 2015-10-26 20:58:52 +01:00
Matthias Beyer 127c99f16f Remove old logging functions 2015-10-26 20:53:49 +01:00
Matthias Beyer c41ec1d85c Add logger with logging library 2015-10-26 20:53:12 +01:00
Matthias Beyer f7421cf252 Runtime print helpers should get a &'static str 2015-10-25 20:10:49 +01:00
Matthias Beyer c39d43fbd3 Runtime publishes config 2015-10-25 20:10:49 +01:00