
org.xtext.gradle.idea.IdeaPluginPlugin Maven / Gradle / Ivy
package org.xtext.gradle.idea;
import com.google.common.base.Objects;
import java.io.File;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.gradle.api.Action;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.Task;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.file.CopySpec;
import org.gradle.api.file.FileCollection;
import org.gradle.api.plugins.BasePlugin;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.ObjectConfigurationAction;
import org.gradle.api.specs.Spec;
import org.gradle.api.tasks.TaskContainer;
import org.gradle.api.tasks.bundling.Zip;
import org.xtext.gradle.idea.IdeaDevelopmentPlugin;
import org.xtext.gradle.idea.tasks.AssembleSandbox;
@SuppressWarnings("all")
public class IdeaPluginPlugin implements Plugin {
public final static String IDEA_ZIP_TASK_NAME = "ideaZip";
private final static Pattern ARTIFACT_ID = Pattern.compile("(.*?)(-.*)?\\.jar");
@Override
public void apply(final Project project) {
final Action _function = new Action() {
@Override
public void execute(final ObjectConfigurationAction it) {
it.plugin(IdeaDevelopmentPlugin.class);
it.plugin(JavaPlugin.class);
}
};
project.apply(_function);
ConfigurationContainer _configurations = project.getConfigurations();
final Configuration providedDependencies = _configurations.getAt(IdeaDevelopmentPlugin.IDEA_PROVIDED_CONFIGURATION_NAME);
ConfigurationContainer _configurations_1 = project.getConfigurations();
final Configuration runtimeDependencies = _configurations_1.getAt(JavaPlugin.RUNTIME_CONFIGURATION_NAME);
TaskContainer _tasks = project.getTasks();
Task _at = _tasks.getAt(IdeaDevelopmentPlugin.ASSEMBLE_SANDBOX_TASK_NAME);
final AssembleSandbox assembleSandbox = ((AssembleSandbox) _at);
TaskContainer _tasks_1 = project.getTasks();
final Task jar = _tasks_1.getAt(JavaPlugin.JAR_TASK_NAME);
final Procedure1 _function_1 = new Procedure1() {
@Override
public void apply(final AssembleSandbox it) {
CopySpec _libraries = it.getLibraries();
_libraries.from(jar);
CopySpec _libraries_1 = it.getLibraries();
final Spec _function = new Spec() {
@Override
public boolean isSatisfiedBy(final File candidate) {
final Function1 _function = new Function1() {
@Override
public Boolean apply(final File it) {
return Boolean.valueOf(IdeaPluginPlugin.this.hasSameArtifactIdAs(it, candidate));
}
};
boolean _exists = IterableExtensions.exists(providedDependencies, _function);
return (!_exists);
}
};
FileCollection _filter = runtimeDependencies.filter(_function);
_libraries_1.from(_filter);
CopySpec _metaInf = it.getMetaInf();
_metaInf.from("META-INF");
}
};
ObjectExtensions.operator_doubleArrow(assembleSandbox, _function_1);
TaskContainer _tasks_2 = project.getTasks();
final Action _function_2 = new Action() {
@Override
public void execute(final Zip it) {
it.setDescription("Creates an installable archive of this plugin");
it.setGroup(BasePlugin.BUILD_GROUP);
CopySpec _plugin = assembleSandbox.getPlugin();
it.with(_plugin);
}
};
final Zip ideaZip = _tasks_2.create(IdeaPluginPlugin.IDEA_ZIP_TASK_NAME, Zip.class, _function_2);
TaskContainer _tasks_3 = project.getTasks();
Task _at_1 = _tasks_3.getAt(BasePlugin.ASSEMBLE_TASK_NAME);
_at_1.dependsOn(ideaZip);
}
private boolean hasSameArtifactIdAs(final File file1, final File file2) {
String _artifactId = this.getArtifactId(file1);
String _artifactId_1 = this.getArtifactId(file2);
return Objects.equal(_artifactId, _artifactId_1);
}
private String getArtifactId(final File file) {
String _xblockexpression = null;
{
String _name = file.getName();
final Matcher matcher = IdeaPluginPlugin.ARTIFACT_ID.matcher(_name);
String _xifexpression = null;
boolean _matches = matcher.matches();
if (_matches) {
_xifexpression = matcher.group(1);
} else {
_xifexpression = null;
}
_xblockexpression = _xifexpression;
}
return _xblockexpression;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy