043e607765
Implement StorageBackendError::cause()
2015-12-02 12:24:05 +01:00
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
144398a2ad
Remove explanation member of StorageBackendError to reduce complexibility
2015-12-02 12:24:05 +01:00
83aa5afcbe
Build ModuleError out of StorageBackendError if any
2015-12-02 12:24:05 +01:00
c3019528cf
ModuleError needs a cause as well
2015-12-02 12:24:05 +01:00
4a6d1a74c0
Retry fixing the StorageBackend::cause()
2015-12-02 12:24:05 +01:00
366121b6ed
Reimplement StorageBackend::update_file()
2015-12-02 12:24:05 +01:00
eabf726846
Outsource file to string parsing
2015-12-02 12:24:05 +01:00
e0fefc3da4
Reimplement StorageBackend::put_file()
2015-12-02 12:24:05 +01:00
21d889e1e2
Add caused_by field in StorageBackend
2015-12-02 12:24:05 +01:00
455d6e88ed
Use real array instead of text array to save tags
2015-12-02 12:24:05 +01:00
cf1687e8ba
Convention: module names are lowercase
2015-12-02 12:24:05 +01:00
1038880de9
Save storepath in extra variable
2015-12-02 12:24:05 +01:00
8a2c41ea22
Fix: Build StorageBackend with runtime
2015-12-02 12:24:05 +01:00
e78bde72c1
Implement add_command() with backend
2015-12-02 12:24:05 +01:00
c9ebe3b7a1
Pass owner to file path builder helper function
2015-12-02 12:24:05 +01:00
98ec735ea3
Add File::owner() - a getter for the owner of a file
2015-12-02 12:24:05 +01:00
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
0d751f9ffd
Add some debug output in StorageBackend::build_filepath_with_id()
2015-12-02 12:24:05 +01:00
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
ff873c8fe3
Transfer old code to new structure
2015-12-02 12:24:05 +01:00
08d6e8da13
We need to unwrap here (and it is save)
2015-12-02 12:24:05 +01:00
fda2c4feea
Add CommandEnv building in command calling code in main()
2015-12-02 12:24:05 +01:00
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
9bf9f96ab1
Fix: ModuleError::mk() -> pub ModuleError::new()
2015-12-02 12:24:05 +01:00
18ea01b854
Pass StorageBackend to subcommand function
2015-12-02 12:24:05 +01:00
3f19aba7b2
Add subcommand calling code in main()
2015-12-02 12:24:05 +01:00
4a73a317d4
Move submodule commands/mod.rs to commands.rs
2015-12-02 12:24:05 +01:00
e10d1bcb65
Reimplement commands for bm
2015-12-02 12:24:05 +01:00
24a6e961af
Change get_commands() for latest trait change
2015-12-02 12:24:05 +01:00
8af9ba48c0
We dont need the command traits anymore
2015-12-02 12:24:05 +01:00
84571bef0a
get_commands() can return a HashMap<str, fn()>, which is command name -> command function
2015-12-02 12:24:05 +01:00
a24d3175dd
We do not have Module::execute() anymore
2015-12-02 12:24:05 +01:00
8404303dbd
Remove BMModule::execute() which is not required by the trait anymore
2015-12-02 12:24:05 +01:00
168852714a
Add modules for commands of BM module
2015-12-02 12:24:05 +01:00
55361f71fe
Add struct for passing environment of command to command execute function
2015-12-02 12:24:05 +01:00
a9a33321f7
Make command submodule public
2015-12-02 12:24:05 +01:00
f94f8870e9
The exec() function of an ExecutableCommand should get the CLI matches as well
2015-12-02 12:24:05 +01:00
4af971a5d0
Make these types public
2015-12-02 12:24:05 +01:00
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
86286cce1b
Remove livetimes
2015-12-02 12:24:05 +01:00
bfccbc32c5
Add BMModule::add() implementation
2015-12-02 12:24:05 +01:00
0896f2093b
Fixed inverted logic in get_tags()
2015-12-02 12:24:05 +01:00
006724a184
Refactor get_tags to return no Option
2015-12-02 12:24:05 +01:00
51f6af6346
We should really use String here
2015-12-02 12:24:05 +01:00
cd72295c1a
Add function to build header content
2015-12-02 12:24:05 +01:00
9f29f0e1b7
Reject tasks if they contain spaces
2015-12-02 12:24:05 +01:00
8cffdddab2
Split header spec into smaller functions
2015-12-02 12:24:05 +01:00
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
07f223bb8a
Add header module with spec
2015-12-02 12:24:05 +01:00
de843541f1
Add some debugging output in bm module
2015-12-02 12:24:05 +01:00
15a2480604
Add information on what gets done
2015-12-02 12:24:05 +01:00
750f4cd31c
Start adding the BM submodule
2015-12-02 12:24:05 +01:00
efe1577f02
TablePrinter should be pub
2015-12-02 12:20:54 +01:00
c3397d5238
Use prettytable to implement TablePrinter
2015-12-02 12:20:52 +01:00
918016368e
Add file printer helpers
2015-12-02 12:20:23 +01:00
2bab3d48e6
Fix JsonHeaderParser::serialize()
2015-12-02 12:00:20 +01:00
7549db4ffc
Fix JsonHeaderParser::visit_json()
2015-12-02 12:00:20 +01:00
500fb281a0
JsonHeaderParser: Make spec optional
2015-12-02 12:00:20 +01:00
34cf5076f9
Reimplement JsonHeaderParser::write()
2015-12-02 12:00:19 +01:00
df18071d9a
Move JsonHeaderParser::new() out of trait implementation
2015-12-02 12:00:19 +01:00
cf196b2492
Fixup: get_file_ids() - use prefix_of_files_for_module()
2015-12-02 12:00:19 +01:00
0e4a56fe68
Reimplement StorageBackend::new(), create directory if not existing, store storepath in extra variable
2015-12-02 12:00:19 +01:00
1e5c50bc0b
Fixup: Import remove_file()
2015-12-02 12:00:19 +01:00
0796d0ab36
Fixup: File::from_parser_result() gets module now as well
2015-12-02 12:00:19 +01:00
9a0cc75c6f
BackendOperationResult: Add optional type parameter
2015-12-02 12:00:19 +01:00
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
c81800d985
Implement helpers: build_filepath_with_id(), prefix_of_files_for_module()
2015-12-02 12:00:19 +01:00
0363075f9c
Implement StorageBackend::remove_file()
2015-12-02 12:00:19 +01:00
c23a1e22ab
Implement helper write_with_parser()
2015-12-02 12:00:19 +01:00
25b26b03a6
Reimplement StorageBackend::update_file()
2015-12-02 12:00:19 +01:00
8bd782c1a7
Reimplement StorageBackend::put_file()
2015-12-02 12:00:19 +01:00
d141a3670f
Add StorageBackend::iter_files()
2015-12-02 12:00:19 +01:00
1b6711fe10
Add StorageBackend::iter_ids()
2015-12-02 12:00:19 +01:00
d22b991da0
Implement StorageBackendError::build() helper
2015-12-02 12:00:19 +01:00
8ff5dcc9e8
Add StorageBackendError::caused_by member
2015-12-02 12:00:19 +01:00
c73cb88df4
Remove StorageBackendError::explanation member
2015-12-02 12:00:19 +01:00
9493c79104
Reimplement Debug for File
2015-12-02 12:00:12 +01:00
535952c2a5
Implement Display for File
2015-12-02 11:58:07 +01:00
6eb7bee355
Reimplement File::contents() with File::{header(),data()}
2015-12-02 11:58:07 +01:00
09940f3228
Each file must have an owning module
2015-12-02 11:58:07 +01:00
90f08cc1f2
Implement File::{header(),data()} as header/data getters
2015-12-02 11:32:59 +01:00
d89977a09e
Implement File::matches_with(&Regex)
2015-12-02 11:32:14 +01:00
58bd36599f
Implement FileHeaderData::matches_with(&Regex)
2015-12-02 11:30:50 +01:00
8f8badebb3
Fix: FileHeaderData::Key::name must be a &'static str
2015-12-02 11:30:14 +01:00
2a468059aa
parser: Remove livetimes
2015-12-02 11:28:21 +01:00
a5dabe55a9
Provide getter for store path in Runtime object
2015-12-01 18:37:44 +01:00
5942877c43
Add possibility to override store name in CLI
2015-12-01 18:37:29 +01:00
da85c3ffe7
Rename function: store_path_str() -> store_path()
2015-12-01 18:36:04 +01:00
5f4718a2e5
Add debug output for Configuration::new()
2015-12-01 18:32:00 +01:00
56cd6dc4ae
Configuration::new() should use default values
...
if the configuration can not be loaded.
2015-12-01 18:25:29 +01:00
9edad2800f
Add debugging output in storage parser code
2015-11-27 22:18:26 +01:00
53a14ea1dc
Add debug output in storage backend code
2015-11-27 22:14:02 +01:00
20dc562dee
Do debug output when creating a file object
2015-11-27 19:37:20 +01:00
c82f9ea6ae
Implement Debug for File
2015-11-27 19:37:08 +01:00
55d6de627a
Add debug output in match_header_spec()
2015-11-27 19:31:46 +01:00
beee7b20b4
Add debug output in main
2015-11-27 19:24:58 +01:00
beccb7ab3d
Implement Debug for Configuration
2015-11-27 19:22:21 +01:00
a487fbcaf4
Implement Debug for CliConfig
2015-11-27 19:22:09 +01:00
990252e4e4
Implement Debug for Runtime
2015-11-27 19:22:09 +01:00