-
-
Notifications
You must be signed in to change notification settings - Fork 6
/
plugins.js
42 lines (38 loc) · 1.32 KB
/
plugins.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
const { multiSlashRE } = require('./fmt');
const trimPrefix = str => `/${str}`.replace(multiSlashRE, '/');
const createTransformerRemarkPlugins = sources => sources.reduce((plugins, source) => {
const { name, baseURI, remote } = source;
if (!remote) return plugins;
const sourcePlugin = {
resolve: "gatsby-remark-prefix-relative-links",
options: {
prefix: trimPrefix(baseURI),
test: {
field: 'sourceInstanceName',
value: name,
},
},
};
return [...plugins, sourcePlugin];
}, []);
const alreadyCloned = (plugins, options) =>
plugins.some(({ options: { name, remote, branch, patterns } }) => (
name === options.name
&& remote === options.remote
&& branch === options.branch
&& patterns === options.patterns));
const createSourceGitPlugins = sources => sources.reduce((plugins, source) => {
const { name, remote, branch, directory = '' } = source;
const patterns = `${directory}/**`.replace(multiSlashRE, '/');
const options = { name, remote, branch, patterns };
if (!remote || alreadyCloned(plugins, options)) return plugins;
const sourcePlugin = {
resolve: "gatsby-source-git",
options: { name, remote, branch, patterns },
};
return [...plugins, sourcePlugin];
}, []);
module.exports = {
createTransformerRemarkPlugins,
createSourceGitPlugins,
};