Here is my version of Tobias's patch with included docstring goodness. Please holler if you don't like it. Otherwise, I'll commit it soon.
Index: asdf.lisp
===================================================================
RCS file: /cvsroot/cclan/asdf/asdf.lisp,v
retrieving revision 1.109
diff -u -w -u -r1.109 asdf.lisp
--- asdf.lisp 27 Jul 2007 02:58:19 -0000 1.109
+++ asdf.lisp 30 Aug 2007 13:46:22 -0000
<at> <at> -899,6 +899,20 <at> <at>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; invoking operations
+(defvar *operate-docstring*
+ "Operate does three things:
+
+1. It creates an instance of `operation-class` using any keyword parameters
+as initargs.
+2. It finds the asdf-system specified by `system` (possibly loading
+it from disk).
+3. It then calls `traverse` with the operation and system as arguments
+
+The traverse operation is wrapped in `with-compilation-unit` and error
+handling code. If a `version` argument is supplied, then operate also
+ensures that the system found satisfies it using the `version-satisfies`
+method.")
+
(defun operate (operation-class system &rest args &key (verbose t) version
&allow-other-keys)
(let* ((op (apply #'make-instance operation-class
<at> <at> -932,9 +946,17 <at> <at>
(get-universal-time))
(return)))))))))
-(defun oos (&rest args)
- "Alias of OPERATE function"
- (apply #'operate args))
+(setf (documentation 'operate 'function)
+ *operate-docstring*)
+
+(defun oos (operation-class system &rest args &key force (verbose t) version)
+ (declare (ignore force verbose version))
+ (apply #'operate operation-class system args))
+
+(setf (documentation 'oos 'function)
+ (format nil
+ "Short for _operate on system_ and an alias for the `operate` function. ~&~&~a"
+ *operate-docstring*))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; syntax--