I've come across the following code and can not understand what operation the double exclamation marks provide. This code-snipet is from a FAKE script used in a CICD system. Microsoft's Symbol and Operator Reference does not list this operator, nor can I find it in FAKE's API Reference.
!! (projectPackagePath + "/*.zip")
|> Seq.iter(fun path ->
trace ("Removing " + path)
ShellExec tfCommand ("delete " + path + " /noprompt")
Another example of usage
let buildLabelFiles =
!!(labelPath @@ "*.txt")
The
!!
operator takes a file pattern and returns a collection of files matching the pattern.For example, if you want to print all text files in the current folder, you can write:
If you look at the operator definition in the source code, you can see that it is just an alias for creating a
FileIncludes
value (see the type definition) that includes files given by the specified pattern. TheFileIncludes
type implementsIEnumerable
, so you can iterate over the files, but you can do a couple of other things withFileIncludes
such as combining two file sets using++
or removing some files from a file set using--
.