forked from elastic/ems-file-service
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
73 lines (65 loc) · 2.45 KB
/
index.js
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
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License;
* you may not use this file except in compliance with the Elastic License.
*/
const Hjson = require('hjson');
const glob = require('glob');
const fs = require('fs');
const path = require('path');
const rimraf = require('rimraf');
const mkdirp = require('mkdirp');
const { generateVectorManifest, generateCatalogueManifest } = require('./scripts/generate-manifest');
const generateVectors = require('./scripts/generate-vectors');
const constants = require('./scripts/constants');
const tileManifestHostname = process.env.TILE_HOST || constants.TILE_STAGING_HOST;
const vectorManifestHostname = process.env.VECTOR_HOST || constants.VECTOR_STAGING_HOST;
const production = vectorManifestHostname === constants.VECTOR_PRODUCTION_HOST;
const sources = glob.sync('sources/**/*.*json').map(source => {
const f = fs.readFileSync(source, 'utf8');
return Hjson.parse(f);
});
const fieldInfo = Hjson.parse(fs.readFileSync('./schema/fields.hjson', 'utf8'));
// Clean and recreate `./dist` directories
rimraf.sync('./dist');
mkdirp.sync('./dist/vector/blob');
mkdirp.sync('./dist/vector/files');
mkdirp.sync('./dist/catalogue');
const vectorFiles = new Map();
for (const version of constants.VERSIONS) {
mkdirp.sync(path.join('./dist/catalogue', version));
mkdirp.sync(path.join('./dist/vector', version));
const catalogueManifest = generateCatalogueManifest({
version: version,
tileHostname: tileManifestHostname,
vectorHostname: vectorManifestHostname,
});
const vectorManifest = generateVectorManifest(sources, {
version: version,
production: production,
hostname: vectorManifestHostname,
fieldInfo: fieldInfo,
});
for (const file of generateVectors(sources, {
version: version,
production: production,
srcdir: 'data',
destdir: 'dist/vector',
})) {
// Set key = destination path as it is unique across versions
vectorFiles.set(file.dest, file.src);
}
fs.writeFileSync(
path.join('./dist/catalogue', version, 'manifest'),
JSON.stringify(catalogueManifest)
);
fs.writeFileSync(
path.join('./dist/vector', version, 'manifest'),
JSON.stringify(vectorManifest)
);
}
for (const file of vectorFiles) {
// file is an array of [dest, src]
const vector = JSON.parse(fs.readFileSync(file[1]));
fs.writeFileSync(file[0], JSON.stringify(vector), 'utf8');
}