Details
-
Improvement
-
Status: Open
-
Normal
-
Resolution: Unresolved
-
None
-
None
-
Code Clarity
-
Normal
-
All
-
None
Description
CQSH's core Read-Eval-Print-Loop (REPL) class Shell implements the Python stdlib Cmd framework for writing line-oriented command interpreters. It is the core of CQLSH. While a subclass of Lib/cmd.py, its currently commingled with command line parsing into a jumbo cqlshmain.py file. It's role as a class is easily missed as there is only one line defining it and one line invoking it.
This Jira will separate the class Shell (inherited from cmd.Cmd) into its own class file, shell.py.
Benefits:
- size - excessively large files can be ugly, and cqlshmain is almost 2400 lines.
- separation of concerns - argument parsing and interactive interpreters are very different responsibilities. Code is improved and more reusable when unrelated behavior is in separate source file.
- clarity - reading cqlshmain, its currently not obvious that 75% of the code is implementing interfaces in the cmd.Cmd library class. There is currently no class comment explaining how the Shell class is implemented.
New state:
- cqlshmain.py – existing startup and argparse code
- shell.py – existing Shell REPL for CQL
Attachments
Issue Links
- depends upon
-
CASSANDRA-19201 Refactor cqlshmain global constants
- Resolved