From 1f234bd9525be263ea89037096abf39d136da77a Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Mon, 1 Feb 2021 23:47:30 +0100 Subject: main: Start command line option parsing Include the 'unix-opts' library described in http://lispcookbook.github.io/cl-cookbook/scripting.html#parsing-command-line-arguments for command line option parsing. Define the options I need. We want a `--socket-url` option, and a list of extension IDs as free arguments. Implement the `-V` version command line argument. Thanks to JJJ (https://stackoverflow.com/users/1337941/jjj) on Stack Overflow for describing how to get the version number of an ASDF system: https://stackoverflow.com/questions/11084339/getting-the-version-of-an-asdf-system/11088022#11088022 Add a new `options.lisp` file where we'll add the option parsing restart error handling functions required by 'unix-opts'. --- l/src/main.lisp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'l/src/main.lisp') diff --git a/l/src/main.lisp b/l/src/main.lisp index 47e8eb1..5ea0384 100644 --- a/l/src/main.lisp +++ b/l/src/main.lisp @@ -4,13 +4,36 @@ (defvar *wg* (wait-group:make-wait-group)) +(opts:define-opts + (:name :socket-url + :description "DevTools protocol WebSocket URL" + :long "socket-url" + :meta-var "SOCKET_URL") + (:name :help + :description "print this help menu" + :short #\h + :long "help") + (:name :version + :description "show the program version" + :short #\V + :long "version")) + (defun main () - (with-websocket-connection (*client*) - (wsd:on :message *client* #'ws-on-message) + (multiple-value-bind (options free-args) (opts:get-opts) + ; (when-option (options :help)) + (when-option (options :version) + (format t "~a~%" (asdf:component-version (asdf:find-system :extreload))) + + (opts:exit 0)) + + (let* ((socket-url (getf options :socket-url)) + (client (wsd:make-client socket-url))) + (with-websocket-connection (*client*) + (wsd:on :message *client* #'ws-on-message) - (websocket-send *client* (target-get-targets-msg 1)) + (websocket-send *client* (target-get-targets-msg 1)) - (wait-group:wait *wg*))) + (wait-group:wait *wg*))))) (defun target-get-targets-msg (call-id) (jsown:to-json -- cgit v1.2.3