parse-argv.lisp 713 B

123456789101112131415161718
  1. (defun parse-argv (args)
  2. (flet ((parse-int-value (option value)
  3. (handler-case (parse-integer value)
  4. (error (e)
  5. (error "Invalid value for ~S: ~S~% ~A" option value e)))))
  6. (loop for option = (pop args)
  7. for value = (pop args)
  8. while option
  9. if (not (starts-with option "--"))
  10. do (error "Invalid option: ~S" option)
  11. else
  12. if (equal option "--worker")
  13. append (list :worker-num (parse-int-value option value))
  14. else
  15. if (equal option "--port")
  16. append (list :port (parse-int-value option value))
  17. else
  18. do (error "Unknown option: ~S" option))))