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.
Files changed (2) hide show
  1. package/copy/sheets.js +72 -21
  2. 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.authenticate({ fallback: false }).then((resp) => {
43
- auth = resp;
44
- grabSheets(auth, project, directory, forceStr).then(() => resolveFinal()).catch(() => {
45
- // If the first attempt failed, then make another req using the fallback
46
- authObj.authenticate({ fallback: true }).then((resp) => {
47
- auth = resp;
48
- grabSheets(auth, project, directory, forceStr).then(() => resolveFinal());
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 (resolve, reject, auth, spreadsheetId, directory, forceStr) => {
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
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sfc-utils",
3
- "version": "1.4.77",
3
+ "version": "1.4.78",
4
4
  "author": "ewagstaff <evanjwagstaff@gmail.com>",
5
5
  "dependencies": {
6
6
  "archieml": "^0.4.2",