Implementing version management
This commit is contained in:
parent
d93351144d
commit
ae391e637f
|
@ -1,15 +1,12 @@
|
|||
package org.gcube.common.software.analyser;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.software.model.SoftwareConcept;
|
||||
import org.gcube.common.software.model.SoftwareVersion;
|
||||
import org.gcube.common.software.model.Variables;
|
||||
|
@ -42,8 +39,10 @@ public class SoftwareConceptAnalyser {
|
|||
protected JsonNode actualize(JsonNode version) throws Exception {
|
||||
Variables variables = objectMapper.treeToValue(version, Variables.class);
|
||||
Set<String> missingVariables = variables.parse();
|
||||
if(missingVariables.size()>0) {
|
||||
throw new Exception("");
|
||||
int size = missingVariables.size();
|
||||
if(size>0) {
|
||||
throw new Exception("The following variables has been used but not defined or cannot be actualised" +
|
||||
missingVariables.toArray(new String[size]).toString());
|
||||
}
|
||||
JsonNode swVersion = objectMapper.convertValue(variables.getProperties(), JsonNode.class);
|
||||
return swVersion;
|
||||
|
@ -70,6 +69,7 @@ public class SoftwareConceptAnalyser {
|
|||
softwareVersion.getPrevious()!=null ? softwareVersion.getPrevious().getVersion(): null);
|
||||
|
||||
SoftwareVersionAnalyser softwareVersionAnalyser = new SoftwareVersionAnalyser(softwareVersion);
|
||||
softwareVersionAnalyser.setOriginalJson(jsonNode);
|
||||
softwareVersionAnalyser.setFirst(i==0);
|
||||
softwareVersionAnalyser.analyse();
|
||||
|
||||
|
|
|
@ -2,11 +2,12 @@ package org.gcube.common.software.analyser;
|
|||
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.software.model.SoftwareVersion;
|
||||
import org.gcube.common.software.model.SoftwareVersionFile;
|
||||
import org.gcube.common.software.process.export.SoftwareVersionExporter;
|
||||
import org.gcube.common.software.process.publish.SoftwareVersionPublisher;
|
||||
import org.gcube.common.software.utils.Utils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -17,6 +18,7 @@ public class SoftwareVersionAnalyser {
|
|||
|
||||
private static final Logger logger = LoggerFactory.getLogger(SoftwareConceptAnalyser.class);
|
||||
|
||||
protected JsonNode originalJson;
|
||||
protected SoftwareVersion softwareVersion;
|
||||
protected boolean first;
|
||||
|
||||
|
@ -32,26 +34,39 @@ public class SoftwareVersionAnalyser {
|
|||
this.first = first;
|
||||
}
|
||||
|
||||
public void setOriginalJson(JsonNode jsonNode) {
|
||||
this.originalJson = jsonNode;
|
||||
}
|
||||
|
||||
public void analyse() throws Exception {
|
||||
ObjectMapper objectMapper = Utils.getObjectMapper();
|
||||
logger.debug("SoftwareVersion: {}", objectMapper.writeValueAsString(softwareVersion));
|
||||
|
||||
List<SoftwareVersionFile> files = softwareVersion.getFiles();
|
||||
for(SoftwareVersionFile file : files) {
|
||||
|
||||
}
|
||||
|
||||
ObjectNode publishers = (ObjectNode) originalJson.get("publishers");
|
||||
List<SoftwareVersionPublisher> svps = SoftwareVersionPublisher.getPublishers();
|
||||
for(SoftwareVersionPublisher svp: svps) {
|
||||
JsonNode conf = publishers.get(svp.getClass().getSimpleName());
|
||||
svp.setSpecificConfiguration(conf);
|
||||
svp.setSoftwareVersion(softwareVersion);
|
||||
svp.setObjectMapper(objectMapper);
|
||||
svp.setFirst(first);
|
||||
svp.publish();
|
||||
}
|
||||
|
||||
ObjectNode exporters = (ObjectNode) originalJson.get("exporters");
|
||||
List<SoftwareVersionExporter> sves = SoftwareVersionExporter.getExporters();
|
||||
for(SoftwareVersionExporter sve: sves) {
|
||||
JsonNode conf = publishers.get(exporters.getClass().getSimpleName());
|
||||
sve.setSpecificConfiguration(conf);
|
||||
sve.setSoftwareVersion(softwareVersion);
|
||||
sve.setObjectMapper(objectMapper);
|
||||
sve.setFirst(first);
|
||||
sve.export();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,6 @@ import java.util.List;
|
|||
import java.util.Set;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonIgnore;
|
||||
import org.gcube.com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
|
|
|
@ -30,6 +30,9 @@ public class SoftwareVersion extends SoftwareConcept {
|
|||
@JsonIgnore
|
||||
protected Boolean newDeposition;
|
||||
|
||||
@JsonIgnore
|
||||
protected Variables variables;
|
||||
|
||||
@JsonProperty(VERSION_PROPERTY_NAME)
|
||||
protected String version;
|
||||
|
||||
|
@ -80,6 +83,16 @@ public class SoftwareVersion extends SoftwareConcept {
|
|||
public void setNewDeposition(Boolean newVersion) {
|
||||
this.newDeposition = newVersion;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public Variables getVariables() {
|
||||
return variables;
|
||||
}
|
||||
|
||||
@JsonIgnore
|
||||
public void setVariables(Variables variables) {
|
||||
this.variables = variables;
|
||||
}
|
||||
|
||||
@JsonGetter(value = VERSION_PROPERTY_NAME)
|
||||
public String getVersion() {
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
package org.gcube.common.software.process;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.gcube.common.software.model.SoftwareVersion;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public abstract class SoftwareVersionProcessor {
|
||||
|
||||
protected SoftwareVersion softwareVersion;
|
||||
protected JsonNode configuration;
|
||||
protected boolean first;
|
||||
|
||||
public SoftwareVersion getSoftwareVersion() {
|
||||
return softwareVersion;
|
||||
}
|
||||
|
||||
public void setSoftwareVersion(SoftwareVersion softwareVersion) {
|
||||
this.softwareVersion = softwareVersion;
|
||||
}
|
||||
|
||||
public boolean isFirst() {
|
||||
return first;
|
||||
}
|
||||
|
||||
public void setFirst(boolean first) {
|
||||
this.first = first;
|
||||
}
|
||||
|
||||
public void setSpecificConfiguration(JsonNode conf) {
|
||||
this.configuration = conf;
|
||||
}
|
||||
|
||||
}
|
|
@ -3,14 +3,13 @@ package org.gcube.common.software.process.export;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.common.software.model.SoftwareVersion;
|
||||
import org.gcube.common.software.process.SoftwareVersionProcessor;
|
||||
import org.gcube.common.software.process.export.biblatex.BibLaTeXSoftwareVersionExporter;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public abstract class SoftwareVersionExporter {
|
||||
public abstract class SoftwareVersionExporter extends SoftwareVersionProcessor {
|
||||
|
||||
public static List<SoftwareVersionExporter> getExporters() {
|
||||
List<SoftwareVersionExporter> sves = new ArrayList<>();
|
||||
|
@ -18,34 +17,6 @@ public abstract class SoftwareVersionExporter {
|
|||
return sves;
|
||||
}
|
||||
|
||||
protected SoftwareVersion softwareVersion;
|
||||
protected ObjectMapper objectMapper;
|
||||
protected boolean first;
|
||||
|
||||
public SoftwareVersion getSoftwareVersion() {
|
||||
return softwareVersion;
|
||||
}
|
||||
|
||||
public void setSoftwareVersion(SoftwareVersion softwareVersion) {
|
||||
this.softwareVersion = softwareVersion;
|
||||
}
|
||||
|
||||
public ObjectMapper getObjectMapper() {
|
||||
return objectMapper;
|
||||
}
|
||||
|
||||
public void setObjectMapper(ObjectMapper objectMapper) {
|
||||
this.objectMapper = objectMapper;
|
||||
}
|
||||
|
||||
public boolean isFirst() {
|
||||
return first;
|
||||
}
|
||||
|
||||
public void setFirst(boolean first) {
|
||||
this.first = first;
|
||||
}
|
||||
|
||||
public abstract void export() throws Exception;
|
||||
|
||||
}
|
||||
|
|
|
@ -3,14 +3,13 @@ package org.gcube.common.software.process.publish;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.common.software.model.SoftwareVersion;
|
||||
import org.gcube.common.software.process.SoftwareVersionProcessor;
|
||||
import org.gcube.common.software.process.publish.zenodo.ZenodoSoftwareVersionPublisher;
|
||||
|
||||
/**
|
||||
* @author Luca Frosini (ISTI - CNR)
|
||||
*/
|
||||
public abstract class SoftwareVersionPublisher {
|
||||
public abstract class SoftwareVersionPublisher extends SoftwareVersionProcessor {
|
||||
|
||||
public static List<SoftwareVersionPublisher> getPublishers() {
|
||||
List<SoftwareVersionPublisher> svps = new ArrayList<>();
|
||||
|
@ -18,34 +17,6 @@ public abstract class SoftwareVersionPublisher {
|
|||
return svps;
|
||||
}
|
||||
|
||||
protected SoftwareVersion softwareVersion;
|
||||
protected ObjectMapper objectMapper;
|
||||
protected boolean first;
|
||||
|
||||
public SoftwareVersion getSoftwareVersion() {
|
||||
return softwareVersion;
|
||||
}
|
||||
|
||||
public void setSoftwareVersion(SoftwareVersion softwareVersion) {
|
||||
this.softwareVersion = softwareVersion;
|
||||
}
|
||||
|
||||
public ObjectMapper getObjectMapper() {
|
||||
return objectMapper;
|
||||
}
|
||||
|
||||
public void setObjectMapper(ObjectMapper objectMapper) {
|
||||
this.objectMapper = objectMapper;
|
||||
}
|
||||
|
||||
public boolean isFirst() {
|
||||
return first;
|
||||
}
|
||||
|
||||
public void setFirst(boolean first) {
|
||||
this.first = first;
|
||||
}
|
||||
|
||||
public abstract void publish() throws Exception;
|
||||
|
||||
}
|
||||
|
|
|
@ -16,6 +16,7 @@ import java.util.ArrayList;
|
|||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.ws.rs.client.Client;
|
||||
|
@ -25,6 +26,7 @@ import javax.ws.rs.core.MediaType;
|
|||
import javax.ws.rs.core.Response;
|
||||
|
||||
import org.gcube.com.fasterxml.jackson.databind.JsonNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ArrayNode;
|
||||
import org.gcube.com.fasterxml.jackson.databind.node.ObjectNode;
|
||||
import org.gcube.common.gxhttp.request.GXHTTPStringRequest;
|
||||
|
@ -32,6 +34,7 @@ import org.gcube.common.software.config.Config;
|
|||
import org.gcube.common.software.model.ElaborationType;
|
||||
import org.gcube.common.software.model.SoftwareVersionFile;
|
||||
import org.gcube.common.software.process.publish.SoftwareVersionPublisher;
|
||||
import org.gcube.common.software.utils.Utils;
|
||||
import org.glassfish.jersey.client.ClientProperties;
|
||||
import org.glassfish.jersey.media.multipart.FormDataMultiPart;
|
||||
import org.glassfish.jersey.media.multipart.MultiPartFeature;
|
||||
|
@ -151,12 +154,9 @@ public class ZenodoSoftwareVersionPublisher extends SoftwareVersionPublisher {
|
|||
String id = getZenodoIDFromDOIURL(softwareVersion.getVersionDOIURL());
|
||||
gxHTTPStringRequest.path(DEPOSITION_PATH.replace(":id", id));
|
||||
|
||||
ObjectNode body = objectMapper.createObjectNode();
|
||||
|
||||
ObjectNode metadata = generateMetadata();
|
||||
body.set(METADATA_FIELD_NAME, metadata);
|
||||
|
||||
HttpURLConnection httpURLConnection = gxHTTPStringRequest.put(objectMapper.writeValueAsString(body));
|
||||
HttpURLConnection httpURLConnection = gxHTTPStringRequest.put(Utils.getObjectMapper().writeValueAsString(metadata));
|
||||
getResponse(httpURLConnection);
|
||||
}
|
||||
|
||||
|
@ -253,7 +253,7 @@ public class ZenodoSoftwareVersionPublisher extends SoftwareVersionPublisher {
|
|||
String res = result.toString();
|
||||
logger.trace("Server returned content : {}", res);
|
||||
|
||||
return objectMapper.readTree(res);
|
||||
return Utils.getObjectMapper().readTree(res);
|
||||
} finally {
|
||||
connection.disconnect();
|
||||
}
|
||||
|
@ -272,12 +272,9 @@ public class ZenodoSoftwareVersionPublisher extends SoftwareVersionPublisher {
|
|||
gxHTTPStringRequest.header("Accept", "application/json");
|
||||
gxHTTPStringRequest.path(DEPOSITIONS_COLLECTION_PATH);
|
||||
|
||||
ObjectNode body = objectMapper.createObjectNode();
|
||||
|
||||
ObjectNode metadata = generateMetadata();
|
||||
body.set(METADATA_FIELD_NAME, metadata);
|
||||
|
||||
HttpURLConnection httpURLConnection = gxHTTPStringRequest.post(objectMapper.writeValueAsString(body));
|
||||
HttpURLConnection httpURLConnection = gxHTTPStringRequest.post(Utils.getObjectMapper().writeValueAsString(metadata));
|
||||
response = getResponse(httpURLConnection);
|
||||
|
||||
URL conceptDOIURL = createZenodoDOIURLFromID(response.get("conceptrecid").asText());
|
||||
|
@ -287,10 +284,72 @@ public class ZenodoSoftwareVersionPublisher extends SoftwareVersionPublisher {
|
|||
|
||||
finalize();
|
||||
}
|
||||
|
||||
private ArrayNode getAuthors(){
|
||||
ArrayNode authors = softwareVersion.getAuthors().deepCopy();
|
||||
return authors;
|
||||
}
|
||||
|
||||
private String getDescription() {
|
||||
StringBuffer stringBuffer = new StringBuffer();
|
||||
stringBuffer.append(configuration.get("html_description").asText());
|
||||
|
||||
String codeLocation = softwareVersion.getCodeLocation();
|
||||
if(codeLocation!=null) {
|
||||
String htmlCodeLocation = configuration.get("html_code_location").asText();
|
||||
htmlCodeLocation = Utils.replaceVariable("code_location", codeLocation, htmlCodeLocation);
|
||||
stringBuffer.append(htmlCodeLocation);
|
||||
}
|
||||
|
||||
return stringBuffer.toString();
|
||||
}
|
||||
|
||||
private ArrayNode getGrants(){
|
||||
ArrayNode grants = softwareVersion.getGrants().deepCopy();
|
||||
for(JsonNode g : grants) {
|
||||
ObjectNode grant = (ObjectNode) g;
|
||||
grant.remove("name");
|
||||
grant.remove("url");
|
||||
}
|
||||
return grants;
|
||||
}
|
||||
|
||||
private ArrayNode getKeywords(){
|
||||
Set<String> keywords = softwareVersion.getKeywords();
|
||||
ObjectMapper objectMapper = Utils.getObjectMapper();
|
||||
ArrayNode keywordsArrayNode = objectMapper.createArrayNode();
|
||||
for(String keyword : keywords) {
|
||||
keywordsArrayNode.add(keyword);
|
||||
}
|
||||
return keywordsArrayNode;
|
||||
}
|
||||
|
||||
private String getLicense() {
|
||||
return softwareVersion.getLicense().get("id").asText();
|
||||
}
|
||||
|
||||
private String getDate() {
|
||||
return Utils.getDateAsString(softwareVersion.getDate());
|
||||
}
|
||||
|
||||
private ObjectNode generateMetadata() {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
ObjectMapper objectMapper = Utils.getObjectMapper();
|
||||
ObjectNode metadatWrapper = objectMapper.createObjectNode();
|
||||
|
||||
ObjectNode metadata = objectMapper.createObjectNode();
|
||||
metadata.put("access_right", "open");
|
||||
metadata.put("upload_type", "software");
|
||||
metadata.replace("creators", getAuthors());
|
||||
metadata.put("description", getDescription());
|
||||
metadata.replace("grants", getGrants());
|
||||
metadata.replace("keywords", getKeywords());
|
||||
metadata.put("license", getLicense());
|
||||
metadata.put("publication_date", getDate());
|
||||
metadata.put("title", softwareVersion.getTitle());
|
||||
metadata.put("version", softwareVersion.getVersion());
|
||||
|
||||
metadatWrapper.set(METADATA_FIELD_NAME, metadata);
|
||||
return metadatWrapper;
|
||||
}
|
||||
|
||||
public void update() throws Exception {
|
||||
|
|
|
@ -2,7 +2,6 @@ package org.gcube.common.software.analyser;
|
|||
|
||||
import java.io.File;
|
||||
|
||||
import org.gcube.common.software.model.SoftwareConcept;
|
||||
import org.gcube.common.software.utils.FileUtils;
|
||||
import org.junit.Test;
|
||||
|
||||
|
|
|
@ -146,9 +146,7 @@
|
|||
"gcube_release_ticket": null,
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139446",
|
||||
"code_location": null,
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.1.0",
|
||||
|
@ -168,9 +166,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/12988",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1140461",
|
||||
"code_location": null,
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.2.0",
|
||||
|
@ -186,9 +182,7 @@
|
|||
"gcube_release_ticket": null,
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1140750",
|
||||
"code_location": null,
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.3.0",
|
||||
|
@ -208,9 +202,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/16743",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1143572",
|
||||
"code_location": null,
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": null
|
||||
},
|
||||
{
|
||||
"version": "1.4.0",
|
||||
|
@ -220,9 +212,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/17294",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1143583",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.1",
|
||||
|
@ -232,9 +222,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/18335",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1143585",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.2",
|
||||
|
@ -244,9 +232,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/18507",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1143586",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.3",
|
||||
|
@ -256,9 +242,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/19322",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1143587",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.4",
|
||||
|
@ -268,9 +252,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/20648",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1143589",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "1.4.5",
|
||||
|
@ -280,9 +262,7 @@
|
|||
"gcube_release_ticket": "https://support.d4science.org/issues/20920",
|
||||
"doi_url": "https://doi.org/10.5072/zenodo.1139445",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1143590",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.0.0",
|
||||
|
@ -291,9 +271,7 @@
|
|||
"gcube_release_version": "5.2.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/19738",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139069",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.1.0",
|
||||
|
@ -302,9 +280,7 @@
|
|||
"gcube_release_version": "5.7.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/21685/",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139070",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.2.0",
|
||||
|
@ -313,9 +289,7 @@
|
|||
"gcube_release_version": "5.11.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/22943",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139322",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.3.0",
|
||||
|
@ -324,9 +298,7 @@
|
|||
"gcube_release_version": "5.13.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23374",
|
||||
"version_doi_url": "https://doi.org/10.5072/zenodo.1139680",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.4.0",
|
||||
|
@ -335,9 +307,7 @@
|
|||
"gcube_release_version": "5.13.1",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23650",
|
||||
"version_doi_url" : "https://doi.org/10.5072/zenodo.1144798",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
},
|
||||
{
|
||||
"version": "2.4.1",
|
||||
|
@ -346,9 +316,7 @@
|
|||
"gcube_release_version": "5.14.0",
|
||||
"gcube_release_ticket": "https://support.d4science.org/issues/23885",
|
||||
"version_doi_url" : "https://doi.org/10.5072/zenodo.1144799",
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}",
|
||||
"publish": false,
|
||||
"export": true
|
||||
"code_location": "https://code-repo.d4science.org/gCubeSystem/{{name}}/releases/tag/v{{version}}"
|
||||
}
|
||||
],
|
||||
"publishers": {
|
||||
|
|
Loading…
Reference in New Issue