@jdeighan/coffee-utils 7.0.19 → 7.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/package.json +1 -1
- package/src/fs_utils.coffee +32 -18
- package/src/fs_utils.js +39 -21
package/package.json
CHANGED
package/src/fs_utils.coffee
CHANGED
@@ -7,7 +7,7 @@ import NReadLines from 'n-readlines'
|
|
7
7
|
|
8
8
|
import {
|
9
9
|
assert, undef, pass, rtrim, error, isEmpty, nonEmpty,
|
10
|
-
isString, isArray, isRegExp, isFunction, croak,
|
10
|
+
isString, isArray, isRegExp, isFunction, croak, OL,
|
11
11
|
} from '@jdeighan/coffee-utils'
|
12
12
|
import {log, LOG} from '@jdeighan/coffee-utils/log'
|
13
13
|
import {debug} from '@jdeighan/coffee-utils/debug'
|
@@ -62,7 +62,12 @@ export isFile = (fullpath) ->
|
|
62
62
|
|
63
63
|
export isDir = (fullpath) ->
|
64
64
|
|
65
|
-
|
65
|
+
try
|
66
|
+
obj = fs.lstatSync(fullpath)
|
67
|
+
if !obj? then return false
|
68
|
+
return obj.isDirectory()
|
69
|
+
catch
|
70
|
+
return false
|
66
71
|
|
67
72
|
# ---------------------------------------------------------------------------
|
68
73
|
|
@@ -73,6 +78,16 @@ export isSimpleFileName = (path) ->
|
|
73
78
|
|
74
79
|
# ---------------------------------------------------------------------------
|
75
80
|
|
81
|
+
export fileStub = (path) ->
|
82
|
+
|
83
|
+
assert isString(path), "fileExt(): path not a string"
|
84
|
+
if lMatches = path.match(/^(.*)\.[A-Za-z0-9_]+$/)
|
85
|
+
return lMatches[1]
|
86
|
+
else
|
87
|
+
return ''
|
88
|
+
|
89
|
+
# ---------------------------------------------------------------------------
|
90
|
+
|
76
91
|
export fileExt = (path) ->
|
77
92
|
|
78
93
|
assert isString(path), "fileExt(): path not a string"
|
@@ -342,20 +357,27 @@ export shortenPath = (path) ->
|
|
342
357
|
export parseSource = (source) ->
|
343
358
|
# --- returns {
|
344
359
|
# dir
|
345
|
-
# filename
|
360
|
+
# filename
|
361
|
+
# fullpath
|
346
362
|
# stub
|
347
363
|
# ext
|
348
364
|
# }
|
365
|
+
# --- NOTE: source may be a file URL, e.g. import.meta.url
|
349
366
|
|
350
367
|
debug "enter parseSource()"
|
368
|
+
assert isString(source),\
|
369
|
+
"parseSource(): source not a string: #{OL(source)}"
|
351
370
|
if source == 'unit test'
|
371
|
+
croak "A source of 'unit test' is deprecated"
|
372
|
+
if source.match(/^file\:\/\//)
|
373
|
+
source = urllib.fileURLToPath(source)
|
374
|
+
|
375
|
+
if isDir(source)
|
352
376
|
hSourceInfo = {
|
353
|
-
|
354
|
-
|
377
|
+
dir: source
|
378
|
+
fullpath: source
|
355
379
|
}
|
356
|
-
|
357
|
-
return hSourceInfo
|
358
|
-
try
|
380
|
+
else
|
359
381
|
hInfo = pathlib.parse(source)
|
360
382
|
if hInfo.dir
|
361
383
|
dir = mkpath(hInfo.dir) # change \ to /
|
@@ -372,16 +394,8 @@ export parseSource = (source) ->
|
|
372
394
|
stub: hInfo.name
|
373
395
|
ext: hInfo.ext
|
374
396
|
}
|
375
|
-
|
376
|
-
|
377
|
-
catch err
|
378
|
-
hSourceInfo = {
|
379
|
-
filename: source
|
380
|
-
stub: source
|
381
|
-
error: err.message
|
382
|
-
}
|
383
|
-
debug "return '#{err.message} from parseSource()", hSourceInfo
|
384
|
-
return hSourceInfo
|
397
|
+
debug "return from parseSource()", hSourceInfo
|
398
|
+
return hSourceInfo
|
385
399
|
|
386
400
|
# ---------------------------------------------------------------------------
|
387
401
|
# backup - back up a file
|
package/src/fs_utils.js
CHANGED
@@ -22,7 +22,8 @@ import {
|
|
22
22
|
isArray,
|
23
23
|
isRegExp,
|
24
24
|
isFunction,
|
25
|
-
croak
|
25
|
+
croak,
|
26
|
+
OL
|
26
27
|
} from '@jdeighan/coffee-utils';
|
27
28
|
|
28
29
|
import {
|
@@ -84,7 +85,16 @@ export var isFile = function(fullpath) {
|
|
84
85
|
|
85
86
|
// ---------------------------------------------------------------------------
|
86
87
|
export var isDir = function(fullpath) {
|
87
|
-
|
88
|
+
var obj;
|
89
|
+
try {
|
90
|
+
obj = fs.lstatSync(fullpath);
|
91
|
+
if (obj == null) {
|
92
|
+
return false;
|
93
|
+
}
|
94
|
+
return obj.isDirectory();
|
95
|
+
} catch (error1) {
|
96
|
+
return false;
|
97
|
+
}
|
88
98
|
};
|
89
99
|
|
90
100
|
// ---------------------------------------------------------------------------
|
@@ -94,6 +104,17 @@ export var isSimpleFileName = function(path) {
|
|
94
104
|
return !h.root && !h.dir && h.base;
|
95
105
|
};
|
96
106
|
|
107
|
+
// ---------------------------------------------------------------------------
|
108
|
+
export var fileStub = function(path) {
|
109
|
+
var lMatches;
|
110
|
+
assert(isString(path), "fileExt(): path not a string");
|
111
|
+
if (lMatches = path.match(/^(.*)\.[A-Za-z0-9_]+$/)) {
|
112
|
+
return lMatches[1];
|
113
|
+
} else {
|
114
|
+
return '';
|
115
|
+
}
|
116
|
+
};
|
117
|
+
|
97
118
|
// ---------------------------------------------------------------------------
|
98
119
|
export var fileExt = function(path) {
|
99
120
|
var lMatches;
|
@@ -401,23 +422,29 @@ export var shortenPath = function(path) {
|
|
401
422
|
|
402
423
|
// ---------------------------------------------------------------------------
|
403
424
|
export var parseSource = function(source) {
|
404
|
-
var dir,
|
425
|
+
var dir, hInfo, hSourceInfo;
|
405
426
|
// --- returns {
|
406
427
|
// dir
|
407
|
-
// filename
|
428
|
+
// filename
|
429
|
+
// fullpath
|
408
430
|
// stub
|
409
431
|
// ext
|
410
432
|
// }
|
433
|
+
// --- NOTE: source may be a file URL, e.g. import.meta.url
|
411
434
|
debug("enter parseSource()");
|
435
|
+
assert(isString(source), `parseSource(): source not a string: ${OL(source)}`);
|
412
436
|
if (source === 'unit test') {
|
437
|
+
croak("A source of 'unit test' is deprecated");
|
438
|
+
}
|
439
|
+
if (source.match(/^file\:\/\//)) {
|
440
|
+
source = urllib.fileURLToPath(source);
|
441
|
+
}
|
442
|
+
if (isDir(source)) {
|
413
443
|
hSourceInfo = {
|
414
|
-
|
415
|
-
|
444
|
+
dir: source,
|
445
|
+
fullpath: source
|
416
446
|
};
|
417
|
-
|
418
|
-
return hSourceInfo;
|
419
|
-
}
|
420
|
-
try {
|
447
|
+
} else {
|
421
448
|
hInfo = pathlib.parse(source);
|
422
449
|
if (hInfo.dir) {
|
423
450
|
dir = mkpath(hInfo.dir); // change \ to /
|
@@ -435,18 +462,9 @@ export var parseSource = function(source) {
|
|
435
462
|
ext: hInfo.ext
|
436
463
|
};
|
437
464
|
}
|
438
|
-
debug("return from parseSource()", hSourceInfo);
|
439
|
-
return hSourceInfo;
|
440
|
-
} catch (error1) {
|
441
|
-
err = error1;
|
442
|
-
hSourceInfo = {
|
443
|
-
filename: source,
|
444
|
-
stub: source,
|
445
|
-
error: err.message
|
446
|
-
};
|
447
|
-
debug(`return '${err.message} from parseSource()`, hSourceInfo);
|
448
|
-
return hSourceInfo;
|
449
465
|
}
|
466
|
+
debug("return from parseSource()", hSourceInfo);
|
467
|
+
return hSourceInfo;
|
450
468
|
};
|
451
469
|
|
452
470
|
// ---------------------------------------------------------------------------
|