--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/buildframework/helium/sf/java/legacy/src/com/nokia/ant/HelpDef.java Tue Apr 27 08:33:08 2010 +0300
@@ -0,0 +1,117 @@
+/*
+* Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+package com.nokia.ant;
+
+import java.util.Iterator;
+
+import org.apache.tools.ant.BuildEvent;
+import org.apache.tools.ant.Project;
+import com.nokia.helium.core.ant.types.*;
+
+import org.apache.tools.ant.BuildListener;
+import org.apache.tools.ant.BuildLogger;
+
+/**
+ *
+ */
+public class HelpDef extends HlmPostDefImpl
+{
+
+ /**
+ *
+ * @param project
+ * Object of the project
+ * @param targetNames
+ * Array of target names to execute
+ *
+ */
+ public void execute(Project project, String module, String[] targetNames)
+ {
+ String firstTarget;
+
+ // take target
+ if (targetNames != null && targetNames.length > 0)
+ {
+ firstTarget = targetNames[0];
+ }
+ else
+ // no target, so set the default one
+ {
+ firstTarget = "help";
+ }
+
+ // If 'help' target is called, just run that and set other
+ // target names as a property
+ if (firstTarget.equals("help"))
+ {
+ displayHelp(project, targetNames, firstTarget);
+ }
+
+ project.addBuildListener(new UnsubstListener());
+ }
+
+ class UnsubstListener implements BuildListener {
+ public void buildFinished(BuildEvent event) {
+ Project project = event.getProject();
+ String drivenotdef = project.getProperty("build.drive.notdefined");
+ if (System.getProperty("os.name").toLowerCase().startsWith("win") && drivenotdef != null && drivenotdef.equals("true"))
+ {
+ String drive = project.getProperty("build.drive");
+ try {
+ if (drive != null) {
+ Runtime.getRuntime().exec("subst /d " + drive);
+ }
+ } catch (java.io.IOException e) {
+ e = null; // ignoring the error
+ }
+ }
+ }
+
+ public void buildStarted(BuildEvent event) { }
+ public void targetStarted(BuildEvent event) { }
+ public void targetFinished(BuildEvent event) { }
+ public void taskStarted(BuildEvent event) { }
+ public void taskFinished(BuildEvent event) { }
+ public void messageLogged(BuildEvent event) { }
+ }
+
+ private void displayHelp(Project project, String[] targetNames, String firstTarget)
+ {
+ if (targetNames.length > 1)
+ {
+ project.setProperty("help.target", targetNames[1]);
+ }
+
+ // Set Emacs mode to true for all listeners, so that help text does
+ // not have [echo] at the start of each line
+ Iterator iter = project.getBuildListeners().iterator();
+ while (iter.hasNext())
+ {
+ BuildListener listener = (BuildListener) iter.next();
+ if (listener instanceof BuildLogger)
+ {
+ BuildLogger logger = (BuildLogger) listener;
+ logger.setEmacsMode(true);
+ }
+ }
+
+ // Run the 'help' target
+ project.executeTarget(firstTarget);
+ }
+
+}