whet 0.0.20 → 0.0.22
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/bin/whet/Project.js +15 -1
- package/bin/whet/Whet.js +1 -1
- package/bin/whet/route/Router.d.ts +15 -5
- package/bin/whet/route/Router.js +181 -149
- package/bin/whet/stones/Files.d.ts +5 -0
- package/bin/whet/stones/Files.js +80 -69
- package/package.json +1 -1
package/bin/whet/Project.js
CHANGED
|
@@ -36,9 +36,23 @@ class Project extends Register.inherits() {
|
|
|
36
36
|
Error.prepareStackTrace = oldValue;
|
|
37
37
|
file = decodeURI(file);
|
|
38
38
|
file = StringTools.replace(file, "file:///", "");
|
|
39
|
-
|
|
39
|
+
console.log("src/whet/Project.hx:38:",file);
|
|
40
|
+
console.log("src/whet/Project.hx:39:",process.cwd());
|
|
41
|
+
var str = Path.relative(process.cwd(), file);
|
|
42
|
+
if (str.length > 0) {
|
|
43
|
+
str = Path.posix.normalize(str);
|
|
44
|
+
str = StringTools.replace(str, "\\", "/");
|
|
45
|
+
};
|
|
46
|
+
console.log("src/whet/Project.hx:40:",str);
|
|
47
|
+
var str = Path.relative(process.cwd(), file);
|
|
48
|
+
if (str.length > 0) {
|
|
49
|
+
str = Path.posix.normalize(str);
|
|
50
|
+
str = StringTools.replace(str, "\\", "/");
|
|
51
|
+
};
|
|
52
|
+
var id = str;
|
|
40
53
|
var dir = id.substring(0, id.lastIndexOf("/") + 1);
|
|
41
54
|
this.rootDir = (dir.length == 0) ? "./" : dir;
|
|
55
|
+
console.log("src/whet/Project.hx:42:",this.rootDir);
|
|
42
56
|
} else {
|
|
43
57
|
this.rootDir = config.rootDir;
|
|
44
58
|
};
|
package/bin/whet/Whet.js
CHANGED
|
@@ -12,7 +12,7 @@ const $global = Register.$global
|
|
|
12
12
|
export const Whet_Fields_ = Register.global("$hxClasses")["whet._Whet.Whet_Fields_"] =
|
|
13
13
|
class Whet_Fields_ {
|
|
14
14
|
static main() {
|
|
15
|
-
Whet_Fields_.program.enablePositionalOptions().passThroughOptions().description("Project tooling.").usage("[options] [command] [+ [command]...]").version("0.0.
|
|
15
|
+
Whet_Fields_.program.enablePositionalOptions().passThroughOptions().description("Project tooling.").usage("[options] [command] [+ [command]...]").version("0.0.21", "-v, --version").allowUnknownOption(true).showSuggestionAfterError(true).option("-p, --project <file>", "project to run", "Project.mjs").option("-l, --log-level <level>", "log level, a string/number", "info").option("--no-pretty", "disable pretty logging").exitOverride();
|
|
16
16
|
try {
|
|
17
17
|
Whet_Fields_.program.parse();
|
|
18
18
|
}catch (_g) {
|
|
@@ -14,20 +14,30 @@ export declare class Router {
|
|
|
14
14
|
* Find data sources routed under `pattern`.
|
|
15
15
|
* @param pattern A glob pattern to search for.
|
|
16
16
|
*/
|
|
17
|
-
get(pattern?: MinimatchType): Promise<RouteResult[]>
|
|
17
|
+
get(pattern?: null | MinimatchType): Promise<RouteResult[]>
|
|
18
|
+
protected getResults(mainFilters: Filter[], results: RouteResult[]): Promise<RouteResult[]>
|
|
18
19
|
|
|
19
20
|
/**
|
|
20
21
|
* Get combined hash of all sources that fit the `pattern`.
|
|
21
22
|
*/
|
|
22
|
-
getHash(pattern?: MinimatchType): Promise<SourceHash>
|
|
23
|
+
getHash(pattern?: null | MinimatchType): Promise<SourceHash>
|
|
23
24
|
|
|
24
25
|
/**
|
|
25
26
|
* Save files filtered by `pattern` into provided `saveInto` folder.
|
|
26
27
|
*/
|
|
27
28
|
saveInto(pattern: MinimatchType, saveInto: string, clearFirst?: boolean): Promise<any>
|
|
28
|
-
listContents(pattern?: MinimatchType): Promise<string>
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
listContents(pattern?: null | MinimatchType): Promise<string>
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export type Filter = {
|
|
33
|
+
filter: Minimatch,
|
|
34
|
+
inProgress: boolean,
|
|
35
|
+
pathSoFar: string[],
|
|
36
|
+
remDirs: Minimatch[]
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export declare class Filters {
|
|
40
|
+
protected static isPathPossible($this: Filter[], f: Filter): boolean
|
|
31
41
|
}
|
|
32
42
|
|
|
33
43
|
export type RoutePath = {
|
package/bin/whet/route/Router.js
CHANGED
|
@@ -25,48 +25,167 @@ class Router extends Register.inherits() {
|
|
|
25
25
|
* @param pattern A glob pattern to search for.
|
|
26
26
|
*/
|
|
27
27
|
get(pattern) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
return this.getResults([{"pathSoFar": [], "filter": (pattern != null) ? MinimatchType_Fields_.makeMinimatch(pattern) : null, "inProgress": true, "remDirs": []}], []);
|
|
29
|
+
}
|
|
30
|
+
getResults(mainFilters, results) {
|
|
31
31
|
var _gthis = this;
|
|
32
|
-
var filter = MinimatchType_Fields_.makeMinimatch(pattern);
|
|
33
32
|
return new Promise(function (res, rej) {
|
|
34
|
-
var
|
|
35
|
-
var _g =
|
|
36
|
-
var _g1 =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
33
|
+
var allRouteProms = [];
|
|
34
|
+
var _g = 0;
|
|
35
|
+
var _g1 = _gthis.routes;
|
|
36
|
+
while (_g < _g1.length) {
|
|
37
|
+
var route = _g1[_g];
|
|
38
|
+
++_g;
|
|
39
|
+
var result = new Array(mainFilters.length);
|
|
40
|
+
var _g2 = 0;
|
|
41
|
+
var _g3 = mainFilters.length;
|
|
42
|
+
while (_g2 < _g3) {
|
|
43
|
+
var i = _g2++;
|
|
44
|
+
var f = mainFilters[i];
|
|
45
|
+
result[i] = {"filter": f.filter, "pathSoFar": f.pathSoFar.slice(), "inProgress": f.inProgress, "remDirs": f.remDirs.slice()};
|
|
46
|
+
};
|
|
47
|
+
var routeFilters = [result];
|
|
48
|
+
var possible;
|
|
49
|
+
var id = route.routeUnder;
|
|
50
|
+
if (id.length == 0 || id.charCodeAt(id.length - 1) == 47) {
|
|
51
|
+
var this1 = routeFilters[0];
|
|
52
|
+
var dir = route.routeUnder;
|
|
53
|
+
if (dir.length == 0 || dir == "./") {
|
|
54
|
+
possible = true;
|
|
55
|
+
} else {
|
|
56
|
+
var _this = dir.split("/");
|
|
57
|
+
var _g4 = [];
|
|
58
|
+
var _g5 = 0;
|
|
59
|
+
while (_g5 < _this.length) {
|
|
60
|
+
var v = _this[_g5];
|
|
61
|
+
++_g5;
|
|
62
|
+
if (v.length > 0) {
|
|
63
|
+
_g4.push(v);
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
var res1 = true;
|
|
67
|
+
var i1 = this1.length;
|
|
68
|
+
while (--i1 >= 0) {
|
|
69
|
+
var f1 = this1[i1];
|
|
70
|
+
if (f1.inProgress) {
|
|
71
|
+
if (f1.remDirs.length != 0) {
|
|
72
|
+
var i2 = _g4.length;
|
|
73
|
+
while (--i2 >= 0) {
|
|
74
|
+
var _g6 = 0;
|
|
75
|
+
var _g7 = f1.remDirs;
|
|
76
|
+
while (_g6 < _g7.length) if (_g7[_g6++].match(_g4[i2] + "/")) {
|
|
77
|
+
_g4.splice(i2, 1);
|
|
78
|
+
break;
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
};
|
|
82
|
+
f1.pathSoFar = f1.pathSoFar.concat(_g4);
|
|
83
|
+
if (!(f1.filter == null || Filters.isPathPossible(this1, f1))) {
|
|
84
|
+
res1 = false;
|
|
85
|
+
break;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
};
|
|
89
|
+
possible = res1;
|
|
90
|
+
};
|
|
91
|
+
} else {
|
|
92
|
+
var parts = route.routeUnder.split("/");
|
|
93
|
+
var res2 = true;
|
|
94
|
+
var i3 = routeFilters[0].length;
|
|
95
|
+
while (--i3 >= 0) {
|
|
96
|
+
var f2 = routeFilters[0][i3];
|
|
97
|
+
if (f2.inProgress) {
|
|
98
|
+
f2.inProgress = false;
|
|
99
|
+
if (f2.remDirs.length != 0) {
|
|
100
|
+
var i4 = parts.length;
|
|
101
|
+
while (--i4 >= 0) {
|
|
102
|
+
var _g8 = 0;
|
|
103
|
+
var _g9 = f2.remDirs;
|
|
104
|
+
while (_g8 < _g9.length) if (_g9[_g8++].match(parts[i4] + "/")) {
|
|
105
|
+
parts.splice(i4, 1);
|
|
106
|
+
break;
|
|
107
|
+
};
|
|
55
108
|
};
|
|
56
|
-
tmp = Path.posix.join(dir, id);
|
|
57
|
-
} else {
|
|
58
|
-
tmp = route[0].routeUnder;
|
|
59
109
|
};
|
|
60
|
-
|
|
61
|
-
if (filter.match(
|
|
62
|
-
|
|
110
|
+
f2.pathSoFar = f2.pathSoFar.concat(parts);
|
|
111
|
+
if (!(f2.filter == null || f2.filter.match(Path.posix.join(...f2.pathSoFar)))) {
|
|
112
|
+
res2 = false;
|
|
113
|
+
break;
|
|
63
114
|
};
|
|
64
115
|
};
|
|
65
116
|
};
|
|
66
|
-
|
|
117
|
+
possible = res2;
|
|
118
|
+
};
|
|
119
|
+
if (!possible) {
|
|
120
|
+
continue;
|
|
121
|
+
};
|
|
122
|
+
if (route.filter != null || route.extractDirs != null) {
|
|
123
|
+
var f3 = route.filter;
|
|
124
|
+
var extractDir = route.extractDirs;
|
|
125
|
+
if (extractDir != null && routeFilters[0].length > 0) {
|
|
126
|
+
routeFilters[0][routeFilters[0].length - 1].remDirs.push(extractDir);
|
|
127
|
+
};
|
|
128
|
+
routeFilters[0].push({"pathSoFar": [], "filter": f3, "inProgress": true, "remDirs": []});
|
|
129
|
+
};
|
|
130
|
+
var prom;
|
|
131
|
+
if (((route.source) instanceof Stone)) {
|
|
132
|
+
var stone = [route.source];
|
|
133
|
+
prom = stone[0].list().then((function (stone, routeFilters) {
|
|
134
|
+
return function (list) {
|
|
135
|
+
var _g = 0;
|
|
136
|
+
while (_g < list.length) {
|
|
137
|
+
var sourceId = list[_g];
|
|
138
|
+
++_g;
|
|
139
|
+
var result = new Array(routeFilters[0].length);
|
|
140
|
+
var _g1 = 0;
|
|
141
|
+
var _g2 = routeFilters[0].length;
|
|
142
|
+
while (_g1 < _g2) {
|
|
143
|
+
var i = _g1++;
|
|
144
|
+
var f = routeFilters[0][i];
|
|
145
|
+
result[i] = {"filter": f.filter, "pathSoFar": f.pathSoFar.slice(), "inProgress": f.inProgress, "remDirs": f.remDirs.slice()};
|
|
146
|
+
};
|
|
147
|
+
var finalFilters = result;
|
|
148
|
+
var parts = sourceId.split("/");
|
|
149
|
+
var res = true;
|
|
150
|
+
var i1 = finalFilters.length;
|
|
151
|
+
while (--i1 >= 0) {
|
|
152
|
+
var f1 = finalFilters[i1];
|
|
153
|
+
if (f1.inProgress) {
|
|
154
|
+
f1.inProgress = false;
|
|
155
|
+
if (f1.remDirs.length != 0) {
|
|
156
|
+
var i2 = parts.length;
|
|
157
|
+
while (--i2 >= 0) {
|
|
158
|
+
var _g3 = 0;
|
|
159
|
+
var _g4 = f1.remDirs;
|
|
160
|
+
while (_g3 < _g4.length) if (_g4[_g3++].match(parts[i2] + "/")) {
|
|
161
|
+
parts.splice(i2, 1);
|
|
162
|
+
break;
|
|
163
|
+
};
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
f1.pathSoFar = f1.pathSoFar.concat(parts);
|
|
167
|
+
if (!(f1.filter == null || f1.filter.match(Path.posix.join(...f1.pathSoFar)))) {
|
|
168
|
+
res = false;
|
|
169
|
+
break;
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
if (res) {
|
|
174
|
+
var serveId = Path.posix.join(...finalFilters[0].pathSoFar);
|
|
175
|
+
results.push(new RouteResult(serveId, sourceId, stone[0]));
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
};
|
|
179
|
+
})(stone, routeFilters));
|
|
180
|
+
} else if (((route.source) instanceof Router)) {
|
|
181
|
+
prom = route.source.getResults(routeFilters[0], results);
|
|
182
|
+
} else {
|
|
183
|
+
throw new Error("Router source must be a Stone or a Router.");
|
|
184
|
+
};
|
|
185
|
+
allRouteProms.push(prom);
|
|
67
186
|
};
|
|
68
|
-
Promise.all(
|
|
69
|
-
res(
|
|
187
|
+
Promise.all(allRouteProms).then(function (_) {
|
|
188
|
+
res(results);
|
|
70
189
|
});
|
|
71
190
|
});
|
|
72
191
|
}
|
|
@@ -75,9 +194,6 @@ class Router extends Register.inherits() {
|
|
|
75
194
|
* Get combined hash of all sources that fit the `pattern`.
|
|
76
195
|
*/
|
|
77
196
|
getHash(pattern) {
|
|
78
|
-
if (pattern == null) {
|
|
79
|
-
pattern = "**";
|
|
80
|
-
};
|
|
81
197
|
return this.get(pattern).then(function (items) {
|
|
82
198
|
var uniqueStones = [];
|
|
83
199
|
var _g = 0;
|
|
@@ -128,9 +244,6 @@ class Router extends Register.inherits() {
|
|
|
128
244
|
});
|
|
129
245
|
}
|
|
130
246
|
listContents(pattern) {
|
|
131
|
-
if (pattern == null) {
|
|
132
|
-
pattern = "**";
|
|
133
|
-
};
|
|
134
247
|
return this.get(pattern).then(function (files) {
|
|
135
248
|
var result = new Array(files.length);
|
|
136
249
|
var _g = 0;
|
|
@@ -151,122 +264,41 @@ class Router extends Register.inherits() {
|
|
|
151
264
|
return result.join("\n");
|
|
152
265
|
});
|
|
153
266
|
}
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
var stone = route.source;
|
|
157
|
-
return stone.list().then(function (list) {
|
|
158
|
-
var arr = [];
|
|
159
|
-
var _g = 0;
|
|
160
|
-
while (_g < list.length) {
|
|
161
|
-
var path = list[_g];
|
|
162
|
-
++_g;
|
|
163
|
-
var serveId = null;
|
|
164
|
-
if (route.filter == null || route.filter.match(path)) {
|
|
165
|
-
serveId = path;
|
|
166
|
-
if (route.extractDirs != null) {
|
|
167
|
-
var dir = path;
|
|
168
|
-
while (true) {
|
|
169
|
-
dir = dir.substring(0, dir.lastIndexOf("/"));
|
|
170
|
-
if (route.extractDirs.match(dir + "/")) {
|
|
171
|
-
var directory = dir + "/";
|
|
172
|
-
if (!(directory.length == 0 || directory.charCodeAt(directory.length - 1) == 47)) {
|
|
173
|
-
throw new Error("\"" + directory + "\" is not a directory.");
|
|
174
|
-
};
|
|
175
|
-
var serveId1;
|
|
176
|
-
var dir1 = path.substring(0, path.lastIndexOf("/") + 1);
|
|
177
|
-
serveId1 = ((dir1.length == 0) ? "./" : dir1).indexOf(directory) == 0;
|
|
178
|
-
serveId = (serveId1) ? path.substring(directory.length) : null;
|
|
179
|
-
break;
|
|
180
|
-
};
|
|
181
|
-
if (!(dir.length > 0)) {
|
|
182
|
-
break;
|
|
183
|
-
};
|
|
184
|
-
};
|
|
185
|
-
};
|
|
186
|
-
};
|
|
187
|
-
var serveId2 = serveId;
|
|
188
|
-
if (serveId2 != null) {
|
|
189
|
-
arr.push(new RouteResult(serveId2, path, stone));
|
|
190
|
-
};
|
|
191
|
-
};
|
|
192
|
-
return arr;
|
|
193
|
-
});
|
|
194
|
-
} else if (((route.source) instanceof Router)) {
|
|
195
|
-
return route.source.get().then(function (list) {
|
|
196
|
-
var arr = [];
|
|
197
|
-
var _g = 0;
|
|
198
|
-
while (_g < list.length) {
|
|
199
|
-
var result = list[_g];
|
|
200
|
-
++_g;
|
|
201
|
-
var path = result.serveId;
|
|
202
|
-
var serveId = null;
|
|
203
|
-
if (route.filter == null || route.filter.match(path)) {
|
|
204
|
-
serveId = path;
|
|
205
|
-
if (route.extractDirs != null) {
|
|
206
|
-
var dir = path;
|
|
207
|
-
while (true) {
|
|
208
|
-
dir = dir.substring(0, dir.lastIndexOf("/"));
|
|
209
|
-
if (route.extractDirs.match(dir + "/")) {
|
|
210
|
-
var directory = dir + "/";
|
|
211
|
-
if (!(directory.length == 0 || directory.charCodeAt(directory.length - 1) == 47)) {
|
|
212
|
-
throw new Error("\"" + directory + "\" is not a directory.");
|
|
213
|
-
};
|
|
214
|
-
var serveId1;
|
|
215
|
-
var dir1 = path.substring(0, path.lastIndexOf("/") + 1);
|
|
216
|
-
serveId1 = ((dir1.length == 0) ? "./" : dir1).indexOf(directory) == 0;
|
|
217
|
-
serveId = (serveId1) ? path.substring(directory.length) : null;
|
|
218
|
-
break;
|
|
219
|
-
};
|
|
220
|
-
if (!(dir.length > 0)) {
|
|
221
|
-
break;
|
|
222
|
-
};
|
|
223
|
-
};
|
|
224
|
-
};
|
|
225
|
-
};
|
|
226
|
-
var serveId2 = serveId;
|
|
227
|
-
if (serveId2 != null) {
|
|
228
|
-
result.serveId = serveId2;
|
|
229
|
-
arr.push(result);
|
|
230
|
-
};
|
|
231
|
-
};
|
|
232
|
-
return arr;
|
|
233
|
-
});
|
|
234
|
-
} else {
|
|
235
|
-
throw new Error("Router source must be a Stone or a Router.");
|
|
236
|
-
};
|
|
267
|
+
static get __name__() {
|
|
268
|
+
return "whet.route.Router"
|
|
237
269
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
if (!(dir.length > 0)) {
|
|
258
|
-
break;
|
|
259
|
-
};
|
|
260
|
-
};
|
|
270
|
+
get __class__() {
|
|
271
|
+
return Router
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
export const Filters = Register.global("$hxClasses")["whet.route._Router.Filters"] =
|
|
277
|
+
class Filters {
|
|
278
|
+
static isPathPossible(this1, f) {
|
|
279
|
+
if (f.filter.options.matchBase) {
|
|
280
|
+
return true;
|
|
281
|
+
};
|
|
282
|
+
var _g = 0;
|
|
283
|
+
var _g1 = f.filter.set;
|
|
284
|
+
while (_g < _g1.length) if (f.filter.matchOne(f.pathSoFar, _g1[_g++], true)) {
|
|
285
|
+
if (f.filter.options.flipNegate) {
|
|
286
|
+
return true;
|
|
287
|
+
} else {
|
|
288
|
+
return true != f.filter.negate;
|
|
261
289
|
};
|
|
262
290
|
};
|
|
263
|
-
|
|
291
|
+
if (f.filter.options.flipNegate) {
|
|
292
|
+
return false;
|
|
293
|
+
} else {
|
|
294
|
+
return false != f.filter.negate;
|
|
295
|
+
};
|
|
264
296
|
}
|
|
265
297
|
static get __name__() {
|
|
266
|
-
return "whet.route.
|
|
298
|
+
return "whet.route._Router.Filters_Impl_"
|
|
267
299
|
}
|
|
268
300
|
get __class__() {
|
|
269
|
-
return
|
|
301
|
+
return Filters
|
|
270
302
|
}
|
|
271
303
|
}
|
|
272
304
|
|
|
@@ -11,6 +11,11 @@ export declare class Files extends Stone<FilesConfig> {
|
|
|
11
11
|
protected initConfig(): void
|
|
12
12
|
list(): Promise<string[]>
|
|
13
13
|
protected generate(hash: SourceHash): Promise<SourceData[]>
|
|
14
|
+
protected walk<T>(onFile: ((arg0: string) => T), onDirFile: ((arg0: string, arg1: string) => T)): Promise<T[]>
|
|
15
|
+
protected fromCwd(file: string, dir: string): {
|
|
16
|
+
id: string,
|
|
17
|
+
pathId: string
|
|
18
|
+
}
|
|
14
19
|
}
|
|
15
20
|
|
|
16
21
|
export type FilesConfig = {
|
package/bin/whet/stones/Files.js
CHANGED
|
@@ -17,98 +17,109 @@ class Files extends Register.inherits(Stone) {
|
|
|
17
17
|
}
|
|
18
18
|
list() {
|
|
19
19
|
var _gthis = this;
|
|
20
|
-
var
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
var onDirFile = function (dir, dirFile) {
|
|
21
|
+
var pathId = IdUtils.fromCwdPath(dirFile, RootDir.fromProject(_gthis.project));
|
|
22
|
+
if (!(dir.length == 0 || dir.charCodeAt(dir.length - 1) == 47)) {
|
|
23
|
+
throw new Error("\"" + dir + "\" is not a directory.");
|
|
24
|
+
};
|
|
25
|
+
var inlobj_id;
|
|
26
|
+
var dir1 = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
27
|
+
inlobj_id = ((dir1.length == 0) ? "./" : dir1).indexOf(dir) == 0;
|
|
28
|
+
return (inlobj_id) ? pathId.substring(dir.length) : null;
|
|
29
|
+
};
|
|
30
|
+
var files = [];
|
|
31
|
+
var dirs = [];
|
|
32
|
+
var _g = 0;
|
|
33
|
+
var _g1 = MaybeArray_Fields_.makeArray(this.config.paths);
|
|
34
|
+
while (_g < _g1.length) {
|
|
35
|
+
var path = [_g1[_g]];
|
|
36
|
+
++_g;
|
|
26
37
|
if (path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47) {
|
|
27
|
-
|
|
38
|
+
dirs.push(Utils.listDirectoryFiles(this.cwdPath(path[0]), this.config.recursive).then((function (path) {
|
|
28
39
|
return function (arr) {
|
|
29
|
-
var result = new Array(arr.length);
|
|
30
40
|
var _g = 0;
|
|
31
|
-
|
|
32
|
-
while (_g < _g1) {
|
|
33
|
-
var i = _g++;
|
|
34
|
-
var pathId = IdUtils.fromCwdPath(arr[i], RootDir.fromProject(_gthis.project));
|
|
35
|
-
if (!(path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47)) {
|
|
36
|
-
throw new Error("\"" + path[0] + "\" is not a directory.");
|
|
37
|
-
};
|
|
38
|
-
var tmp;
|
|
39
|
-
var dir = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
40
|
-
tmp = ((dir.length == 0) ? "./" : dir).indexOf(path[0]) == 0;
|
|
41
|
-
result[i] = (tmp) ? pathId.substring(path[0].length) : null;
|
|
42
|
-
};
|
|
43
|
-
return result;
|
|
41
|
+
while (_g < arr.length) files.push(onDirFile(path[0], arr[_g++]));
|
|
44
42
|
};
|
|
45
43
|
})(path)));
|
|
46
44
|
} else {
|
|
47
45
|
var id = path[0];
|
|
48
|
-
|
|
46
|
+
files.push(id.substring(id.lastIndexOf("/") + 1));
|
|
49
47
|
};
|
|
50
48
|
};
|
|
51
|
-
return Promise.all(
|
|
52
|
-
|
|
53
|
-
var _g_current = 0;
|
|
54
|
-
while (_g_current < allPaths.length) {
|
|
55
|
-
var x = Register.iter(allPaths[_g_current++]);
|
|
56
|
-
while (x.hasNext()) _g.push(x.next());
|
|
57
|
-
};
|
|
58
|
-
return _g;
|
|
49
|
+
return Promise.all(dirs).then(function (_) {
|
|
50
|
+
return files;
|
|
59
51
|
});
|
|
60
52
|
}
|
|
61
53
|
generate(hash) {
|
|
62
54
|
var _gthis = this;
|
|
63
|
-
var
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
55
|
+
var onDirFile = function (dir, dirFile) {
|
|
56
|
+
var pathId = IdUtils.fromCwdPath(dirFile, RootDir.fromProject(_gthis.project));
|
|
57
|
+
if (!(dir.length == 0 || dir.charCodeAt(dir.length - 1) == 47)) {
|
|
58
|
+
throw new Error("\"" + dir + "\" is not a directory.");
|
|
59
|
+
};
|
|
60
|
+
var p_id;
|
|
61
|
+
var dir1 = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
62
|
+
p_id = ((dir1.length == 0) ? "./" : dir1).indexOf(dir) == 0;
|
|
63
|
+
return SourceData.fromFile((p_id) ? pathId.substring(dir.length) : null, dirFile, pathId);
|
|
64
|
+
};
|
|
65
|
+
var files = [];
|
|
66
|
+
var dirs = [];
|
|
67
|
+
var _g = 0;
|
|
68
|
+
var _g1 = MaybeArray_Fields_.makeArray(this.config.paths);
|
|
69
|
+
while (_g < _g1.length) {
|
|
70
|
+
var path = [_g1[_g]];
|
|
71
|
+
++_g;
|
|
69
72
|
if (path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47) {
|
|
70
|
-
|
|
73
|
+
dirs.push(Utils.listDirectoryFiles(this.cwdPath(path[0]), this.config.recursive).then((function (path) {
|
|
71
74
|
return function (arr) {
|
|
72
|
-
var _g =
|
|
73
|
-
|
|
74
|
-
while (_g1 < arr.length) {
|
|
75
|
-
var file = arr[_g1];
|
|
76
|
-
++_g1;
|
|
77
|
-
var pathId = IdUtils.fromCwdPath(file, RootDir.fromProject(_gthis.project));
|
|
78
|
-
if (!(path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47)) {
|
|
79
|
-
throw new Error("\"" + path[0] + "\" is not a directory.");
|
|
80
|
-
};
|
|
81
|
-
var id;
|
|
82
|
-
var dir = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
83
|
-
id = ((dir.length == 0) ? "./" : dir).indexOf(path[0]) == 0;
|
|
84
|
-
_g.push(SourceData.fromFile((id) ? pathId.substring(path[0].length) : null, file, pathId));
|
|
85
|
-
};
|
|
86
|
-
return _g;
|
|
87
|
-
};
|
|
88
|
-
})(path)).then((function () {
|
|
89
|
-
return function (f) {
|
|
90
|
-
return Promise.all(f);
|
|
75
|
+
var _g = 0;
|
|
76
|
+
while (_g < arr.length) files.push(onDirFile(path[0], arr[_g++]));
|
|
91
77
|
};
|
|
92
|
-
})()));
|
|
78
|
+
})(path)));
|
|
93
79
|
} else {
|
|
94
80
|
var id = path[0];
|
|
95
|
-
|
|
96
|
-
return function (src) {
|
|
97
|
-
return [src];
|
|
98
|
-
};
|
|
99
|
-
})()));
|
|
81
|
+
files.push(SourceData.fromFile(id.substring(id.lastIndexOf("/") + 1), _gthis.cwdPath(path[0]), path[0]));
|
|
100
82
|
};
|
|
101
83
|
};
|
|
102
|
-
return Promise.all(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
84
|
+
return Promise.all(dirs).then(function (_) {
|
|
85
|
+
return files;
|
|
86
|
+
}).then(function (fileProms) {
|
|
87
|
+
return Promise.all(fileProms);
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
walk(onFile, onDirFile) {
|
|
91
|
+
var files = [];
|
|
92
|
+
var dirs = [];
|
|
93
|
+
var _g = 0;
|
|
94
|
+
var _g1 = MaybeArray_Fields_.makeArray(this.config.paths);
|
|
95
|
+
while (_g < _g1.length) {
|
|
96
|
+
var path = [_g1[_g]];
|
|
97
|
+
++_g;
|
|
98
|
+
if (path[0].length == 0 || path[0].charCodeAt(path[0].length - 1) == 47) {
|
|
99
|
+
dirs.push(Utils.listDirectoryFiles(this.cwdPath(path[0]), this.config.recursive).then((function (path) {
|
|
100
|
+
return function (arr) {
|
|
101
|
+
var _g = 0;
|
|
102
|
+
while (_g < arr.length) files.push(onDirFile(path[0], arr[_g++]));
|
|
103
|
+
};
|
|
104
|
+
})(path)));
|
|
105
|
+
} else {
|
|
106
|
+
files.push(onFile(path[0]));
|
|
108
107
|
};
|
|
109
|
-
|
|
108
|
+
};
|
|
109
|
+
return Promise.all(dirs).then(function (_) {
|
|
110
|
+
return files;
|
|
110
111
|
});
|
|
111
112
|
}
|
|
113
|
+
fromCwd(file, dir) {
|
|
114
|
+
var pathId = IdUtils.fromCwdPath(file, RootDir.fromProject(this.project));
|
|
115
|
+
if (!(dir.length == 0 || dir.charCodeAt(dir.length - 1) == 47)) {
|
|
116
|
+
throw new Error("\"" + dir + "\" is not a directory.");
|
|
117
|
+
};
|
|
118
|
+
var tmp;
|
|
119
|
+
var dir1 = pathId.substring(0, pathId.lastIndexOf("/") + 1);
|
|
120
|
+
tmp = ((dir1.length == 0) ? "./" : dir1).indexOf(dir) == 0;
|
|
121
|
+
return {"pathId": pathId, "id": (tmp) ? pathId.substring(dir.length) : null};
|
|
122
|
+
}
|
|
112
123
|
static get __name__() {
|
|
113
124
|
return "whet.stones.Files"
|
|
114
125
|
}
|