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

org.xtext.gradle.idea.IdeaRepositoryPlugin Maven / Gradle / Ivy

package org.xtext.gradle.idea;

import java.io.File;
import java.util.TreeSet;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
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.plugins.BasePlugin;
import org.gradle.api.plugins.ExtensionContainer;
import org.gradle.api.plugins.PluginContainer;
import org.gradle.api.tasks.TaskContainer;
import org.xtext.gradle.idea.IdeaDevelopmentPlugin;
import org.xtext.gradle.idea.IdeaPluginPlugin;
import org.xtext.gradle.idea.tasks.GradleExtensions;
import org.xtext.gradle.idea.tasks.IdeaExtension;
import org.xtext.gradle.idea.tasks.IdeaPluginDependencies;
import org.xtext.gradle.idea.tasks.IdeaPluginDependency;
import org.xtext.gradle.idea.tasks.IdeaRepository;

@SuppressWarnings("all")
public class IdeaRepositoryPlugin implements Plugin {
  public final static String IDEA_REPOSITORY_TASK_NAME = "ideaRepository";
  
  @Override
  public void apply(final Project project) {
    PluginContainer _plugins = project.getPlugins();
    _plugins.apply(IdeaDevelopmentPlugin.class);
    TaskContainer _tasks = project.getTasks();
    final Action _function = new Action() {
      @Override
      public void execute(final IdeaRepository it) {
        it.setDescription("Creates an Idea repository from which plugins can be installed");
        it.setGroup(BasePlugin.BUILD_GROUP);
        File _buildDir = project.getBuildDir();
        File _divide = GradleExtensions.operator_divide(_buildDir, "ideaRepository");
        it.into(_divide);
      }
    };
    final IdeaRepository repositoryTask = _tasks.create(IdeaRepositoryPlugin.IDEA_REPOSITORY_TASK_NAME, IdeaRepository.class, _function);
    ExtensionContainer _extensions = project.getExtensions();
    final IdeaExtension idea = _extensions.getByType(IdeaExtension.class);
    final Action _function_1 = new Action() {
      @Override
      public void execute(final Project it) {
        IdeaPluginDependencies _pluginDependencies = idea.getPluginDependencies();
        TreeSet _projectDependencies = _pluginDependencies.getProjectDependencies();
        final Function1 _function = new Function1() {
          @Override
          public Project apply(final IdeaPluginDependency it) {
            String _id = it.getId();
            return project.project(_id);
          }
        };
        Iterable _map = IterableExtensions.map(_projectDependencies, _function);
        final Function1 _function_1 = new Function1() {
          @Override
          public Task apply(final Project it) {
            return IdeaRepositoryPlugin.this.getIdeaZipTask(it);
          }
        };
        Iterable _map_1 = IterableExtensions.map(_map, _function_1);
        final Procedure1 _function_2 = new Procedure1() {
          @Override
          public void apply(final Task zip) {
            repositoryTask.from(zip);
          }
        };
        IterableExtensions.forEach(_map_1, _function_2);
      }
    };
    project.afterEvaluate(_function_1);
    PluginContainer _plugins_1 = project.getPlugins();
    final Action _function_2 = new Action() {
      @Override
      public void execute(final IdeaPluginPlugin it) {
        Task _ideaZipTask = IdeaRepositoryPlugin.this.getIdeaZipTask(project);
        repositoryTask.from(_ideaZipTask);
      }
    };
    _plugins_1.withType(IdeaPluginPlugin.class, _function_2);
  }
  
  public Task getIdeaZipTask(final Project it) {
    TaskContainer _tasks = it.getTasks();
    return _tasks.findByName(IdeaPluginPlugin.IDEA_ZIP_TASK_NAME);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy