Return-Path: Delivered-To: apmail-jakarta-ant-dev-archive@apache.org Received: (qmail 67035 invoked from network); 25 Nov 2001 08:10:37 -0000 Received: from unknown (HELO nagoya.betaversion.org) (192.18.49.131) by daedalus.apache.org with SMTP; 25 Nov 2001 08:10:37 -0000 Received: (qmail 23296 invoked by uid 97); 25 Nov 2001 08:10:43 -0000 Delivered-To: qmlist-jakarta-archive-ant-dev@jakarta.apache.org Received: (qmail 23235 invoked by uid 97); 25 Nov 2001 08:10:42 -0000 Mailing-List: contact ant-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Ant Developers List" Reply-To: "Ant Developers List" Delivered-To: mailing list ant-dev@jakarta.apache.org Received: (qmail 23224 invoked by uid 97); 25 Nov 2001 08:10:41 -0000 Date: 25 Nov 2001 07:54:28 -0000 Message-ID: <20011125075428.3882.qmail@icarus.apache.org> From: umagesh@apache.org To: jakarta-ant-cvs@apache.org Subject: cvs commit: jakarta-ant/src/main/org/apache/tools/ant/taskdefs/condition Os.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N umagesh 01/11/24 23:54:28 Modified: docs/manual credits.html docs/manual/CoreTasks condition.html src/main/org/apache/tools/ant/taskdefs/condition Os.java Log: Added name, arch, version as attributes to Os. This would let one to, say, run different things on sparc or x86 solaris... Revision Changes Path 1.7 +2 -1 jakarta-ant/docs/manual/credits.html Index: credits.html =================================================================== RCS file: /home/cvs/jakarta-ant/docs/manual/credits.html,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- credits.html 2001/10/30 10:05:33 1.6 +++ credits.html 2001/11/25 07:54:28 1.7 @@ -29,6 +29,7 @@
  • Sam Ruby (rubys@us.ibm.com)
  • Nico Seessle (nico@seessle.de)
  • Jon S. Stevens (jon@latchkey.com)
  • +
  • Magesh Umasankar (umagesh@apache.org)
  • Roger Vaughn (rvaughn@seaconinc.com)
  • Dave Walend (dwalend@cs.tufts.edu)
  • Phillip Wells (philwells@rocketmail.com)
  • @@ -36,7 +37,7 @@

    Version: @VERSION@
    -$Id: credits.html,v 1.6 2001/10/30 10:05:33 bodewig Exp $

    +$Id: credits.html,v 1.7 2001/11/25 07:54:28 umagesh Exp $


    Copyright © 2000,2001 Apache Software Foundation. All rights 1.8 +24 -1 jakarta-ant/docs/manual/CoreTasks/condition.html Index: condition.html =================================================================== RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/condition.html,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- condition.html 2001/11/16 12:30:58 1.7 +++ condition.html 2001/11/25 07:54:28 1.8 @@ -91,6 +91,21 @@ The name of the operating system family to expect. No + + name + The name of the operating system to expect. + No + + + arch + The architecture of the operating system to expect. + No + + + version + The version of the operating system to expect. + No +

    Supported values for the family attribute are:

      @@ -138,7 +153,7 @@ -

      checksum

      +

      checksum

      This condition is identical to the Checksum task, all attributes and nested @@ -171,6 +186,14 @@

      sets the property isMacOsButNotMacOsX if the current operating system is MacOS, but not MacOS X - which Ant considers to be in the Unix family as well.

      + +
        +  <condition property="isSparc">
        +    <os arch="sparc" />
        +  </condition>
        +
      +

      sets the property isSparc if the current +operating system is running on a sparc architecture.


      Copyright © 2001 Apache Software 1.7 +125 -22 jakarta-ant/src/main/org/apache/tools/ant/taskdefs/condition/Os.java Index: Os.java =================================================================== RCS file: /home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/condition/Os.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Os.java 2001/11/22 08:45:03 1.6 +++ Os.java 2001/11/25 07:54:28 1.7 @@ -62,14 +62,22 @@ * Condition that tests the OS type. * * @author Stefan Bodewig - * @version $Revision: 1.6 $ + * @author Magesh Umasankar + * @version $Revision: 1.7 $ */ public class Os implements Condition { private static final String osName = System.getProperty("os.name").toLowerCase(Locale.US); + private static final String osArch = + System.getProperty("os.arch").toLowerCase(Locale.US); + private static final String osVersion = + System.getProperty("os.version").toLowerCase(Locale.US); private static final String pathSep = System.getProperty("path.separator"); private String family; + private String name; + private String version; + private String arch; public Os() {} @@ -79,7 +87,7 @@ /** * Sets the desired OS family type - * + * * @param f The OS family type desired
      * Possible values:
      *

      • dos
      • @@ -91,13 +99,40 @@ */ public void setFamily(String f) {family = f.toLowerCase(Locale.US);} + /** + * Sets the desired OS name + * + * @param name The OS name + */ + public void setName(String name) { + this.name = name.toLowerCase(Locale.US); + } + /** - * Determines if the OS on which Ant is executing matches the type of + * Sets the desired OS architecture + * + * @param arch The OS architecture + */ + public void setArch(String arch) { + this.arch = arch.toLowerCase(Locale.US); + } + + /** + * Sets the desired OS version + * + * @param version The OS version + */ + public void setVersion(String version) { + this.version = version.toLowerCase(Locale.US); + } + + /** + * Determines if the OS on which Ant is executing matches the type of * that set in setFamily. * @see Os#setFamily(String) */ public boolean eval() throws BuildException { - return isFamily(family); + return isOs(family, name, arch, version); } /** @@ -107,25 +142,93 @@ * @since 1.5 */ public static boolean isFamily(String family) { - if (family != null) { - if (family.equals("windows")) { - return osName.indexOf("windows") > -1; - } else if (family.equals("os/2")) { - return osName.indexOf("os/2") > -1; - } else if (family.equals("netware")) { - return osName.indexOf("netware") > -1; - } else if (family.equals("dos")) { - return pathSep.equals(";") && !isFamily("netware"); - } else if (family.equals("mac")) { - return osName.indexOf("mac") > -1; - } else if (family.equals("unix")) { - return pathSep.equals(":") - && (!isFamily("mac") || osName.endsWith("x")); + return isOs(family, null, null, null); + } + + /** + * Determines if the OS on which Ant is executing matches the + * given OS name. + * + * @since 1.7 + */ + public static boolean isName(String name) { + return isOs(null, name, null, null); + } + + /** + * Determines if the OS on which Ant is executing matches the + * given OS architecture. + * + * @since 1.7 + */ + public static boolean isArch(String arch) { + return isOs(null, null, arch, null); + } + + /** + * Determines if the OS on which Ant is executing matches the + * given OS version. + * + * @since 1.7 + */ + public static boolean isVersion(String version) { + return isOs(null, null, null, version); + } + + /** + * Determines if the OS on which Ant is executing matches the + * given OS family, name, architecture and version + * + * @param family The OS family + * @param name The OS name + * @param arch The OS architecture + * @param version The OS version + * + * @since 1.7 + */ + public static boolean isOs(String family, String name, String arch, + String version) { + boolean retValue = false; + + if (family != null || name != null || arch != null + || version != null) { + + boolean isFamily = true; + boolean isName = true; + boolean isArch = true; + boolean isVersion = true; + + if (family != null) { + if (family.equals("windows")) { + isFamily = osName.indexOf("windows") > -1; + } else if (family.equals("os/2")) { + isFamily = osName.indexOf("os/2") > -1; + } else if (family.equals("netware")) { + isFamily = osName.indexOf("netware") > -1; + } else if (family.equals("dos")) { + isFamily = pathSep.equals(";") && !isFamily("netware"); + } else if (family.equals("mac")) { + isFamily = osName.indexOf("mac") > -1; + } else if (family.equals("unix")) { + isFamily = pathSep.equals(":") + && (!isFamily("mac") || osName.endsWith("x")); + } else { + throw new BuildException( + "Don\'t know how to detect os family \"" + + family + "\""); + } + } + if (name != null) { + isName = name.equals(osName); + } + if (arch != null) { + isArch = arch.equals(osArch); } - throw new BuildException("Don\'t know how to detect os family \"" - + family + "\""); + if (version != null) { + isVersion = version.equals(osVersion); + } + retValue = isFamily && isName && isArch && isVersion; } - return false; + return retValue; } - } -- To unsubscribe, e-mail: For additional commands, e-mail: