Uploaded image for project: 'Apache Cassandra'
  1. Apache Cassandra
  2. CASSANDRA-18914

Refactor and separate CQLSH 'Shell' repl class

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Open
    • Normal
    • Resolution: Unresolved
    • None
    • CQL/Interpreter
    • 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

          Activity

            People

              bschoeni Brad Schoening
              bschoeni Brad Schoening
              Brad Schoening
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated: