forked from NangoHQ/nango
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflows.js
48 lines (39 loc) · 1.59 KB
/
flows.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
import fs from 'fs';
import path from 'path';
import yaml from 'js-yaml';
const rootDir = './integration-templates';
let output = {
integrations: {}
};
// Mapping for directory names to integration names
const directoryToIntegrationMapping = {
'microsoft-active-directory': 'microsoft-teams',
'google-workspace': 'google'
};
fs.readdirSync(rootDir).forEach((serviceDir) => {
const servicePath = path.join(rootDir, serviceDir);
if (fs.statSync(servicePath).isDirectory()) {
const nangoFilePath = path.join(servicePath, 'nango.yaml');
if (fs.existsSync(nangoFilePath)) {
const nangoContent = fs.readFileSync(nangoFilePath, 'utf8');
const nangoData = yaml.load(nangoContent);
const integrationName = directoryToIntegrationMapping[serviceDir] || serviceDir;
if (nangoData && nangoData.integrations) {
output.integrations = {
...output.integrations,
[integrationName]: nangoData.integrations[integrationName]
};
}
if (nangoData && nangoData.models) {
if (!output.integrations[integrationName]) {
output.integrations[integrationName] = {};
}
output.integrations[integrationName].models = nangoData.models;
}
if (directoryToIntegrationMapping[serviceDir]) {
output.integrations[integrationName].rawName = serviceDir;
}
}
}
});
fs.writeFileSync(path.join('./packages/shared', 'flows.yaml'), yaml.dump(output));