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
 		mv META-INF/plugin.config.temp META-INF/plugin.config		
47
 		mv META-INF/plugin.config.temp META-INF/plugin.config		
48
 	fi;
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
 	else
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
 	fi;
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
 fi;
69
 fi;
63
 
70
 
64
 foo=`echo $foldername | sed -e 's/\/[^\/]*$//g'`
71
 foo=`echo $foldername | sed -e 's/\/[^\/]*$//g'`

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

32
 import com.dmdirc.logger.Logger;
32
 import com.dmdirc.logger.Logger;
33
 import com.dmdirc.logger.ErrorLevel;
33
 import com.dmdirc.logger.ErrorLevel;
34
 
34
 
35
+import com.dmdirc.updater.Version;
35
 import java.io.File;
36
 import java.io.File;
36
 import java.io.IOException;
37
 import java.io.IOException;
37
 import java.lang.reflect.Constructor;
38
 import java.lang.reflect.Constructor;
144
 			throw new PluginException("Plugin "+filename+" failed to load, plugin.config failed to open - "+e.getMessage(), e);
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
 			lastError = "Incomplete plugin.config (Missing or invalid 'version')";
149
 			lastError = "Incomplete plugin.config (Missing or invalid 'version')";
149
 			throw new PluginException("Plugin "+filename+" failed to load. "+lastError);
150
 			throw new PluginException("Plugin "+filename+" failed to load. "+lastError);
150
 		} else if (getAuthor().isEmpty()) {
151
 		} else if (getAuthor().isEmpty()) {
664
 			if (pi == null) {
665
 			if (pi == null) {
665
 				requirementsError = "Required plugin '"+data[0]+"' was not found";
666
 				requirementsError = "Required plugin '"+data[0]+"' was not found";
666
 				return false;
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
 			} else {
668
 			} else {
671
 				if (data.length > 1) {
669
 				if (data.length > 1) {
672
 					// Check plugin minimum version matches.
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
 	 *
1134
 	 *
1149
 	 * @return Plugin Version
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
     public PluginComponent(final PluginInfo plugin) {
53
     public PluginComponent(final PluginInfo plugin) {
54
         this.plugin = plugin;
54
         this.plugin = plugin;
55
         
55
         
56
-        if ((plugin.getAddonID() > 0 && plugin.getVersion() > -1)
56
+        if ((plugin.getAddonID() > 0 && plugin.getVersion().isValid())
57
                 || (config.hasOptionInt("plugin-addonid", plugin.getName()))) {
57
                 || (config.hasOptionInt("plugin-addonid", plugin.getName()))) {
58
             UpdateChecker.removeComponent(getName());
58
             UpdateChecker.removeComponent(getName());
59
             UpdateChecker.registerComponent(this);
59
             UpdateChecker.registerComponent(this);
85
     /** {@inheritDoc} */
85
     /** {@inheritDoc} */
86
     @Override    
86
     @Override    
87
     public Version getVersion() {
87
     public Version getVersion() {
88
-        return new Version(plugin.getVersion());
88
+        return plugin.getVersion();
89
     }
89
     }
90
 
90
 
91
     /** {@inheritDoc} */
91
     /** {@inheritDoc} */

Loading…
Cancel
Save