mrkirby153

Untitled

Apr 14th, 2015
333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.52 KB | None | 0 0
  1. package me.mrkirby153.quarxel.manager;
  2.  
  3. import me.mrkirby153.quarxel.manager.extension.QuarxelExtension;
  4. import me.mrkirby153.quarxel.manager.tasks.CreateServer;
  5. import me.mrkirby153.quarxel.manager.tasks.RunBuildToolsTask;
  6. import me.mrkirby153.quarxel.manager.tasks.util.DownloadTask;
  7. import me.mrkirby153.quarxel.manager.tasks.util.ExtractFromJarTask;
  8. import org.gradle.api.Action;
  9. import org.gradle.api.Plugin;
  10. import org.gradle.api.Project;
  11. import org.gradle.api.Task;
  12. import org.gradle.api.plugins.JavaPlugin;
  13. import org.gradle.api.specs.Spec;
  14. import org.gradle.api.tasks.Copy;
  15. import org.gradle.api.tasks.JavaExec;
  16. import org.gradle.api.tasks.bundling.AbstractArchiveTask;
  17.  
  18. import java.io.File;
  19. import java.net.URISyntaxException;
  20. import java.net.URL;
  21. import java.util.Arrays;
  22. import java.util.Calendar;
  23. import java.util.HashMap;
  24. import java.util.List;
  25.  
  26. public class QuarxelManagerPlugin implements Plugin<Project> {
  27.  
  28.     public Project project;
  29.  
  30.     @Override
  31.     public void apply(Project project) {
  32.         this.project = project;
  33.         project.getExtensions().create("quarxel", QuarxelExtension.class);
  34.         final QuarxelExtension obj = (QuarxelExtension) project.getExtensions().findByName("quarxel");
  35.         project.getPluginManager().apply(JavaPlugin.class);
  36.         project.afterEvaluate(new Action<Project>() {
  37.             @Override
  38.             public void execute(Project project) {
  39.                 afterEval(project, obj);
  40.             }
  41.         });
  42.         File buildToolsLoc;
  43.         {
  44.             DownloadTask dt = makeTask("downloadBT", DownloadTask.class);
  45.             dt.setUrl("https://hub.spigotmc.org/jenkins/view/All/job/BuildTools-Beta/lastSuccessfulBuild/artifact/target/BuildTools.jar");
  46.             dt.setOutputFile(buildToolsLoc = new File(getGradleCache(), "BuildTools.jar"));
  47.             dt.setGroup("QuarxelManager");
  48.             dt.setDescription("Downloads Build Tools");
  49.         }
  50.         RunBuildToolsTask runBuildToolsTask = makeTask("runBuildTools", RunBuildToolsTask.class);
  51.         {
  52.             runBuildToolsTask.setWorkingDir(new File(project.getGradle().getGradleUserHomeDir().getAbsolutePath() + "/caches/QuarxelManager/BuildTools"));
  53.             runBuildToolsTask.getWorkingDir().mkdirs();
  54.             runBuildToolsTask.setBtLoc(buildToolsLoc);
  55.             runBuildToolsTask.dependsOn("downloadBT");
  56.             runBuildToolsTask.setOutput(new File(runBuildToolsTask.getWorkingDir(), "spigot-1.8.3.jar"));
  57.             runBuildToolsTask.getOutputs().upToDateWhen(new Spec<Task>() {
  58.                 @Override
  59.                 public boolean isSatisfiedBy(Task task) {
  60.                     File output = ((RunBuildToolsTask) task).getOutput();
  61.                     if (!output.exists())
  62.                         return false;
  63.                     Calendar c = Calendar.getInstance();
  64.                     c.setTimeInMillis(System.currentTimeMillis());
  65.                     c.add(Calendar.WEEK_OF_YEAR, 14);
  66.                     return output.lastModified() < c.getTimeInMillis();
  67.                 }
  68.             });
  69.         }
  70.         {
  71.             ExtractFromJarTask extractStartScript = makeTask("extractStartScript", ExtractFromJarTask.class);
  72.             extractStartScript.setExtractLocation(new File(getGradleCache(), "start.bat"));
  73.             File startLocation;
  74.             URL startURL = QuarxelManagerPlugin.class.getResource("/start.bat");
  75.             try {
  76.                 startLocation = new File(startURL.toURI());
  77.             } catch (URISyntaxException ex) {
  78.                 startLocation = new File(startURL.getPath());
  79.             }
  80.             extractStartScript.setInputFile(startLocation);
  81.         }
  82.         {
  83.             CreateServer createServer = makeTask("createServer", CreateServer.class);
  84.             createServer.setGroup("QuarxelManager");
  85.             createServer.setDescription("Creates a testing server");
  86.             createServer.dependsOn("runBuildTools", "extractStartScript");
  87.             createServer.setSpigotFile(runBuildToolsTask.getOutput());
  88.         }
  89.         {
  90.            /* CopyTask task = makeTask("deployTestPlugin", CopyTask.class);
  91.             AbstractArchiveTask jarTask = (AbstractArchiveTask) project.getTasks().getByName("jar");
  92.             task.setSource(jarTask.getArchivePath());
  93.             task.dependsOn("jar");*/
  94.             Copy task = makeTask("deployTestPlugin", Copy.class);
  95.             AbstractArchiveTask jarTask = (AbstractArchiveTask) project.getTasks().getByName("jar");
  96.             task.from(jarTask.getArchivePath());
  97.             task.dependsOn("jar");
  98.         }
  99.         {
  100.             JavaExec start = makeTask("runServer", JavaExec.class);
  101.             start.setMain("-jar");
  102.             start.setStandardOutput(System.out);
  103.             start.setStandardInput(System.in);
  104.             start.setErrorOutput(System.err);
  105.  
  106.         }
  107.     }
  108.  
  109.     @SuppressWarnings("unchecked")
  110.     public <T extends Task> T makeTask(String name, Class<T> type) {
  111.         HashMap<String, Object> map = new HashMap<String, Object>();
  112.         map.put("name", name);
  113.         map.put("type", type);
  114.         return (T) project.task(map, name);
  115.     }
  116.  
  117.     public static void afterEval(Project project, final QuarxelExtension ext) {
  118.         {
  119.             CreateServer cst = ((CreateServer) project.getTasks().getByName("createServer"));
  120.             final File serverFile = new File("." + File.separator + ext.getServerLocation());
  121.             cst.setServerOutputDirectory(serverFile);
  122.             cst.setSpigotOutputFile(new File(cst.getServerOutputDirectory(), "spigot.jar"));
  123.             cst.setStartFileOutput(new File(cst.getServerOutputDirectory(), "start.bat"));
  124.             cst.setStartFileInput(new File(project.getGradle().getGradleUserHomeDir().getAbsolutePath() + "/caches/QuarxelManager", "start.bat"));
  125.  
  126.             Copy ct = (Copy) project.getTasks().getByName("deployTestPlugin");
  127.             AbstractArchiveTask jarTask = (AbstractArchiveTask) project.getTasks().getByName("jar");
  128.             File pluginDest = new File(serverFile, "plugins");
  129.             ct.into(pluginDest);
  130.  
  131.             JavaExec exec = (JavaExec) project.getTasks().getByName("runServer");
  132.             List<String> jvmArgs = Arrays.asList(ext.getServerArgs().split(" "));
  133.             exec.jvmArgs(jvmArgs);
  134.             exec.args("spigot.jar");
  135.             exec.workingDir(ext.getServerLocation());
  136.         }
  137.     }
  138.  
  139.     public File getGradleCache() {
  140.         return new File(project.getGradle().getGradleUserHomeDir().getAbsolutePath() + "/caches/QuarxelManager");
  141.     }
  142. }
Advertisement
Add Comment
Please, Sign In to add comment