All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.liferay.gradle.plugins.tasks.BaselineTask Maven / Gradle / Ivy

There is a newer version: 3.9.12
Show 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.tasks;

import aQute.service.reporter.Reporter;

import com.liferay.ant.bnd.Baseline;
import com.liferay.gradle.plugins.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.logging.Logger;
import org.gradle.api.logging.Logging;
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 {
		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.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);
			}
		}
	}

	@Override
	public boolean getIgnoreFailures() {
		return _ignoreFailures;
	}

	@Input
	@Optional
	public File getLogFile() {
		if (Validator.isNull(_logFileName)) {
			return null;
		}

		ReportingExtension reportingExtension = GradleUtil.getExtension(
			getProject(), ReportingExtension.class);

		return reportingExtension.file(_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 isReportDiff() {
		return _reportDiff;
	}

	@Input
	public boolean isReportOnlyDirtyPackages() {
		return _reportOnlyDirtyPackages;
	}

	@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 static final Logger _logger = Logging.getLogger(BaselineTask.class);

	private boolean _ignoreFailures;
	private String _logFileName;
	private Object _newJarFile;
	private Object _oldJarFile;
	private boolean _reportDiff;
	private boolean _reportOnlyDirtyPackages;
	private Object _sourceDir;

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy