sfc-utils 1.4.77 → 1.4.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/copy/sheets.js +72 -21
- package/package.json +1 -1
package/copy/sheets.js
CHANGED
|
@@ -12,9 +12,19 @@ var { google } = require("googleapis");
|
|
|
12
12
|
var api = google.sheets("v4");
|
|
13
13
|
var writeFile = require("write");
|
|
14
14
|
var authObj = require("./googleauth");
|
|
15
|
+
// Try to import story_settings.sheet.json
|
|
16
|
+
let languageSwap;
|
|
17
|
+
try {
|
|
18
|
+
const storySettings = require("../../../src/data/story_settings.sheet.json");
|
|
19
|
+
if (storySettings) {
|
|
20
|
+
languageSwap = storySettings[0].Language_Swap;
|
|
21
|
+
}
|
|
22
|
+
} catch (err) {
|
|
23
|
+
// It's ok
|
|
24
|
+
}
|
|
15
25
|
|
|
16
26
|
var cast = function (str, forceStr) {
|
|
17
|
-
if (!forceStr){
|
|
27
|
+
if (!forceStr) {
|
|
18
28
|
if (typeof str !== "string") {
|
|
19
29
|
if (typeof str.value == "string") {
|
|
20
30
|
str = str.value;
|
|
@@ -30,37 +40,45 @@ var cast = function (str, forceStr) {
|
|
|
30
40
|
if (str.toLowerCase() == "true" || str.toLowerCase() == "false") {
|
|
31
41
|
return str.toLowerCase() == "true" ? true : false;
|
|
32
42
|
}
|
|
33
|
-
}
|
|
43
|
+
}
|
|
34
44
|
// To force string, just return string
|
|
35
45
|
|
|
36
46
|
return str;
|
|
37
47
|
};
|
|
38
48
|
|
|
39
49
|
let googleAuth = (project, directory = null, forceStr = false) => {
|
|
40
|
-
return new Promise(resolveFinal => {
|
|
50
|
+
return new Promise((resolveFinal) => {
|
|
41
51
|
var auth = null;
|
|
42
|
-
authObj
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
authObj
|
|
53
|
+
.authenticate({ fallback: false })
|
|
54
|
+
.then((resp) => {
|
|
55
|
+
auth = resp;
|
|
56
|
+
grabSheets(auth, project, directory, forceStr)
|
|
57
|
+
.then(() => resolveFinal())
|
|
58
|
+
.catch(() => {
|
|
59
|
+
// If the first attempt failed, then make another req using the fallback
|
|
60
|
+
authObj.authenticate({ fallback: true }).then((resp) => {
|
|
61
|
+
auth = resp;
|
|
62
|
+
grabSheets(auth, project, directory, forceStr).then(() =>
|
|
63
|
+
resolveFinal()
|
|
64
|
+
);
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
})
|
|
68
|
+
.catch(() => {
|
|
69
|
+
// Failure if we fall back but there's no token
|
|
70
|
+
auth = authObj.task();
|
|
71
|
+
grabSheets(auth, project, directory, forceStr).then(() =>
|
|
72
|
+
resolveFinal()
|
|
73
|
+
);
|
|
50
74
|
});
|
|
51
|
-
|
|
52
|
-
.catch(() => {
|
|
53
|
-
// Failure if we fall back but there's no token
|
|
54
|
-
auth = authObj.task();
|
|
55
|
-
grabSheets(auth, project, directory, forceStr).then(() => resolveFinal());
|
|
56
|
-
});
|
|
57
|
-
})
|
|
75
|
+
});
|
|
58
76
|
};
|
|
59
77
|
|
|
60
78
|
let grabSheets = (auth, project, directory, forceStr) => {
|
|
61
79
|
return new Promise((resolveAll, rejectAll) => {
|
|
62
80
|
var sheetKeys = project.GOOGLE_SHEETS;
|
|
63
|
-
if (!sheetKeys){
|
|
81
|
+
if (!sheetKeys) {
|
|
64
82
|
// Try the old way
|
|
65
83
|
sheetKeys = project.sheets;
|
|
66
84
|
}
|
|
@@ -91,7 +109,14 @@ let grabSheets = (auth, project, directory, forceStr) => {
|
|
|
91
109
|
});
|
|
92
110
|
};
|
|
93
111
|
|
|
94
|
-
let getSheet = async (
|
|
112
|
+
let getSheet = async (
|
|
113
|
+
resolve,
|
|
114
|
+
reject,
|
|
115
|
+
auth,
|
|
116
|
+
spreadsheetId,
|
|
117
|
+
directory,
|
|
118
|
+
forceStr
|
|
119
|
+
) => {
|
|
95
120
|
let output = await api.spreadsheets
|
|
96
121
|
.get({
|
|
97
122
|
auth,
|
|
@@ -116,6 +141,20 @@ let getSheet = async (resolve, reject, auth, spreadsheetId, directory, forceStr)
|
|
|
116
141
|
});
|
|
117
142
|
var { values } = response.data;
|
|
118
143
|
var header = values.shift();
|
|
144
|
+
var swapIndexes = [];
|
|
145
|
+
if (languageSwap) {
|
|
146
|
+
for (var i = 0; i < header.length; i++) {
|
|
147
|
+
var lastIndex = header[i].lastIndexOf("_");
|
|
148
|
+
if (lastIndex > -1) {
|
|
149
|
+
// It has an underscore! Check for match
|
|
150
|
+
var substring = header[i].substring(lastIndex + 1).toLowerCase();
|
|
151
|
+
if (substring === languageSwap) {
|
|
152
|
+
// Match! Save the swap index
|
|
153
|
+
swapIndexes.push(i - 1);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
119
158
|
var isKeyed = header.indexOf("key") > -1;
|
|
120
159
|
var isValued = header.indexOf("value") > -1;
|
|
121
160
|
var out = isKeyed ? {} : [];
|
|
@@ -126,8 +165,20 @@ let getSheet = async (resolve, reject, auth, spreadsheetId, directory, forceStr)
|
|
|
126
165
|
var rowSkip = true;
|
|
127
166
|
row.forEach(function (value, i) {
|
|
128
167
|
var key = header[i];
|
|
168
|
+
// Handle language swap
|
|
169
|
+
if (swapIndexes.indexOf(i) > -1) {
|
|
170
|
+
// If we have a swap index, swap the value
|
|
171
|
+
// NOTE: This assumes the translation is ALWAYS one cell to the right
|
|
172
|
+
try {
|
|
173
|
+
if (row[i + 1]) {
|
|
174
|
+
value = row[i + 1];
|
|
175
|
+
}
|
|
176
|
+
} catch (err) {
|
|
177
|
+
// Not great but ok
|
|
178
|
+
}
|
|
179
|
+
}
|
|
129
180
|
obj[key] = cast(value, forceStr);
|
|
130
|
-
if (value && value !== "FALSE"){
|
|
181
|
+
if (value && value !== "FALSE") {
|
|
131
182
|
rowSkip = false;
|
|
132
183
|
}
|
|
133
184
|
});
|