command line: config and source names are optional (BMC #23783)
authorPatrick Ohly <patrick.ohly@intel.com>
Mon, 21 Nov 2011 16:38:34 +0000 (17:38 +0100)
committerPatrick Ohly <patrick.ohly@intel.com>
Mon, 28 Nov 2011 09:18:19 +0000 (10:18 +0100)
commit0f1bed33fe139483e832ec8134dc03998b2a08b7
treeefe7f5972f5d74e5c0009e884cbf0301b016031f
parent00de4dfa876474e5ac95e97bf68530ded6879329
command line: config and source names are optional (BMC #23783)

The need to add "foo" and "bar" pseudo config and source names to the
command line even when all parameters for the operation where
explicitly specified on the command line was confusing.

Now it is possible to invoke item operations without the config and
source name. Names which refer to non-existent configs are still
accepted, as in previous releases. Typos are handled better by
producing a detailed error report which includes (as applicable):
- config doesn't exist
- source doesn't exist or not selected
- backend property not set

This error report is created only if SyncSource was unable to create a
SyncSource, which is detected by catching the status exception with
the right error code. Trying to anticipate the error at the Cmdline
level would duplicate code found in the SyncSource and/or impose
limitations which might not hold in all cases.

Because luids used to be positional arguments after <config> and
<source>, a new --luids keyword is necessary to indicate that the
following parameters are luids and not <config> and <source>.

Added a CmdlineTest::testItemOperations for this new command line
syntax. It uses the file backend to run some real operations (missing
earlier).

Error reporting in the command line uses the same mix of writing error
messages and returning early (Cmdline) and throwing exceptions (rest
of SyncEvolution). Perhaps the Cmdline class should also use
exceptions - but not now.
README.rst
src/syncevo/Cmdline.cpp
src/syncevo/Cmdline.h
src/syncevo/SyncSource.cpp