-(defvar options nil)
-(defvar usage nil)
-(defun help (arg)
- (declare (ignore arg))
- (show-help *program-name* version usage options)
- (exit 0))
-(defun version (arg)
- (declare (ignore arg))
- (format t "~A, version ~A~%" *program-name* version)
- (exit 0))
-(defun do-usage (&optional (stream *standard-output*))
- (show-usage *program-name* usage stream))
-(defun usage (arg)
- (declare (ignore arg))
- (do-usage)
- (exit 0))
-(setf options
- (options
- "Help options"
- (#\h "help" #'help
- "Show this help message.")
- (#\v "version" #'version
- ("Show the `~A' program's version number." *program-name*))
- (#\u "usage" #'usage
- ("Show a very brief usage summary for `~A'." *program-name*))
-
- "Output options"
- (#\z "zone" (:arg "NAME") (list opt-zones)
- "Write information about zone NAME.")))
-(setf usage (simple-usage options "ZONEDEF..."))
+(define-program
+ :version "1.0.0" :usage "ZONEDEF..."
+ :help "Generates BIND zone files from Lisp descriptions."
+ :options (options help-options
+ "Output options"
+ (#\z "zone" (:arg "NAME") (list opt-zones)
+ "Write information about zone NAME.")))