Browse Source

Plugins are now versioned using git. Fixes issue 2316.

tags/0.6.3m1rc1
Chris Smith 15 years ago
parent
commit
b19d107a0b

+ 17
- 10
createPluginJar.sh View File

@@ -47,18 +47,25 @@ if [ -e META-INF/plugin.config ]; then
47 47
 		mv META-INF/plugin.config.temp META-INF/plugin.config		
48 48
 	fi;
49 49
 
50
-	SVN=`which svn`	
51
-	SVNREV=`$SVN info $srcdir/src/$foldername 2>&1 | grep "Last Changed Rev"`
52
-	SVNREV=${SVNREV##*: }
53
-	echo "" >> META-INF/plugin.config
54
-	echo "" >> META-INF/plugin.config
55
-	
56
-	echo "version:" >> META-INF/plugin.config;
57
-	if [ -n "$SVNREV" ]; then
58
-		echo "  number=$SVNREV" >> META-INF/plugin.config;
50
+	if [ -d "$srcdir/.git" ]; then
51
+		GIT="`which git` --git-dir $srcdir/.git";
52
+		REV=$($GIT describe --tags `$GIT rev-list --max-count=1 HEAD -- src/$foldername`);
59 53
 	else
60
-		echo "  number=0" >> META-INF/plugin.config;
54
+		SVN=`which svn`	
55
+		SVNREV=`$SVN info $srcdir/src/$foldername 2>&1 | grep "Last Changed Rev"`
56
+		SVNREV=${SVNREV##*: }
57
+
58
+		if [ -n "$SVNREV" ]; then
59
+	                REV=`$SVN log -r $SVNREV | grep ^Git-version: | cut -f 2 -d ' '`
60
+		else
61
+			REV=0;
62
+		fi;
61 63
 	fi;
64
+
65
+        echo "" >> META-INF/plugin.config
66
+        echo "" >> META-INF/plugin.config
67
+	echo "version:" >> META-INF/plugin.config;
68
+	echo "  number=$REV" >> META-INF/plugin.config;
62 69
 fi;
63 70
 
64 71
 foo=`echo $foldername | sed -e 's/\/[^\/]*$//g'`

+ 16
- 34
src/com/dmdirc/plugins/PluginInfo.java View File

@@ -32,6 +32,7 @@ import com.dmdirc.util.InvalidConfigFileException;
32 32
 import com.dmdirc.logger.Logger;
33 33
 import com.dmdirc.logger.ErrorLevel;
34 34
 
35
+import com.dmdirc.updater.Version;
35 36
 import java.io.File;
36 37
 import java.io.IOException;
37 38
 import java.lang.reflect.Constructor;
@@ -144,7 +145,7 @@ public class PluginInfo implements Comparable<PluginInfo>, ServiceProvider {
144 145
 			throw new PluginException("Plugin "+filename+" failed to load, plugin.config failed to open - "+e.getMessage(), e);
145 146
 		}
146 147
 
147
-		if (getVersion() < 0) {
148
+		if (!getVersion().isValid()) {
148 149
 			lastError = "Incomplete plugin.config (Missing or invalid 'version')";
149 150
 			throw new PluginException("Plugin "+filename+" failed to load. "+lastError);
150 151
 		} else if (getAuthor().isEmpty()) {
@@ -664,36 +665,21 @@ public class PluginInfo implements Comparable<PluginInfo>, ServiceProvider {
664 665
 			if (pi == null) {
665 666
 				requirementsError = "Required plugin '"+data[0]+"' was not found";
666 667
 				return false;
667
-			} else if  (pi.getVersion() == 0) {
668
-				// Probably compiled from a non-svn version, assume version is ok
669
-				return true;
670 668
 			} else {
671 669
 				if (data.length > 1) {
672 670
 					// Check plugin minimum version matches.
673
-					try {
674
-						final int minversion = Integer.parseInt(data[1]);
675
-						if (pi.getVersion() < minversion) {
676
-							requirementsError = "Plugin '"+data[0]+"' is too old (Required Version: "+minversion+", Actual Version: "+pi.getVersion()+")";
677
-							return false;
678
-						} else {
679
-							if (data.length > 2) {
680
-								// Check plugin maximum version matches.
681
-								try {
682
-									final int maxversion = Integer.parseInt(data[2]);
683
-									if (pi.getVersion() > maxversion) {
684
-										requirementsError = "Plugin '"+data[0]+"' is too new (Required Version: "+maxversion+", Actual Version: "+pi.getVersion()+")";
685
-										return false;
686
-									}
687
-								} catch (NumberFormatException nfe) {
688
-									requirementsError = "Plugin max-version '"+data[2]+"' for plugin ('"+data[0]+"') is a non-integer";
689
-									return false;
690
-								}
691
-							}
692
-						}
693
-					} catch (NumberFormatException nfe) {
694
-						requirementsError = "Plugin min-version '"+data[1]+"' for plugin ('"+data[0]+"') is a non-integer";
695
-						return false;
696
-					}
671
+                    if (pi.getVersion().compareTo(new Version(data[1])) < 0) {
672
+                        requirementsError = "Plugin '"+data[0]+"' is too old (Required Version: "+data[1]+", Actual Version: "+pi.getVersion()+")";
673
+                        return false;
674
+                    } else {
675
+                        if (data.length > 2) {
676
+                            // Check plugin maximum version matches.
677
+                            if (pi.getVersion().compareTo(new Version(data[2])) > 0) {
678
+                                requirementsError = "Plugin '"+data[0]+"' is too new (Required Version: "+data[2]+", Actual Version: "+pi.getVersion()+")";
679
+                                return false;
680
+                            }
681
+                        }
682
+                    }
697 683
 				}
698 684
 			}
699 685
 		}
@@ -1148,12 +1134,8 @@ public class PluginInfo implements Comparable<PluginInfo>, ServiceProvider {
1148 1134
 	 *
1149 1135
 	 * @return Plugin Version
1150 1136
 	 */
1151
-	public int getVersion() {
1152
-		try {
1153
-			return Integer.parseInt(getKeyValue("version", "number", "0"));
1154
-		} catch (NumberFormatException nfe) {
1155
-			return -1;
1156
-		}
1137
+	public Version getVersion() {
1138
+        return new Version(getKeyValue("version", "number", "0"));
1157 1139
 	}
1158 1140
 
1159 1141
 	/**

+ 2
- 2
src/com/dmdirc/updater/components/PluginComponent.java View File

@@ -53,7 +53,7 @@ public class PluginComponent implements UpdateComponent {
53 53
     public PluginComponent(final PluginInfo plugin) {
54 54
         this.plugin = plugin;
55 55
         
56
-        if ((plugin.getAddonID() > 0 && plugin.getVersion() > -1)
56
+        if ((plugin.getAddonID() > 0 && plugin.getVersion().isValid())
57 57
                 || (config.hasOptionInt("plugin-addonid", plugin.getName()))) {
58 58
             UpdateChecker.removeComponent(getName());
59 59
             UpdateChecker.registerComponent(this);
@@ -85,7 +85,7 @@ public class PluginComponent implements UpdateComponent {
85 85
     /** {@inheritDoc} */
86 86
     @Override    
87 87
     public Version getVersion() {
88
-        return new Version(plugin.getVersion());
88
+        return plugin.getVersion();
89 89
     }
90 90
 
91 91
     /** {@inheritDoc} */

Loading…
Cancel
Save