Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
// Simple Demo script to show usage
const path = require('path');
const fs = require('fs-extra');
const ocfl = require("ocfl");
console.log(ocfl);
const OCFLRepository = require('ocfl').Repository;
var argv = require('yargs').argv;
var Utils = require("ro-crate").Utils
var ROCrate = require('ro-crate').ROCrate;
var utils = new Utils();
// This is an asynchronous library so you need to call using await, or use promises
async function main() {
// OCFL repo - exsists?
const repoPath = argv.repo ? argv.repo : "ocfl_demo";
// Make or open a database
// Get or open an OCFL repo
var repo = new OCFLRepository();
var index = [];
var init = await repo.load(repoPath);
var objects = await repo.objects();
var p;
for (let o of Object.keys(objects)) {
var object = objects[o];
const inv = await (object.getInventory());
var headState = inv.versions[inv.head].state;
for (let hash of Object.keys(headState)){
if (headState[hash].includes("ro-crate-metadata.jsonld")) {
p = inv.manifest[hash][0];
break;
}
}
var rocrateFile = path.join(object.path, p);
console.log("GOT", rocrateFile);
var json = JSON.parse(fs.readFileSync(rocrateFile));
crate = new ROCrate(json);
crate.index();
var dataset = crate.getRootDataset()
console.log(dataset['@id'], dataset['description'], p);
var newItem = {
"@id": dataset["@id"],
name: utils.asArray(dataset.name)[0],
description: utils.asArray(dataset.description)[0],
datePublished: utils.asArray(dataset.name)[0],
path: object.path
}
index.push(newItem);
fs.writeFileSync(path.join(repo.path, "index.json"), JSON.stringify(index, null, 2));
/*
TODO
- Find the dataset []
- Sumamarize it
- add to an index object
- write out the object
*/
}
}
main();