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

com.prezi.pride.projectmodel.PrideProjectModelBuilder Maven / Gradle / Ivy

There is a newer version: 0.12.3
Show newest version
package com.prezi.pride.projectmodel;

import com.google.common.collect.ImmutableSet;
import org.gradle.api.Project;
import org.gradle.tooling.provider.model.ToolingModelBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class PrideProjectModelBuilder implements ToolingModelBuilder {
	private static final Logger logger = LoggerFactory.getLogger(PrideProjectModelBuilder.class);

	@Override
	public boolean canBuild(String modelName) {
		return modelName.equals(PrideProjectModel.class.getName());
	}

	@Override
	public Object buildAll(String s, Project project) {
		return convertProject(project.getRootProject());
	}

	private PrideProjectModel convertProject(Project project) {
		ImmutableSet.Builder childModels = ImmutableSet.builder();
		for (Project childProject : project.getChildProjects().values()) {
			childModels.add(convertProject(childProject));
		}
		if (project.getGroup() == null || String.valueOf(project.getGroup()).isEmpty()) {
			throw new IllegalStateException("Group is not specified for project in " + project.getProjectDir());
		}

		return new DefaultPrideProjectModel(
				project.getPath(),
				String.valueOf(project.getGroup()),
				project.getName(),
				String.valueOf(project.getVersion()),
				childModels.build(),
				project.getProjectDir().getAbsolutePath()
		);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy