-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathindex.js
76 lines (54 loc) · 1.87 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
74
75
76
'use strict';
/*
Example and basiuc usage for drive-out!
settings fil have to be in the same level.
*/
var settings = require('./settings'),
extend = require('util')._extend,
drive = require('./drive-api')(settings),
fs = require('fs'),
MEDIA_PATH = './app/media',
CONTENTS_PATH = './app/contents';
drive.start().then(function logic() {
console.log('custom indexer of drive-out');
var fileId = drive.utils.getFileId(settings.DRIVE_FOLDER_URL);
console.log();
console.log('folder url:', settings.DRIVE_FOLDER_URL);
console.log('folder id: ', fileId);
fs.existsSync(MEDIA_PATH) || fs.mkdirSync(MEDIA_PATH);
fs.existsSync(CONTENTS_PATH) || fs.mkdirSync(CONTENTS_PATH);
var files = drive.files.walk({fileId: fileId, mediapath: MEDIA_PATH}, drive.iterators.flatten);
// todo: cycle through files to discover hidden metadata
// create contents directory if it does not exist
// recursive save files data
function save_recursively(items, path) {
var results = [];
fs.existsSync(path) || fs.mkdirSync(path);
for(var i in items) {
if(items[i].items){
var clone = {};
for(var k in items[i]){ // copy only non items
if(k != 'items')
clone[k] = items[i][k];
}
results.push(clone);
save_recursively(items[i].items, path + "/" + items[i].slug);
} else if(!items[i].target){
results.push(items[i]);
}
};
for(var i in results) {
for(var j in items) {
if(results[i].slug == items[j].target){
results[i].metadata = extend({},items[j]);
break;
}
}
}
// save index here.
drive.utils.write(path + '/index.json', JSON.stringify(results,null,2));
};
save_recursively(files, CONTENTS_PATH);
}, console.log).catch(function(err) {
console.log(err)
});