/**
* 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;
import com.liferay.gradle.plugins.internal.util.FileUtil;
import com.liferay.gradle.plugins.internal.util.GradleUtil;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.UncheckedIOException;
/**
* @author Andrea Di Giorgi
*/
public class LiferayPlugin implements Plugin<Project> {
public static final String PLUGIN_NAME = "liferay";
@Override
public void apply(Project project) {
Class<? extends Plugin<Project>> clazz;
if (_isAnt(project)) {
clazz = getAntPluginClass();
}
else if (_isOSGi(project)) {
clazz = getOSGiPluginClass();
}
else if (_isTheme(project)) {
clazz = getThemePluginClass();
}
else {
clazz = getBasePluginClass();
}
GradleUtil.applyPlugin(project, clazz);
}
protected Class<? extends Plugin<Project>> getAntPluginClass() {
return LiferayAntPlugin.class;
}
protected Class<? extends Plugin<Project>> getBasePluginClass() {
return LiferayBasePlugin.class;
}
protected Class<? extends Plugin<Project>> getOSGiPluginClass() {
return LiferayOSGiPlugin.class;
}
protected Class<? extends Plugin<Project>> getThemePluginClass() {
return LiferayThemePlugin.class;
}
private boolean _isAnt(Project project) {
if (FileUtil.exists(project, "build.xml")) {
return true;
}
return false;
}
private boolean _isOSGi(Project project) {
if (FileUtil.exists(project, "bnd.bnd")) {
return true;
}
return false;
}
private boolean _isTheme(Project project) {
File gulpFile = project.file("gulpfile.js");
if (!gulpFile.exists()) {
return false;
}
String gulpFileContent;
try {
gulpFileContent = new String(
Files.readAllBytes(gulpFile.toPath()), StandardCharsets.UTF_8);
}
catch (IOException ioe) {
throw new UncheckedIOException(ioe);
}
if (gulpFileContent.contains("require('liferay-theme-tasks')")) {
return true;
}
return false;
}
}