forked from danthareja/node-google-apps-script
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutil.js
78 lines (65 loc) · 2.22 KB
/
util.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
77
78
var _ = require('lodash');
var dir = require('node-dir');
var path = require('path');
var Promise = require('bluebird');
function getFilesFromDisk(subdir) {
return new Promise(function(resolve, reject) {
var filesOnDisk = [];
// Only iterate through supported .js, .gs and .html files in dir
dir.readFiles(subdir, { match: /.js$|.gs$|.json$|.html$/ },
// Invoke this callback on each file
function(err, content, filename, next) {
if (err) return reject(err);
// Parse file's absolute path and add its content to result object
file = path.parse(filename);
file.content = content;
filesOnDisk.push(file);
// Continue to next file
next();
},
// finished callback.
function(err) {
if (err) return reject(err);
resolve(filesOnDisk);
});
})
.error(function() {
// swallow ENOENT
return [];
});
}
function updateFileSource(existingFile, newFile) {
existingFile.source = newFile.content;
}
function hasFileOnDisk(filesOnDisk, file) {
return _.any(filesOnDisk, function(fileOnDisk) {
var sameName = file.name === fileOnDisk.name;
var sameType = file.type === getFileType(fileOnDisk);
return sameName && sameType;
});
}
function getFileType(file) {
if (file.ext === '.js') return 'server_js';
if (file.ext === '.gs') return 'server_js';
if (file.ext === '.json') return 'json';
if (file.ext === '.html') return 'html';
throw new Error('Unsupported file type found. Google Apps Script only allows .js and .html');
}
function getFileExtension(file) {
if (file.type === 'server_js') return '.js';
if (file.type === 'json') return '.json';
if (file.type === 'html') return '.html';
throw new Error('Unsupported file type found');
}
function swapGStoJS(filename) {
if (filename.indexOf('.gs') === filename.length - 3) {
return filename.substr(0, filename.lastIndexOf('.gs')) + '.js';
}
return filename;
}
module.exports.getFilesFromDisk = getFilesFromDisk;
module.exports.updateFileSource = updateFileSource;
module.exports.hasFileOnDisk = hasFileOnDisk;
module.exports.getFileType = getFileType;
module.exports.getFileExtension = getFileExtension;
module.exports.swapGStoJS = swapGStoJS;