| /******************************************************************************* |
| * Copyright (c) 2000, 2013 IBM Corporation and others. |
| * |
| * This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * IBM - Initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.pde.internal.build.tasks; |
| |
| import java.io.File; |
| import org.apache.tools.ant.BuildException; |
| import org.apache.tools.ant.Task; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.pde.internal.build.*; |
| import org.eclipse.pde.internal.build.site.BuildTimeSiteFactory; |
| |
| /** |
| * Generate fetch scripts for the given elements. This is the implementation of the "eclipse.fetch" Ant task. |
| */ |
| public class FetchTask extends Task { |
| |
| /** |
| * The application associated with this Ant task. |
| */ |
| protected FetchScriptGenerator generator; |
| |
| /** |
| * Default constructor this class. |
| */ |
| public FetchTask() { |
| generator = new FetchScriptGenerator(); |
| } |
| |
| /** |
| * Set the boolean value indicating whether or not the fetch scripts should be |
| * generated for the children of the elements. The default is set to <code>true</code> |
| * |
| * @param children <code>true</code> if the children scripts should be generated |
| * and <code>false</code> otherwise |
| * @since 3.0 |
| */ |
| public void setChildren(boolean children) { |
| generator.setFetchChildren(children); |
| } |
| |
| /** |
| * Set the location for the CVS password file. |
| * @param cvsPassFileLocation the location of the password file |
| */ |
| public void setCvsPassFile(String cvsPassFileLocation) { |
| generator.setCvsPassFileLocation(cvsPassFileLocation); |
| } |
| |
| /** |
| * The path to a directory file. |
| * @param directoryLocation the location of a directory file |
| */ |
| public void setDirectory(String directoryLocation) { |
| generator.setDirectoryLocation(directoryLocation); |
| } |
| |
| /** |
| * @param element |
| */ |
| public void setElements(String element) { |
| generator.setElement(element); |
| } |
| |
| /** |
| * Overrides the tags provided in directory file by the given value. |
| * @param value the tag to be fetched. |
| * @since 3.0 |
| */ |
| public void setFetchTag(String value) { |
| generator.setFetchTagAsString(value); |
| } |
| |
| /** |
| * Set the folder in which the scripts will be generated, and in which the plugins and features will be fetched. |
| * @param buildDirectory the location where the scripts will be generated and the files fetched. |
| * @since 3.0 |
| */ |
| public void setBuildDirectory(String buildDirectory) { |
| generator.setWorkingDirectory(buildDirectory); |
| } |
| |
| /** |
| * Set the folder in which the scripts will be generated, and in which the plugins and features will be fetched. |
| * @param installLocation the location where the scripts will be generated and the files fetched. |
| * @deprecated see {@link #setBuildDirectory(String)} |
| */ |
| @Deprecated |
| public void setInstall(String installLocation) { |
| generator.setWorkingDirectory(installLocation); |
| } |
| |
| @Override |
| public void execute() throws BuildException { |
| try { |
| BundleHelper.getDefault().setLog(this); |
| |
| String fetchCache = getProject().getProperty(IBuildPropertiesConstants.PROPERTY_FETCH_CACHE); |
| if (fetchCache != null && !fetchCache.startsWith("${")) //$NON-NLS-1$ |
| generator.setFetchCache(fetchCache); |
| generator.setScriptRunner(new AntScriptRunner(this)); |
| generator.generate(); |
| BundleHelper.getDefault().setLog(null); |
| } catch (CoreException e) { |
| throw new BuildException(TaskHelper.statusToString(e.getStatus(), null).toString()); |
| } |
| } |
| |
| /** |
| * Set the boolean value indicating whether or not the fetch scripts should be |
| * generated for nested features. The default is set to true. |
| * @param recursiveGeneration <code>true</code> if the scripts for the nested features should be generated |
| * and <code>false</code> otherwise. |
| * @since 3.0 |
| */ |
| public void setRecursiveGeneration(boolean recursiveGeneration) { |
| generator.setRecursiveGeneration(recursiveGeneration); |
| } |
| |
| /** |
| * Set the plug-in path to be the given value. |
| * |
| * @param pluginPath a File.pathSeparator separated list of paths |
| */ |
| public void setPluginPath(String pluginPath) { |
| generator.setPluginPath(Utils.getArrayFromString(pluginPath, File.pathSeparator)); |
| } |
| |
| /** |
| * Set the configuration for which the script should be generated. The default is set to be configuration independent. |
| * @param configInfo an ampersand separated list of configuration (for example win32, win32, x86 & macoxs, carbon, ppc). |
| * @throws CoreException |
| * @since 3.0 |
| */ |
| public void setConfigInfo(String configInfo) throws CoreException { |
| AbstractScriptGenerator.setConfigInfo(configInfo); |
| } |
| |
| /** |
| * Set a location that contains plugins and features required by plugins and features for which build scripts are being generated. |
| * @param baseLocation a path to a folder |
| * @since 3.1 |
| */ |
| public void setBaseLocation(String baseLocation) { |
| BuildTimeSiteFactory.setInstalledBaseSite(baseLocation); |
| } |
| } |