| eZ publish Enterprise Component: ConsoleTools, Requirements |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| |
| Introduction |
| ============ |
| |
| Purpose of the ConsoleTools package |
| ----------------------------------- |
| |
| The ConsoleTools package will contain several classes to support comfortable |
| development of console based applications. These classes shall be designed as |
| independant as possible from each other to let the user flexibly choose, which |
| ones he likes to use and which not. |
| |
| Aimed features are: |
| |
| - Comfortable handling of options and parameters (long, short, values,...) |
| - Formatting assistance for console output (placing, colors,...) |
| - Convenience functionality to deal with Windoze and Unix based systems |
| |
| Current implementation |
| ---------------------- |
| |
| Included classes |
| ^^^^^^^^^^^^^^^^ |
| |
| 2 classes are directly involved in the CLI handling. |
| |
| eZScript |
| General initiallization and shutdown script functionality. Very eZ |
| publish specific. Handles initialization of database connection for |
| example, but also some CLI related actions like shutting down every |
| thing cleanly and returning an exit code. |
| |
| eZCLI |
| Handles general console output, formating and option parsing. |
| |
| External classes |
| ^^^^^^^^^^^^^^^^ |
| |
| Beside that, there are dependencies to log/debug/whatever and the following |
| ones. |
| |
| eZTextCodec |
| Base clase for drivers that convert text between different output formats. |
| Currently has 1 extending class: eZCodePageCodec. Part of the I18N |
| package. |
| |
| General involved classes: |
| eZPublishSDK, eZDebug, eZINI, eZDebugSetting, eZExecution, |
| eZExtension, eZDB, eZSession, eZUser, eZModule |
| |
| General notes |
| ------------- |
| |
| The functionality for console handling seems to be widly spread over the |
| current eZ publish classes. Beside that, it is not quite feature complete and |
| mixed around with web handling classes. |
| |
| Requirenments |
| ============= |
| |
| Design goals |
| ------------ |
| |
| The command line handling classes should be redesigned completly, since it's |
| currently messed up with web related stuff and fully integrated with eZ |
| publish. |
| |
| Following functionality will be included: |
| |
| - General in and output handling functionality |
| |
| - Output strings |
| |
| - Style output (color, underline?, ...) |
| - Position change |
| - Error/notice/warning support |
| |
| - Handling of options |
| |
| - Long / short options |
| - Dealing with help output |
| - Optional and required stuff |
| - Dependencies and exclusion of options |
| |
| - Handling of advanced output |
| |
| - Progress bars (single, keep multiple in mind) |
| - Tables |
| |
| All parts should be as independant as possible. Some parts depend quite hardly |
| on the output itself, this is ok. Option parsing and handling should _not_ |
| depend on the output class. |
| |
| Design |
| ====== |
| |
| The design for this package has been splitted into 3 categories of classes: |
| |
| Output |
| This type of classes provide low level output functionality for console |
| based applications (like styling text, line breaking,...). |
| Generation |
| This type of classes provide more advanced outputing features (like |
| generating structures of text automatically, providing advances |
| tools,...). This type of classes depends on the Output classes described |
| above, since they output data. |
| Handling |
| This type of classes is independant of both above shown categories and |
| provides features for handling common functions in console based |
| applications. Since they do not have to output directly, there is no need |
| to depend on output functionality. |
| |