;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 2 of the License, or
;;; (at your option) any later version.
-;;;
+;;;
;;; This program is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
-;;;
+;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program; if not, write to the Free Software Foundation,
;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
(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
+ "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.")
(#\z "zone" (:arg "NAME") (list opt-zones)
"Write information about zone NAME.")))