forked from facebook/react-native-website
-
Notifications
You must be signed in to change notification settings - Fork 0
/
image-check.js
58 lines (55 loc) · 1.59 KB
/
image-check.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
/**
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const glob = require('glob-promise');
const fs = require('fs-extra');
const path = require('path');
const siteConfig = require('./docusaurus.config.js');
const imageReferenceRegExp = new RegExp(/!\[.*?\]\((.*)\)/g);
let missingAssets = [];
let queue = Promise.resolve();
glob('./docs/**/*.md')
.then(files => {
files.forEach(file => {
queue = queue
.then(() => {
return fs.readFile(file);
})
.then(contents => {
let matches;
while ((matches = imageReferenceRegExp.exec(contents))) {
const pathToFile = path.join(
'./',
matches[1].replace(siteConfig.baseUrl, '')
);
missingAssets.push({imagePath: pathToFile, markdownPath: file});
}
});
});
return queue;
})
.then(() => {
queue = Promise.resolve();
missingAssets.forEach(missingAsset => {
const {imagePath, markdownPath} = missingAsset;
queue = queue
.then(() => {
return fs.stat('./static/' + imagePath);
})
.then(stats => {})
.catch(e => {
console.error(
'Could not find ' +
'static/' +
imagePath +
' which has at least one reference in ' +
markdownPath +
". Did you forget to add the asset to '/static/docs/assets'?"
);
});
});
return queue;
});