- "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
+ "Parsing options"
+ (#\f "feature" (:arg "KEYWORD")
+ (list *features* 'keyword)
+ "Insert KEYWORD in *features* list.")
+ (#\s "subnet" (:arg "NET")
+ (list zone:*preferred-subnets*)
+ "Designate NET as a preferred subnet.")
+ "Output options"
+ (#\d "directory" (:arg "DIRECTORY")
+ (dir *zone-output-path*)
+ "Write zone and serial files to DIRECTORY.")
+ (#\F "format" (:arg "FORMAT")
+ (keyword opt-format
+ (delete-duplicates
+ (loop for method in
+ (generic-function-methods
+ #'zone:zone-write)
+ for specs =
+ (method-specializers method)
+ if (typep (car specs)
+ 'eql-specializer)
+ collect
+ (eql-specializer-object
+ (car specs)))))
+ "Format to use for output.")
+ (#\z "zone" (:arg "NAME") (list opt-zones)
+ "Write information about zone NAME.")))