Skip to content
Snippets Groups Projects

add cli optparse format

Merged Evgeniy Yurchenko requested to merge add_cli into main
1 file
+ 42
0
Compare changes
  • Side-by-side
  • Inline
node/cli.py 0 → 100644
+ 42
0
from typing import Callable, Protocol
import traceback
from CellFrame import AppCliServer
from DAP.Core import logIt
from optparse import OptionParser
from pycfhelpers.node.types import ReplyId
class ReplyObject:
def __init__(self, reply_id: ReplyId):
self.reply_id = reply_id
def reply(self, message: str):
AppCliServer.setReplyText(message, self.reply_id)
class CliCallback(Protocol):
def __call__(self, *args, reply_object: ReplyObject, **kwargs) -> None:
pass
class CFCliCommand:
def __init__(self, command: str, callback: CliCallback, help_text: str = ""):
"""
Use https://docs.python.org/3.10/library/optparse.html, for configuration cli command
"""
self.command = command
self.callback = callback
self.help_text = help_text
self.parser = OptionParser()
def register(self):
def callback_wrapper(argv: list[str], reply_id: ReplyId):
(options, args) = self.parser.parse_args(argv[1:])
self.callback(*args, reply_object=ReplyObject(reply_id), **options.__dict__)
help_text = self.help_text or self.parser.format_help()
try:
AppCliServer.cmdItemCreate(self.command, callback_wrapper, help_text, "")
except Exception:
logIt.error(f"Error = {traceback.format_exc()}")
Loading