企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 5.8 Conditions Conditions are nested elements of the [condition](apbs10.html "B.10 ConditionTask"), [if](apbs22.html "B.22 IfTask") and [waitfor](apbs51.html "B.51 WaitForTask") tasks. 5.8.1 `not` The `<not>` element expects exactly one other condition to be nested into this element, negating the result of the condition. It doesn't have any attributes and accepts all nested elements of the condition task as nested elements as well. 5.8.2 `and` The `<and>` element doesn't have any attributes and accepts an arbitrary number of conditions as nested elements. This condition is true if all of its contained conditions are, conditions will be evaluated in the order they have been specified in the build file. The `<and>` condition has the same shortcut semantics as the `&&` operator in some programming languages, as soon as one of the nested conditions is false, no other condition will be evaluated. 5.8.3 `or` The `<or>` element doesn't have any attributes and accepts an arbitrary number of conditions as nested elements. This condition is true if at least one of its contained conditions is, conditions will be evaluated in the order they have been specified in the build file. The `<or>` condition has the same shortcut semantics as the `||` operator in some programming languages, as soon as one of the nested conditions is true, no other condition will be evaluated. 5.8.4 `xor` The `<xor>` element performs an exclusive or on all nested elements, similar to the ^ operator in PHP. It only evaluates to true if an odd number of nested conditions are true. There is no shortcutting of evaluation, unlike the <and> and <or> tests. It doesn't have any attributes and accepts all nested elements of the condition task as nested elements as well. 5.8.5 `os` Test whether the current operating system is of a given type. Table 5.1:聽OS Attributes AttributeDescriptionRequired`family`The name of the operating system family to expect.Yes Supported values for the family attribute are: - windows (for all versions of Microsoft Windows) - mac (for all Apple Macintosh systems) - unix (for all Unix and Unix-like operating systems) Note: machines running OSX match on the `mac` and `unix` families! To test for Macs that don't run a Unix-like OS, use the following code: ``` <condition property="isMacOsButNotMacOsX"> <and> <os family="mac"/> <not> <os family="unix"/> </not> </and> </condition> ``` 5.8.6 `equals` Tests whether the two given Strings are identical Table 5.2:聽equals Attributes AttributeDescriptionRequired`arg1`First string to test.Yes`arg2`Second string to test.Yes`casesensitive`Perform a case sensitive comparison. Default is true.No`trim`Trim whitespace from arguments before comparing them. Default is false.No 5.8.7 `versioncompare` Compares two given versions Table 5.3:聽versioncompare Attributes AttributeDescriptionRequired`version`The version you want to compareYes`desiredVersion`The version you want to compare againstYes`operator`The operator to use for version comparison. Default is `>=`.NodebugTurns on debug mode, that echoes the comparion message. Default is false.No `<versioncompare version="${aProperty}" desiredVersion="1.3" operator="gt" />`This condition internally uses PHP version\_compare(). Operators and behavior are the same. 5.8.8 `http` Condition to wait for a HTTP request to succeed. Attributes are: - url - the URL of the request. - errorsBeginAt - number at which errors begin at. - quiet - Set quiet mode, which suppresses warnings and errors. Table 5.4:聽http Attributes AttributeDescriptionRequired`url`The URL of the request.Yes`errorsBeginAt`Number at which errors begin at. - Default: 400No`requestMethod`Sets the method to be used when issuing the HTTP request. - Default: GETNo`followRedirects`Whether redirects sent by the server should be followed. - Default: trueNo`quiet`Set quiet mode, which suppresses warnings and errors. Default is falseNo `<http url="http://url.to.test" errorsBeginAt="404" />` 5.8.9 `socket` Condition to test for a (tcp) listener on a specified host and port. Table 5.5:聽socket Attributes AttributeDescriptionRequired`server`The hostname or ip address of the server.Yes`port`The port number of the server.Yes `<socket server="localhost" port="80" />` 5.8.10 `hasfreespace` Condition returns true if selected partition has the requested space, false otherwise. Needed attribute can be specified using standard computing terms: - K: Kilobytes (1024 bytes) - M: Megabytes (1024K) - G: Gigabytes (1024M) - T: Terabytes (1024G) - P: Petabytes (1024T) Table 5.6:聽hasfreespace Attributes AttributeDescriptionRequired`partition`Absolute path to the partition/device to check.Yes`needed`The amount of free space required. Examples: `250M`, `10G`, `1T`.Yes On Unix like platforms: `<hasfreespace partition="/" needed="250M" />`On Windows: `<hasfreespace partition="c:" needed="10M" />`This condition internally uses PHP disk\_free\_space(). 5.8.11 `isset` Test whether a given property has been set in this project. Table 5.7:聽isset Attributes AttributeDescriptionRequired`property`The name of the property to test.Yes 5.8.12 `contains` Tests whether a string contains another one. Table 5.8:聽contains Attributes AttributeDescriptionRequired`string`The string to search in.Yes`substring`The string to search for.Yes`casesensitive`Perform a case sensitive comparison. Default is true.No 5.8.13 `istrue` Tests whether a string evaluates to true. Table 5.9:聽istrue Attributes AttributeDescriptionRequired`value`value to testYes ``` <istrue value="${someproperty}"/> <istrue value="false"/> ``` 5.8.14 `isfalse` Tests whether a string evaluates to not true, the negation of `<istrue>` Table 5.10:聽isfalse Attributes AttributeDescriptionRequired`value`value to testYes ``` <isfalse value="${someproperty}"/> <isfalse value="false"/> ``` 5.8.15 `ispropertytrue` Tests whether a property evaluates to true. Table 5.11:聽ispropertytrue Attributes AttributeDescriptionRequired`property`property to testYes `<ispropertytrue property="someproperty"/>` 5.8.16 `ispropertyfalse` Tests whether a property evaluates to not true, the negation of `<ispropertytrue>` Table 5.12:聽ispropertyfalse Attributes AttributeDescriptionRequired`property`property name to testYes `<ispropertyfalse property="someproperty"/>` 5.8.17 `referenceexists` Tests whether a specified reference exists. Table 5.13:聽referenceexists Attributes AttributeDescriptionRequired`ref`reference to test forYes `<referenceexists ref="${someid}"/>` 5.8.18 `available` This condition is identical to the [Available](apbs06.html "B.6 AvailableTask") task, all attributes and nested elements of that task are supported, the property and value attributes are redundant and will be ignored. ``` <if> <available file="README.md"/> <then> <echo message="Please read README.md"/> </then> </if> ``` 5.8.19 `filesmatch` Test two files for matching. Nonexistence of one file results in "false", although if neither exists they are considered equal in terms of content. This test does a byte for byte comparison, so test time scales with byte size. NB: if the files are different sizes, one of them is missing or the filenames match the answer is so obvious the detailed test is omitted. Table 5.14:聽filesmatch Attributes AttributeDescriptionRequired`file1`First file to test.Yes`file2`Second file to test.Yes `<filesmatch file1="${file1}" file2="${file2}"/>` 5.8.20 `isfileselected` Test whether a file passes an embedded selector. Table 5.15:聽isfileselected Attributes AttributeDescriptionRequired`file`The file to check if is passes the embedded selector.Yes`basedir`The base directory to use for name based selectors. It this is not set, the project's basedirectory will be used.No ``` <isfileselected file="a.xml"> <date datetime="06/28/2000 2:02 pm" when="equal"/> </isfileselected> ``` 5.8.21 `isfailure` Test the return code of an executable for failure. Table 5.16:聽isfailure Attributes AttributeDescriptionRequired`code`The return code to test.Yes ``` <exec command="test" returnProperty="return.code"/> <if> <isfailure code="${return.code}"/> <then><echo msg="${return.code}"/></then> </if> ``` 5.8.22 `matches` Test if the specified string matches the specified regular expression pattern. Table 5.17:聽matches Attributes AttributeDescriptionRequired`string`The string to test.Yes`pattern`The regular expression pattern used to test.Yes`casesensitive`Perform a case sensitive match. Default is true.No`multiline`Perform a multi line match. Default is false.No`modifiers`The regular expression modifiers used to test.No