/**
* 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.baseline;
import aQute.service.reporter.Reporter;
import com.liferay.ant.bnd.Baseline;
import com.liferay.gradle.util.GradleUtil;
import com.liferay.gradle.util.Validator;
import java.io.File;
import org.gradle.api.DefaultTask;
import org.gradle.api.GradleException;
import org.gradle.api.Project;
import org.gradle.api.logging.Logger;
import org.gradle.api.plugins.ExtensionContainer;
import org.gradle.api.reporting.ReportingExtension;
import org.gradle.api.tasks.Input;
import org.gradle.api.tasks.InputFile;
import org.gradle.api.tasks.Optional;
import org.gradle.api.tasks.TaskAction;
import org.gradle.api.tasks.VerificationTask;
/**
* @author Andrea Di Giorgi
*/
public class BaselineTask extends DefaultTask implements VerificationTask {
public BaselineTask() {
_logFileName = "baseline/" + getName() + ".log";
}
@TaskAction
public void baseline() throws Exception {
final Logger logger = getLogger();
Baseline baseline = new Baseline() {
@Override
protected void log(Reporter reporter) {
if (logger.isErrorEnabled()) {
for (String message : reporter.getErrors()) {
logger.error(message);
}
}
if (logger.isWarnEnabled()) {
for (String message : reporter.getWarnings()) {
logger.warn(message);
}
}
}
@Override
protected void log(String output) {
if (logger.isLifecycleEnabled()) {
logger.lifecycle(output);
}
}
};
baseline.setBndFile(getBndFile());
baseline.setForceCalculatedVersion(isForceCalculatedVersion());
baseline.setForcePackageInfo(true);
baseline.setLogFile(getLogFile());
baseline.setNewJarFile(getNewJarFile());
baseline.setOldJarFile(getOldJarFile());
baseline.setReportDiff(isReportDiff());
baseline.setReportOnlyDirtyPackages(isReportOnlyDirtyPackages());
baseline.setSourceDir(getSourceDir());
boolean match = baseline.execute();
if (!match) {
String message = "Semantic versioning is incorrect";
if (getIgnoreFailures()) {
if (logger.isWarnEnabled()) {
logger.warn(message);
}
}
else {
throw new GradleException(message);
}
}
}
@Input
@Optional
public File getBndFile() {
return GradleUtil.toFile(getProject(), _bndFile);
}
@Override
public boolean getIgnoreFailures() {
return _ignoreFailures;
}
@Input
@Optional
public File getLogFile() {
if (Validator.isNull(_logFileName)) {
return null;
}
Project project = getProject();
ExtensionContainer extensionContainer = project.getExtensions();
ReportingExtension reportingExtension = extensionContainer.findByType(
ReportingExtension.class);
if (reportingExtension != null) {
return reportingExtension.file(_logFileName);
}
return GradleUtil.toFile(project, _logFileName);
}
@InputFile
public File getNewJarFile() {
return GradleUtil.toFile(getProject(), _newJarFile);
}
@InputFile
public File getOldJarFile() {
return GradleUtil.toFile(getProject(), _oldJarFile);
}
@Input
@Optional
public File getSourceDir() {
return GradleUtil.toFile(getProject(), _sourceDir);
}
@Input
public boolean isForceCalculatedVersion() {
return _forceCalculatedVersion;
}
@Input
public boolean isReportDiff() {
return _reportDiff;
}
@Input
public boolean isReportOnlyDirtyPackages() {
return _reportOnlyDirtyPackages;
}
public void setBndFile(Object bndFile) {
_bndFile = bndFile;
}
public void setForceCalculatedVersion(boolean forceCalculatedVersion) {
_forceCalculatedVersion = forceCalculatedVersion;
}
@Override
public void setIgnoreFailures(boolean ignoreFailures) {
_ignoreFailures = ignoreFailures;
}
public void setLogFileName(String logFileName) {
_logFileName = logFileName;
}
public void setNewJarFile(Object newJarFile) {
_newJarFile = newJarFile;
}
public void setOldJarFile(Object oldJarFile) {
_oldJarFile = oldJarFile;
}
public void setReportDiff(boolean reportDiff) {
_reportDiff = reportDiff;
}
public void setReportOnlyDirtyPackages(boolean reportOnlyDirtyPackages) {
_reportOnlyDirtyPackages = reportOnlyDirtyPackages;
}
public void setSourceDir(Object sourceDir) {
_sourceDir = sourceDir;
}
private Object _bndFile;
private boolean _forceCalculatedVersion;
private boolean _ignoreFailures;
private String _logFileName;
private Object _newJarFile;
private Object _oldJarFile;
private boolean _reportDiff;
private boolean _reportOnlyDirtyPackages;
private Object _sourceDir;
}