Nothing like dredging up dirt from the past, but has there been any
progress on this?  I notice 2.22 still has the revised behavior that
doesn't handle the filename match during recursion.  I'm in a sticky
situation now because of other software on that machine now having a
minimum requirement of TT 2.22 for other reasons, which of course breaks
these scripts again when I upgrade (I can apply the patch, but then I
have to patch it again every time we get an upgrade).

Andy Wardley wrote on 9/24/08 2:01 AM:
> Dave Miller wrote:
>> We picked up the upgrade to perl-Template-Toolkit 2.20 off rpmforge last
>> night, and our website build scripts that use it failed to recurse
>> subdirectories when building the website.
> 
> Hi Dave,
> 
>  From the Changes:
> 
> ttree
> -----
> 
> * Changed the --accept option in ttree to match against the full file
>    path (relative to --src dir) rather than just the file name.  This
>    makes it behave the same way as the --ignore option.
> 
> Here's the specific change:
> 
> http://template-toolkit.org/svnweb/Template2/diff/trunk/bin/ttree?rev1=1074;rev2=1075
> 
> The accept list used to be checked against the file name only and all
> directories were accepted unconditionally if the recurse option was set.
> The downside was that it wasn't possible to only accept a single directory.
> 
> The change fixed that so you can write:
> 
>     $ ttree --accept just/this/directory
> 
> The drawback is that your accept option no longer works:
> 
>> accept = \.html$
> 
> Sorry about that.  :-(
> 
> One work-around would be to not use the accept option and rely on your
> ignore list to avoid unwelcome files.  Another would be to list each
> directory as an accept option.
> 
>    accept = download
>    accept = contribute
>    ...etc...
> 
> Both are sub-optimal, so it's clear that ttree needs to be fixed better.
> 
> Possible options are:
> 
>    - to explicitly add a '/' (or platform specific separator) to the end of
>      directory paths that tree checks against so that you can "accept = /$"
>      to accept all directories (currently there's no way to tell from the
>      path if it's a directory or file).
> 
>    - to add --accept_dirs and --accept_files options to allow you to provide
>      different accept lists for dirs and files.  Then you could write
>      "accept_dirs = .*" and "accept_files = \.html$".  And/or an all_dirs
> 
>    - to enter directories unconditionally if the recurse option is set and
>      figure out some other way of specifying that you only want to visit
>      certain directories.
> 
> That last one is the easiest to implement (although it's little more than
> regressing the previous "fix").  If you're keen to upgrade to 2.20 and just
> want to fix ttree then you can change line 258 as follows:
> 
> - unless (grep { $path =~ /$_/ } @$accept) {
> + unless ((-d $abspath && $recurse) || grep { $path =~ /$_/ } @$accept) {
> 
> That'll should get things working for you until I can come up with a proper
> solution.


_______________________________________________
templates mailing list
templates@template-toolkit.org
http://mail.template-toolkit.org/mailman/listinfo/templates

Reply via email to