dd7b412976
Remove code
2015-12-21 19:20:09 +01:00
3212429c9e
Impl Debug for Parser
2015-12-19 11:47:24 +01:00
d5af28d98d
Impl {Display,Debug} for JsonHeaderParser
2015-12-19 11:47:24 +01:00
ee78c249f0
Remove leftover file from storage backend moving
2015-12-06 13:15:07 +01:00
188aacad75
Move FileHeader{Spec,Data} to own submodules
2015-12-06 13:09:51 +01:00
3b89148cd0
Move storage/file_id.rs -> storage/file/id.rs
2015-12-06 13:02:21 +01:00
95f6f2e97e
Move file.rs to subdirectory
2015-12-06 13:01:02 +01:00
6e0d0058b0
Move key generating to top-level spec helpers
2015-12-06 12:49:31 +01:00
dad856ff2a
Move get_tags() from BM module to module utilities
2015-12-06 12:49:31 +01:00
7d40b68407
Rename: StorageBackend -> Storage
2015-12-06 12:49:02 +01:00
da2b482bda
Move Storage Backend code imag::storage::backend -> imag::storage
2015-12-06 12:47:08 +01:00
ab3ada0914
Move header helpers from module/header/ to module/helpers/
2015-12-05 16:03:05 +01:00
c6a2d39981
Outsource header utilities into header helper
2015-12-05 16:01:30 +01:00
3a8f2b5493
Refactor: dont use helper but StorageBackendError::new() directly
2015-12-05 15:01:46 +01:00
e6a32eafc0
Outsource StorageBackendError building into helper function
2015-12-05 14:24:58 +01:00
9f59478da0
Readability fixes
2015-12-05 11:10:54 +01:00
93393751b2
Remove uneccessary variable
2015-12-05 11:06:22 +01:00
80563cb340
Move tag filtering to sub-function
2015-12-05 11:05:50 +01:00
e8c7df4593
Remove variable, use expression directly
2015-12-05 11:03:05 +01:00
166a0cf5dd
bm: remove_command: Refactor into sub-functions
2015-12-05 11:00:44 +01:00
75cedc1580
Move to rust stable (1.4 atm) so we can use clap
2015-12-05 10:45:33 +01:00
230d00f35a
Remove unused imports
2015-12-05 01:23:06 +01:00
1f8bdef1ed
Remove unused variables
2015-12-05 01:18:12 +01:00
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
5953563671
Refactor for readability
2015-12-04 23:39:30 +01:00
f8e870312e
Outsource: ids iterator to files vector
2015-12-04 23:35:48 +01:00
55f740497b
Beautify get_tags() helper
2015-12-04 23:26:08 +01:00
cd1bb88f20
Rework remove_command()
2015-12-04 23:19:18 +01:00
848fb0b4b4
Ensure we build the globstring _with_ the ID in it
2015-12-04 23:11:59 +01:00
261fbdd038
Add id getter for FileID
2015-12-04 23:11:46 +01:00
87d5852986
Ensure we dont crash if there are no files found
2015-12-04 23:01:37 +01:00
fd3d2ec8dc
Fixup get_file_by_id()
2015-12-04 22:57:28 +01:00
6473b743a3
Outsource globlist -> Vec<FileID> transformation code snippet
2015-12-04 22:53:31 +01:00
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
253658ece5
Fix: FileID::from() should also succeed if we pass a ID as string
2015-12-04 22:31:09 +01:00
2dfb76bd0d
Reimplement: Parser::divide_text()
2015-12-04 21:56:48 +01:00
5c38e6752b
Fixup glob string generating
2015-12-04 21:56:48 +01:00
08fa8f8655
Add debugging output
2015-12-04 21:56:48 +01:00
2b21d1cb47
StorageBackend::iter_files(): Add caused_by use
2015-12-04 21:56:48 +01:00
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
87d9ca7d06
Print table only if there are entries
2015-12-04 21:56:48 +01:00
b6c1a6301f
Use ParserError::with_cause() and build new ParserError object
2015-12-04 21:56:48 +01:00
3a76c05317
ParserError: Add cause
2015-12-04 21:56:47 +01:00
1aaea39b3d
storage/parser::divide_text(): Add debug output
2015-12-04 21:56:33 +01:00
e72c1c68b9
Fix: Output formatting
...
The header-content separator dashes were completely missing. Shame on
me.
2015-12-04 21:56:33 +01:00
e31239b02b
Fix wording in debug message
2015-12-04 21:56:33 +01:00
915cbd24ef
Impl From<PathBuf> for FileID, using From<String> for FileID
2015-12-04 21:56:33 +01:00
db9c4e48ba
ui/TablePrinter: Add debug output
2015-12-04 21:56:33 +01:00
3484858c3d
Remove unused code
2015-12-04 21:56:33 +01:00
2ab025a4eb
Add test: match_header_spec() testing
2015-12-04 17:52:30 +01:00
e025cf8835
Add missing Clone for FileHeaderSpec
2015-12-04 17:52:30 +01:00
04443b34bf
Add test: serialize-deserialize-compare
2015-12-04 17:52:30 +01:00
3e75117d69
Add test: Deserialization without Specification should match as well
2015-12-04 17:52:30 +01:00
74a9523f45
Use box_patterns, so we can unbox in the tests
2015-12-04 17:52:30 +01:00
2dce3151bd
Remove default impl for Error for ParserError
2015-12-04 17:52:30 +01:00
84e7100229
Add test for deserialization
2015-12-04 17:52:30 +01:00
d9019e408e
Remove static livetime in ParserError::short()
2015-12-04 17:51:22 +01:00
03856cd3a1
Reimplement StorageBackendError::{new,build} with Into<String>
2015-12-04 15:18:52 +01:00
c1d497fa6a
Add URL check before adding the "url" to the store
2015-12-04 15:09:03 +01:00
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
40ae26d0f2
BMModule::list_command() - we get back an Result<> here
2015-12-04 14:17:03 +01:00
be094dcfae
StorageBackend::iter_files() return Result<> with StorageBackendError on error
2015-12-04 14:04:20 +01:00
3df106ce8b
StorageBackend::iter_ids() return Result<> with StorageBackendError on error
2015-12-04 14:02:30 +01:00
1b0f4894ac
Use FileIDType::from() and remove select_id_type_from_str()
2015-12-03 17:37:13 +01:00
ce4d99384b
Impl From<&str> for FileIDType, use implementation in From<String> for FileIDType
2015-12-03 17:36:52 +01:00
f25e3683a1
Add hash type to filepath
2015-12-03 17:33:48 +01:00
5c3d0ecce7
Impl Into<FileIDType> for FileID
2015-12-03 17:33:29 +01:00
445f543159
Impl From<String> for FileIDType
2015-12-03 17:33:16 +01:00
02da675b3f
Impl Into<String> for FileIDType
2015-12-03 17:33:03 +01:00
dbf9ada732
Implement: FileID::from(&String), FileID::from(String)
2015-12-02 22:36:27 +01:00
2c3dd521b8
Add test: file_id_from_string()
2015-12-02 22:35:41 +01:00
bcc9771f28
module/bm/commands: Use FileID::into()
2015-12-02 13:43:09 +01:00
557187fbd7
storage/file: Call FileID::new() to build FileID object
2015-12-02 13:43:09 +01:00
8ddfb090b4
ui/file: use FileID::into()
2015-12-02 13:43:09 +01:00
292e29a5f1
Backend: Use FileID::from()
2015-12-02 13:43:09 +01:00
d3bdb39468
Reimplement FileID as abstract type, use Into, From traits for conversion
2015-12-02 13:43:09 +01:00
e93aa4ceae
Refactor uses of file-id-parsing functions to ensure we honnor the Result type
2015-12-02 13:06:08 +01:00
3e94e1612f
Add FileIDResult<FileID, FileIDError>
2015-12-02 13:05:48 +01:00
05a9803c05
Fixup: Member name
2015-12-02 12:29:04 +01:00
9231049e30
Remove StorageBackend::build()
2015-12-02 12:28:41 +01:00
731d13e0ba
Create store path on storage backend creation
2015-12-02 12:24:05 +01:00
abee4d4904
Implement StorageBackend::remove_file()
2015-12-02 12:24:05 +01:00
4675f79aae
remove_command(): Be able to run in "checked" mode
2015-12-02 12:24:05 +01:00
c81d0bf0a8
Implement remove_command()
2015-12-02 12:24:05 +01:00
484b1fb865
Outsource file retrieving from list_command() into helper function
2015-12-02 12:24:05 +01:00
6fcccc8297
Implement list_command
2015-12-02 12:24:05 +01:00
42181afde5
Add tags_of_file() to extract tags from a File
2015-12-02 12:24:05 +01:00
a6ed8e1080
Pass id as &FileID in StorageBackend::get_file_by_id()
2015-12-02 12:24:05 +01:00
103cba0c27
Add File::matches_with(&Regex)
2015-12-02 12:24:05 +01:00
e598a475e5
Use prettytable to implement TablePrinter
2015-12-02 12:24:05 +01:00
965779fcaf
Impl Debug for BMModule
2015-12-02 12:24:05 +01:00
e515a70ec2
Rewrite Debug for Module
2015-12-02 12:24:05 +01:00
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
469ff607eb
Fix: unused import
2015-11-27 17:00:45 +01:00
06ea949e65
Fix: unused import
2015-11-27 17:00:34 +01:00
869cc5e5ab
Fix: unused import
2015-11-27 16:59:51 +01:00
56612cf1a0
Fix: unused import
2015-11-27 16:59:44 +01:00
7786eed7f0
Fix: unused import
2015-11-27 16:59:05 +01:00
82e346e89b
Fix: unused import
2015-11-27 16:58:38 +01:00
5bd40d208a
Fix: unused import
2015-11-27 16:58:19 +01:00
e8af265c0c
Fix: unused import
2015-11-27 16:57:52 +01:00