-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathexport.js
More file actions
88 lines (82 loc) · 2.3 KB
/
export.js
File metadata and controls
88 lines (82 loc) · 2.3 KB
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
const { getClient } = require('./command.js')
exports.command = 'export'
exports.describe = 'Export catalog and text data'
exports.builder = {
entities: {
alias: 'e',
description: 'Which types of entities to fetch',
type: 'array',
default: [],
choices: [
'abbreviations',
'archives',
'artifacts',
'artifact-assets',
'artifacts-external-resources',
'artifacts-materials',
'entities-external-resources',
'entities-names',
'authors',
'collections',
'dynasties',
'external-resources',
'genres',
'inscriptions',
'journals',
'languages',
'locations',
'materials',
'material-aspects',
'material-colors',
'periods',
'places',
'proveniences',
'publications',
'regions',
'rulers'
]
},
index: {
alias: 'i',
description: 'Which index(es) to fetch',
type: 'array',
default: []
},
outputFile: {
alias: 'o',
description: 'Output file name(s)',
type: 'array',
default: []
}
}
exports.handler = async function (options) {
const client = await getClient(options)
console.time('Export')
const tasks = []
const targets = [...options.entities, ...options.index]
if (targets.length !== options.outputFile.length) {
console.error('The number of entities and output files must match.')
process.exit(1)
}
for (let i = 0; i < targets.length; i++) {
tasks.push(
client
.export(options.format, [targets[i]], options.outputFile[i])
.then(entities => {
for (const { status, reason } of entities) {
if (status === 'rejected') {
console.error(reason)
}
}
})
)
}
return Promise.all(tasks)
.then(() => {
console.timeEnd('Export')
})
.catch(err => {
console.error('Error during export:', err)
console.timeEnd('Export')
})
}