From 134dc373d2dbd4bc5d626af1b96c06fd5b8682fb Mon Sep 17 00:00:00 2001
From: Zach Brown <1254957+zachbr@users.noreply.github.com>
Date: Mon, 15 Feb 2016 06:02:47 -0600
Subject: [PATCH] Update version handling for our new build system CC GH-19

---
 .../Check-PaperSpigot-versions.patch          | 33 ++++++---
 Spigot-Server-Patches/POM-Changes.patch       | 73 ++++++++++++++++---
 2 files changed, 84 insertions(+), 22 deletions(-)

diff --git a/Spigot-API-Patches/Check-PaperSpigot-versions.patch b/Spigot-API-Patches/Check-PaperSpigot-versions.patch
index 697f46751c..81841b4509 100644
--- a/Spigot-API-Patches/Check-PaperSpigot-versions.patch
+++ b/Spigot-API-Patches/Check-PaperSpigot-versions.patch
@@ -15,16 +15,15 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
 -        if (version.startsWith("git-Spigot-")) {
 +        // PaperSpigot start
 +        if (version.startsWith("git-PaperSpigot-")) {
-+            String[] parts = version.substring("git-PaperSpigot-".length()).split("-");
-+            int cbVersions = getDistance("craftbukkit", parts[1].substring(0, parts[1].indexOf(' ')));
++            String[] parts = version.substring("git-PaperSpigot-".length()).split("[-\\s]");
 +            int paperSpigotVersions = getDistance("paperspigot", parts[0]);
-+            if (cbVersions == -1 || paperSpigotVersions == -1) {
++            if (paperSpigotVersions == -1) {
 +                setVersionMessage("Error obtaining version information");
 +            } else {
-+                if (cbVersions == 0 && paperSpigotVersions == 0) {
++                if (paperSpigotVersions == 0) {
 +                    setVersionMessage("You are running the latest version");
 +                } else {
-+                    setVersionMessage("You are " + (cbVersions + paperSpigotVersions) + " version(s) behind");
++                    setVersionMessage("You are " + paperSpigotVersions + " version(s) behind");
 +                }
 +            }
 +        } else if (version.startsWith("git-Spigot-")) {
@@ -33,14 +32,28 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
              int cbVersions = getDistance("craftbukkit", parts[1].substring(0, parts[1].indexOf(' ')));
              int spigotVersions = getDistance("spigot", parts[0]);
 @@ -0,0 +0,0 @@ public class VersionCommand extends BukkitCommand {
-     private static int getDistance(String repo, String hash) {
+         }
+     }
+ 
+-    private static int getDistance(String repo, String hash) {
++    private static int getDistance(String repo, String currentVerInt) { // PaperSpigot
          try {
              BufferedReader reader = Resources.asCharSource(
 -                    new URL("https://hub.spigotmc.org/stash/rest/api/1.0/projects/SPIGOT/repos/" + repo + "/commits?since=" + URLEncoder.encode(hash, "UTF-8") + "&withCounts=true"),
-+                    new URL("https://hub.spigotmc.org/stash/rest/api/1.0/projects/PAPER/repos/" + repo + "/commits?since=" + URLEncoder.encode(hash, "UTF-8") + "&withCounts=true"), // PaperSpigot
++                    new URL("https://ci.destroystokyo.com/job/PaperSpigot/lastSuccessfulBuild/buildNumber"), // PaperSpigot
                      Charsets.UTF_8
              ).openBufferedStream();
              try {
--- 
-1.9.5.msysgit.0
-
+-                JSONObject obj = (JSONObject) new JSONParser().parse(reader);
+-                return ((Number) obj.get("totalCount")).intValue();
+-            } catch (ParseException ex) {
++                // PaperSpigot start
++                int newVer = Integer.decode(reader.readLine());
++                int currentVer = Integer.decode(currentVerInt);
++                return newVer - currentVer;
++            } catch (NumberFormatException ex) {
++                // PaperSpigot end
+                 ex.printStackTrace();
+                 return -1;
+             } finally {
+--
\ No newline at end of file
diff --git a/Spigot-Server-Patches/POM-Changes.patch b/Spigot-Server-Patches/POM-Changes.patch
index b4e33de007..3f4c049be7 100644
--- a/Spigot-Server-Patches/POM-Changes.patch
+++ b/Spigot-Server-Patches/POM-Changes.patch
@@ -56,26 +56,75 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
              <type>jar</type>
              <scope>compile</scope>
 @@ -0,0 +0,0 @@
-                 <version>0.2</version>
-                 <executions>
-                     <execution>
+             <id>spigotmc-public</id>
+             <url>https://hub.spigotmc.org/nexus/content/groups/public/</url>
+         </pluginRepository>
++        <!-- PaperSpigot - Repo for gitdescribe -->
++        <pluginRepository>
++            <id>destroystokyo</id>
++            <url>https://ci.destroystokyo.com/plugin/repository/everything/</url>
++        </pluginRepository>
+     </pluginRepositories>
+ 
+     <!-- This builds a completely 'ready to start' jar with all dependencies inside -->
+@@ -0,0 +0,0 @@
+         <defaultGoal>install</defaultGoal>
+         <plugins>
+             <plugin>
+-                <groupId>net.md-5</groupId>
+-                <artifactId>scriptus</artifactId>
+-                <version>0.2</version>
+-                <executions>
+-                    <execution>
 -                        <id>ex-spigot</id>
-+                        <id>ex-paperspigot</id>
-                         <configuration>
+-                        <configuration>
 -                            <format>git-Spigot-%s</format>
-+                            <format>git-PaperSpigot-%s</format>
-                             <scmDirectory>../</scmDirectory>
+-                            <scmDirectory>../</scmDirectory>
 -                            <descriptionProperty>spigot.desc</descriptionProperty>
-+                            <descriptionProperty>paperspigot.desc</descriptionProperty>
-                         </configuration>
-                         <phase>initialize</phase>
-                         <goals>
+-                        </configuration>
+-                        <phase>initialize</phase>
+-                        <goals>
+-                            <goal>describe</goal>
+-                        </goals>
+-                    </execution>
+-                    <execution>
+-                        <id>ex-craftbukkit</id>
+-                        <configuration>
+-                            <format>-%s</format>
+-                            <scmDirectory>../../CraftBukkit</scmDirectory>
+-                            <descriptionProperty>craftbukkit.desc</descriptionProperty>
+-                        </configuration>
+-                        <phase>initialize</phase>
+-                        <goals>
+-                            <goal>describe</goal>
+-                        </goals>
+-                    </execution>
+-                </executions>
+-            </plugin>  
++            <groupId>com.lukegb.mojo</groupId>
++            <artifactId>gitdescribe-maven-plugin</artifactId>
++            <version>3.1-SNAPSHOT</version>
++            <configuration>
++                <outputPrefix>git-PaperSpigot-</outputPrefix>
++            </configuration>
++            <executions>
++                <execution>
++                    <phase>compile</phase>
++                    <goals>
++                        <goal>gitdescribe</goal>
++                    </goals>
++                </execution>
++            </executions>
++        </plugin>
+             <plugin>
+                 <groupId>org.apache.maven.plugins</groupId>
+                 <artifactId>maven-jar-plugin</artifactId>
 @@ -0,0 +0,0 @@
                          <manifestEntries>
                              <Main-Class>org.bukkit.craftbukkit.Main</Main-Class>
                              <Implementation-Title>CraftBukkit</Implementation-Title>
 -                            <Implementation-Version>${spigot.desc}${craftbukkit.desc}</Implementation-Version>
-+                            <Implementation-Version>${paperspigot.desc}${craftbukkit.desc}</Implementation-Version>
++                            <Implementation-Version>${describe}</Implementation-Version>
                              <Implementation-Vendor>Bukkit Team</Implementation-Vendor>
                              <Specification-Title>Bukkit</Specification-Title>
                              <Specification-Version>${api.version}</Specification-Version>