<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/xhtml; charset=utf-8">
</head>
<body>
<div style="font-family:sans-serif"><div style="white-space:normal">
<p dir="auto">On 4 Aug 2020, at 16:18, Ilya Perminov wrote:</p>
<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px">
<p dir="auto">The around method will look something like this</p>
</blockquote>
<pre style="background-color:#F7F7F7; border-radius:5px 5px 5px 5px; margin-left:15px; margin-right:15px; max-width:90vw; overflow-x:auto; padding:5px" bgcolor="#F7F7F7"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0" bgcolor="#F7F7F7">(defmethod input-files :around ((o asdf/bundle::gather-operation) (c system))
(unless (eq (asdf/bundle::bundle-type o) :no-output-file)
(append (call-next-method)
(remove-if-not
(asdf/bundle::pathname-type-equal-function
(asdf/bundle::bundle-pathname-type (asdf/bundle::gather-type o)))
(mappend (lambda (c) (output-files 'process-op c))
(asdf/component:sub-components c :type 'wrapper-file))))))
</code></pre>
<blockquote style="border-left:2px solid #777; color:#777; margin:0 0 5px; padding-left:5px">
<p dir="auto">To my taste it knows too much about ASDF guts, but maybe it is not too bad.</p>
</blockquote>
<p dir="auto">I'm looking at the code now, and</p>
<ul>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">bundle-type</code> is exported from <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf/bundle</code> (but not <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf</code>) (it could use a docstring if you can propose one)</p></li>
<li><p dir="auto">So is <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">bundle-pathname-type</code></p></li>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">pathname-type-equal-function</code> is not exported, but it's a trivial combination of <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">pathname-type</code> and <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">equalp</code></p></li>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-type</code> is the only "really internal" function. (A block comment would be nice here, too.)</p></li>
<li><p dir="auto"><code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">gather-operation</code> is <em>not</em> exported, but I think that's probably wrong on our part: I don't believe there should be hidden operations. If I get around to it, I will probably export it from the <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf</code> (really <code style="background-color:#F7F7F7; border-radius:3px; margin:0; padding:0 0.4em" bgcolor="#F7F7F7">asdf/interface</code>) package, unless someone has a good argument for it continuing to be internal.</p></li>
</ul>
<p dir="auto">So I don't think that is a lot of ASDF internals, especially not for customizing the ASDF protocol.</p>
</div>
</div>
</body>
</html>