New options --subnet declares preferred subnets and --directory sets an
output directory. Also --feature inserts a keyword into *features* for
use by #+/#- reader macros in zone files.
(defvar opt-zones nil
"Which zones to be emitted.")
(defvar opt-zones nil
"Which zones to be emitted.")
+(eval-when (:compile-toplevel :load-toplevel)
+ (defopthandler dir (var arg) ()
+ (let ((path (probe-file arg)))
+ (if (and path
+ (not (pathname-name path)))
+ (setf var path)
+ (option-parse-error "path `~A' doesn't name a directory." arg)))))
+
(define-program
:version "1.0.0" :usage "ZONEDEF..."
:help "Generates BIND zone files from Lisp descriptions."
:options (options help-options
(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.")
+ (#\d "directory" (:arg "DIRECTORY")
+ (dir *zone-output-path*)
+ "Write zone and serial files to DIRECTORY.")
(#\z "zone" (:arg "NAME") (list opt-zones)
"Write information about zone NAME.")))
(#\z "zone" (:arg "NAME") (list opt-zones)
"Write information about zone NAME.")))