mirror of https://github.com/sbt/sbt.git
It makes sense for the new glob/nio based apis that we provide first class support for filtering the results. Because it isn't possible to scope a task within a task within a task, i.e. `compile / fileInputs / includePathFilter`, I had to add four new filter settings of type `PathFilter`: fileInputIncludeFilter :== AllPassFilter.toNio, fileInputExcludeFilter :== DirectoryFilter.toNio || HiddenFileFilter, fileOutputIncludeFilter :== AllPassFilter.toNio, fileOutputExcludeFilter :== NothingFilter.toNio, Before I was effectively hard-coding the filter: RegularFileFilter && !HiddenFileFilter in the inputFileStamps and allInputFiles tasks. These remain the defaults, as seen in the fileInputExcludeFilter definition above, but can be overridden by the user. It makes sense to exclude directories and hidden files for the input files, but it doesn't necessarily make sense to apply any output filters by default. For symmetry, it makes sense to have them, but they are unlikely to be used often. Apart from adding and defining the default values for these keys, the only other changes I had to make was to remove the hard-coded filters from the allInputFiles and inputFileStamps tasks and also add the filtering to the allOutputFiles task. Because we don't automatically calculate the FileAttributes for the output files, I added logic for bypassing the path filter application if the PathFilter is effectively AllPass, which is the case for the default values because: AllPassFilter.toNio == AllPass NothingFilter.toNio == NoPass AllPass && !NoPass == AllPass && AllPass == AllPass |
||
|---|---|---|
| .. | ||
| main | ||
| test | ||