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

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