
com.liferay.gradle.plugins.js.transpiler.TranspileJSTask Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.gradle.plugins.js.transpiler Show documentation
Show all versions of com.liferay.gradle.plugins.js.transpiler Show documentation
Liferay Gradle Plugins JS Transpiler
The newest version!
/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.gradle.plugins.js.transpiler;
import com.liferay.gradle.plugins.node.tasks.ExecuteNodeScriptTask;
import com.liferay.gradle.util.FileUtil;
import com.liferay.gradle.util.GradleUtil;
import java.io.File;
import java.util.Arrays;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.file.ConfigurableFileTree;
import org.gradle.api.file.CopySpec;
import org.gradle.api.file.FileCollection;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFiles;
import org.gradle.api.tasks.OutputDirectory;
import org.gradle.api.tasks.SkipWhenEmpty;
import org.gradle.util.GUtil;
/**
* @author Andrea Di Giorgi
*/
public class TranspileJSTask extends ExecuteNodeScriptTask {
public TranspileJSTask() {
soySrcInclude("**/*.soy");
srcInclude("**/*.es.js", "**/*.soy.js");
}
@Override
public void executeNode() throws Exception {
final File sourceDir = getSourceDir();
final File workingDir = getWorkingDir();
if (!sourceDir.equals(workingDir)) {
Project project = getProject();
project.copy(
new Action() {
@Override
public void execute(CopySpec copySpec) {
copySpec.from(sourceDir);
copySpec.include(getSoySrcIncludes());
copySpec.include(getSrcIncludes());
copySpec.into(workingDir);
}
});
}
super.executeNode();
}
@Input
public String getBundleFileName() {
return GradleUtil.toString(_bundleFileName);
}
@Input
public String getGlobalName() {
return GradleUtil.toString(_globalName);
}
@Input
public String getModuleName() {
return GradleUtil.toString(_moduleName);
}
@Input
public String getModules() {
return GradleUtil.toString(_modules);
}
public File getSourceDir() {
return GradleUtil.toFile(getProject(), _sourceDir);
}
@InputFiles
@SkipWhenEmpty
public FileCollection getSourceFiles() {
Project project = getProject();
File sourceDir = getSourceDir();
if (sourceDir == null) {
return project.files();
}
ConfigurableFileTree configurableFileTree = project.fileTree(sourceDir);
configurableFileTree.include(getSoySrcIncludes());
configurableFileTree.include(getSrcIncludes());
return configurableFileTree;
}
@Input
public SourceMaps getSourceMaps() {
return _sourceMaps;
}
@Input
public List getSoyDependencies() {
return GradleUtil.toStringList(_soyDependencies);
}
public List getSoySrcIncludes() {
return GradleUtil.toStringList(_soySrcIncludes);
}
public List getSrcIncludes() {
return GradleUtil.toStringList(_srcIncludes);
}
@OutputDirectory
@Override
public File getWorkingDir() {
return super.getWorkingDir();
}
@Input
public boolean isSoySkipMetalGeneration() {
return _soySkipMetalGeneration;
}
public void setBundleFileName(Object bundleFileName) {
_bundleFileName = bundleFileName;
}
public void setGlobalName(Object globalName) {
_globalName = globalName;
}
public void setModuleName(Object moduleName) {
_moduleName = moduleName;
}
public void setModules(Object modules) {
_modules = modules;
}
public void setSourceDir(Object sourceDir) {
_sourceDir = sourceDir;
}
public void setSourceMaps(SourceMaps sourceMaps) {
_sourceMaps = sourceMaps;
}
public void setSoyDependencies(Iterable> soyDependencies) {
_soyDependencies.clear();
soyDependency(soyDependencies);
}
public void setSoyDependencies(Object... soyDependencies) {
setSoyDependencies(Arrays.asList(soyDependencies));
}
public void setSoySkipMetalGeneration(boolean soySkipMetalGeneration) {
_soySkipMetalGeneration = soySkipMetalGeneration;
}
public void setSoySrcIncludes(Iterable> soySrcIncludes) {
_soySrcIncludes.clear();
soySrcInclude(soySrcIncludes);
}
public void setSoySrcIncludes(Object... soySrcIncludes) {
setSoySrcIncludes(Arrays.asList(soySrcIncludes));
}
public void setSrcIncludes(Iterable> srcIncludes) {
_srcIncludes.clear();
srcInclude(srcIncludes);
}
public void setSrcIncludes(Object... srcIncludes) {
setSrcIncludes(Arrays.asList(srcIncludes));
}
public TranspileJSTask soyDependency(Iterable> soyDependencies) {
GUtil.addToCollection(_soyDependencies, soyDependencies);
return this;
}
public TranspileJSTask soyDependency(Object... soyDependencies) {
return soyDependency(Arrays.asList(soyDependencies));
}
public TranspileJSTask soySrcInclude(Iterable> soySrcIncludes) {
GUtil.addToCollection(_soySrcIncludes, soySrcIncludes);
return this;
}
public TranspileJSTask soySrcInclude(Object... soySrcIncludes) {
return soySrcInclude(Arrays.asList(soySrcIncludes));
}
public TranspileJSTask srcInclude(Iterable> srcIncludes) {
GUtil.addToCollection(_srcIncludes, srcIncludes);
return this;
}
public TranspileJSTask srcInclude(Object... srcIncludes) {
return srcInclude(Arrays.asList(srcIncludes));
}
public static enum SourceMaps {
DISABLED, ENABLED, ENABLED_INLINE
}
@Override
protected List getCompleteArgs() {
List completeArgs = super.getCompleteArgs();
String destination = FileUtil.getAbsolutePath(getWorkingDir());
completeArgs.add("build");
completeArgs.add("--bundleFileName");
completeArgs.add(getBundleFileName());
completeArgs.add("--dest");
completeArgs.add(destination);
completeArgs.add("--format");
completeArgs.add(getModules());
completeArgs.add("--globalName");
completeArgs.add(getGlobalName());
completeArgs.add("--moduleName");
completeArgs.add(getModuleName());
SourceMaps sourceMaps = getSourceMaps();
if (sourceMaps != SourceMaps.ENABLED) {
completeArgs.add("--source-maps");
if (sourceMaps == SourceMaps.ENABLED_INLINE) {
completeArgs.add("inline");
}
else {
completeArgs.add("false");
}
}
List soyDependencies = getSoyDependencies();
if (!soyDependencies.isEmpty()) {
completeArgs.add("--soyDeps");
completeArgs.addAll(soyDependencies);
}
completeArgs.add("--soyDest");
completeArgs.add(destination);
completeArgs.add("--soySrc");
completeArgs.addAll(getSoySrcIncludes());
if (isSoySkipMetalGeneration()) {
completeArgs.add("--soySkipMetalGeneration");
}
completeArgs.add("--src");
completeArgs.addAll(getSrcIncludes());
return completeArgs;
}
private Object _bundleFileName = "";
private Object _globalName = "";
private Object _moduleName = "";
private Object _modules = "amd";
private Object _sourceDir;
private SourceMaps _sourceMaps = SourceMaps.ENABLED;
private final Set
© 2015 - 2025 Weber Informatics LLC | Privacy Policy