Skip to content

Commit ed93905

Browse files
committed
ScriptInfo: override behavior of getVersion()
Scripts are now versioned according to a datestamp matching the script's last modified time, together with a hash of the script's contents (when available).
1 parent 6be13e4 commit ed93905

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

src/main/java/org/scijava/script/ScriptInfo.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636
import java.io.FileReader;
3737
import java.io.IOException;
3838
import java.io.Reader;
39+
import java.text.SimpleDateFormat;
40+
import java.util.Date;
3941
import java.util.HashMap;
4042
import java.util.Map;
4143

@@ -53,6 +55,8 @@
5355
import org.scijava.module.ModuleException;
5456
import org.scijava.plugin.Parameter;
5557
import org.scijava.util.ConversionUtils;
58+
import org.scijava.util.DigestUtils;
59+
import org.scijava.util.FileUtils;
5660

5761
/**
5862
* Metadata about a script.
@@ -285,6 +289,22 @@ public String getLocation() {
285289
return new File(path).toURI().normalize().toString();
286290
}
287291

292+
@Override
293+
public String getVersion() {
294+
final File file = new File(path);
295+
final Date lastModified = FileUtils.getModifiedTime(file);
296+
final String datestamp =
297+
new SimpleDateFormat("yyyy-MM-dd-HH:mm:ss").format(lastModified);
298+
try {
299+
final String hash = DigestUtils.bestHex(FileUtils.readFile(file));
300+
return datestamp + "-" + hash;
301+
}
302+
catch (final IOException exc) {
303+
log.error(exc);
304+
}
305+
return datestamp;
306+
}
307+
288308
// -- Helper methods --
289309

290310
private void parseParam(final String param) throws ScriptException {

0 commit comments

Comments
 (0)