@jdeighan/coffee-utils 11.0.21 → 11.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 +4 -4
- package/src/fs.coffee +35 -21
- package/src/fs.js +37 -25
- package/temp.js +0 -26
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jdeighan/coffee-utils",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "11.0.
|
|
4
|
+
"version": "11.0.22",
|
|
5
5
|
"description": "A set of utility functions for CoffeeScript",
|
|
6
6
|
"main": "coffee_utils.js",
|
|
7
7
|
"exports": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"verbose": false
|
|
33
33
|
},
|
|
34
34
|
"scripts": {
|
|
35
|
-
"build": "cls && rm -f
|
|
35
|
+
"build": "cls && rm -f ./*.js && coffee -c .",
|
|
36
36
|
"pretest": "cls && cielo -qfc ./test && coffee -c .",
|
|
37
37
|
"test": "npm run build && ava ./test/*.test.js && git status"
|
|
38
38
|
},
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"homepage": "https://github.com/johndeighan/coffee-utils#readme",
|
|
52
52
|
"dependencies": {
|
|
53
|
-
"@jdeighan/exceptions": "^1.0.
|
|
53
|
+
"@jdeighan/exceptions": "^1.0.19",
|
|
54
54
|
"cross-env": "^7.0.3",
|
|
55
55
|
"js-yaml": "^4.1.0",
|
|
56
56
|
"n-readlines": "^1.0.1",
|
|
@@ -58,6 +58,6 @@
|
|
|
58
58
|
"svelte": "^3.52.0"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@jdeighan/unit-tester": "^2.0.
|
|
61
|
+
"@jdeighan/unit-tester": "^2.0.43"
|
|
62
62
|
}
|
|
63
63
|
}
|
package/src/fs.coffee
CHANGED
|
@@ -7,7 +7,7 @@ import NReadLines from 'n-readlines'
|
|
|
7
7
|
|
|
8
8
|
import {assert, croak, LOG, fromTAML} from '@jdeighan/exceptions'
|
|
9
9
|
import {
|
|
10
|
-
undef, pass, defined, rtrim, isEmpty, nonEmpty,
|
|
10
|
+
undef, pass, defined, rtrim, isEmpty, nonEmpty, getOptions,
|
|
11
11
|
isString, isArray, isHash, isRegExp, isFunction, OL,
|
|
12
12
|
} from '@jdeighan/coffee-utils'
|
|
13
13
|
import {arrayToBlock} from '@jdeighan/coffee-utils/block'
|
|
@@ -23,6 +23,13 @@ export mydir = (url) ->
|
|
|
23
23
|
final = mkpath(dir)
|
|
24
24
|
return final
|
|
25
25
|
|
|
26
|
+
# ---------------------------------------------------------------------------
|
|
27
|
+
|
|
28
|
+
export projRoot = (url) ->
|
|
29
|
+
|
|
30
|
+
dir = mydir(url)
|
|
31
|
+
pathToPkg = pathTo('package.json', dir, {direction: 'up'})
|
|
32
|
+
|
|
26
33
|
# ---------------------------------------------------------------------------
|
|
27
34
|
# myfile() - pass argument import.meta.url and it will return
|
|
28
35
|
# the name of your file
|
|
@@ -44,18 +51,25 @@ export myfullpath = (url) ->
|
|
|
44
51
|
|
|
45
52
|
# ---------------------------------------------------------------------------
|
|
46
53
|
|
|
54
|
+
export getStats = (fullpath) ->
|
|
55
|
+
|
|
56
|
+
return fs.lstatSync(fullpath)
|
|
57
|
+
|
|
58
|
+
# ---------------------------------------------------------------------------
|
|
59
|
+
|
|
47
60
|
export isFile = (fullpath) ->
|
|
48
61
|
|
|
49
|
-
|
|
62
|
+
try
|
|
63
|
+
return getStats(fullpath).isFile()
|
|
64
|
+
catch
|
|
65
|
+
return false
|
|
50
66
|
|
|
51
67
|
# ---------------------------------------------------------------------------
|
|
52
68
|
|
|
53
69
|
export isDir = (fullpath) ->
|
|
54
70
|
|
|
55
71
|
try
|
|
56
|
-
|
|
57
|
-
if !obj? then return false
|
|
58
|
-
return obj.isDirectory()
|
|
72
|
+
return getStats(fullpath).isDirectory()
|
|
59
73
|
catch
|
|
60
74
|
return false
|
|
61
75
|
|
|
@@ -253,41 +267,41 @@ export forEachFile = (dir, cb, filt=undef, level=0) ->
|
|
|
253
267
|
|
|
254
268
|
# ---------------------------------------------------------------------------
|
|
255
269
|
|
|
256
|
-
export pathTo = (fname, searchDir,
|
|
270
|
+
export pathTo = (fname, searchDir, options=undef) ->
|
|
257
271
|
|
|
258
|
-
{direction, relative} =
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
relative = false
|
|
272
|
+
{direction, relative} = getOptions(options, {
|
|
273
|
+
direction: 'down'
|
|
274
|
+
relative: false
|
|
275
|
+
})
|
|
263
276
|
|
|
264
277
|
if ! searchDir
|
|
265
278
|
searchDir = process.cwd()
|
|
266
|
-
assert
|
|
279
|
+
assert isDir(searchDir), "Not a directory: #{OL(searchDir)}"
|
|
267
280
|
filepath = mkpath(searchDir, fname)
|
|
268
|
-
if
|
|
281
|
+
if isFile(filepath)
|
|
269
282
|
if relative
|
|
270
|
-
|
|
271
|
-
|
|
283
|
+
return "./#{fname}"
|
|
284
|
+
else
|
|
285
|
+
return filepath
|
|
272
286
|
|
|
273
287
|
if (direction == 'down')
|
|
274
288
|
# --- Search all directories in this directory
|
|
275
289
|
# getSubDirs() returns dirs sorted alphabetically
|
|
276
290
|
for subdir in getSubDirs(searchDir)
|
|
277
291
|
dirpath = mkpath(searchDir, subdir)
|
|
278
|
-
if defined(fpath = pathTo(fname, dirpath,
|
|
292
|
+
if defined(fpath = pathTo(fname, dirpath, options))
|
|
279
293
|
if relative
|
|
280
|
-
|
|
281
|
-
|
|
294
|
+
return fpath.replace('./', "./#{subdir}/")
|
|
295
|
+
else
|
|
296
|
+
return fpath
|
|
282
297
|
else if (direction == 'up')
|
|
283
298
|
nLevels = 0
|
|
284
299
|
while defined(dirPath = getParentDir(searchDir))
|
|
285
300
|
nLevels += 1
|
|
286
301
|
fpath = mkpath(dirPath, fname)
|
|
287
|
-
if
|
|
302
|
+
if isFile(fpath)
|
|
288
303
|
if relative
|
|
289
|
-
|
|
290
|
-
return fpath
|
|
304
|
+
return "../".repeat(nLevels) + fname
|
|
291
305
|
else
|
|
292
306
|
return fpath
|
|
293
307
|
searchDir = dirPath
|
package/src/fs.js
CHANGED
|
@@ -24,6 +24,7 @@ import {
|
|
|
24
24
|
rtrim,
|
|
25
25
|
isEmpty,
|
|
26
26
|
nonEmpty,
|
|
27
|
+
getOptions,
|
|
27
28
|
isString,
|
|
28
29
|
isArray,
|
|
29
30
|
isHash,
|
|
@@ -47,6 +48,15 @@ export var mydir = function(url) {
|
|
|
47
48
|
return final;
|
|
48
49
|
};
|
|
49
50
|
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
export var projRoot = function(url) {
|
|
53
|
+
var dir, pathToPkg;
|
|
54
|
+
dir = mydir(url);
|
|
55
|
+
return pathToPkg = pathTo('package.json', dir, {
|
|
56
|
+
direction: 'up'
|
|
57
|
+
});
|
|
58
|
+
};
|
|
59
|
+
|
|
50
60
|
// ---------------------------------------------------------------------------
|
|
51
61
|
// myfile() - pass argument import.meta.url and it will return
|
|
52
62
|
// the name of your file
|
|
@@ -66,20 +76,24 @@ export var myfullpath = function(url) {
|
|
|
66
76
|
return mkpath(path);
|
|
67
77
|
};
|
|
68
78
|
|
|
79
|
+
// ---------------------------------------------------------------------------
|
|
80
|
+
export var getStats = function(fullpath) {
|
|
81
|
+
return fs.lstatSync(fullpath);
|
|
82
|
+
};
|
|
83
|
+
|
|
69
84
|
// ---------------------------------------------------------------------------
|
|
70
85
|
export var isFile = function(fullpath) {
|
|
71
|
-
|
|
86
|
+
try {
|
|
87
|
+
return getStats(fullpath).isFile();
|
|
88
|
+
} catch (error) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
72
91
|
};
|
|
73
92
|
|
|
74
93
|
// ---------------------------------------------------------------------------
|
|
75
94
|
export var isDir = function(fullpath) {
|
|
76
|
-
var obj;
|
|
77
95
|
try {
|
|
78
|
-
|
|
79
|
-
if (obj == null) {
|
|
80
|
-
return false;
|
|
81
|
-
}
|
|
82
|
-
return obj.isDirectory();
|
|
96
|
+
return getStats(fullpath).isDirectory();
|
|
83
97
|
} catch (error) {
|
|
84
98
|
return false;
|
|
85
99
|
}
|
|
@@ -308,25 +322,23 @@ export var forEachFile = function(dir, cb, filt = undef, level = 0) {
|
|
|
308
322
|
};
|
|
309
323
|
|
|
310
324
|
// ---------------------------------------------------------------------------
|
|
311
|
-
export var pathTo = function(fname, searchDir,
|
|
325
|
+
export var pathTo = function(fname, searchDir, options = undef) {
|
|
312
326
|
var dirPath, direction, dirpath, filepath, fpath, i, len, nLevels, ref, relative, subdir;
|
|
313
|
-
({direction, relative} =
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
}
|
|
317
|
-
if (isEmpty(relative)) {
|
|
318
|
-
relative = false;
|
|
319
|
-
}
|
|
327
|
+
({direction, relative} = getOptions(options, {
|
|
328
|
+
direction: 'down',
|
|
329
|
+
relative: false
|
|
330
|
+
}));
|
|
320
331
|
if (!searchDir) {
|
|
321
332
|
searchDir = process.cwd();
|
|
322
333
|
}
|
|
323
|
-
assert(
|
|
334
|
+
assert(isDir(searchDir), `Not a directory: ${OL(searchDir)}`);
|
|
324
335
|
filepath = mkpath(searchDir, fname);
|
|
325
|
-
if (
|
|
336
|
+
if (isFile(filepath)) {
|
|
326
337
|
if (relative) {
|
|
327
|
-
|
|
338
|
+
return `./${fname}`;
|
|
339
|
+
} else {
|
|
340
|
+
return filepath;
|
|
328
341
|
}
|
|
329
|
-
return filepath;
|
|
330
342
|
}
|
|
331
343
|
if (direction === 'down') {
|
|
332
344
|
ref = getSubDirs(searchDir);
|
|
@@ -335,11 +347,12 @@ export var pathTo = function(fname, searchDir, hOptions = {}) {
|
|
|
335
347
|
for (i = 0, len = ref.length; i < len; i++) {
|
|
336
348
|
subdir = ref[i];
|
|
337
349
|
dirpath = mkpath(searchDir, subdir);
|
|
338
|
-
if (defined(fpath = pathTo(fname, dirpath,
|
|
350
|
+
if (defined(fpath = pathTo(fname, dirpath, options))) {
|
|
339
351
|
if (relative) {
|
|
340
|
-
|
|
352
|
+
return fpath.replace('./', `./${subdir}/`);
|
|
353
|
+
} else {
|
|
354
|
+
return fpath;
|
|
341
355
|
}
|
|
342
|
-
return fpath;
|
|
343
356
|
}
|
|
344
357
|
}
|
|
345
358
|
} else if (direction === 'up') {
|
|
@@ -347,10 +360,9 @@ export var pathTo = function(fname, searchDir, hOptions = {}) {
|
|
|
347
360
|
while (defined(dirPath = getParentDir(searchDir))) {
|
|
348
361
|
nLevels += 1;
|
|
349
362
|
fpath = mkpath(dirPath, fname);
|
|
350
|
-
if (
|
|
363
|
+
if (isFile(fpath)) {
|
|
351
364
|
if (relative) {
|
|
352
|
-
|
|
353
|
-
return fpath;
|
|
365
|
+
return "../".repeat(nLevels) + fname;
|
|
354
366
|
} else {
|
|
355
367
|
return fpath;
|
|
356
368
|
}
|
package/temp.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// Generated by CoffeeScript 2.6.1
|
|
2
|
-
// temp.coffee
|
|
3
|
-
var dir;
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
say
|
|
7
|
-
} from '@jdeighan/coffee-utils';
|
|
8
|
-
|
|
9
|
-
import {
|
|
10
|
-
log
|
|
11
|
-
} from '@jdeighan/coffee-utils/log';
|
|
12
|
-
|
|
13
|
-
import {
|
|
14
|
-
setDebugging
|
|
15
|
-
} from '@jdeighan/coffee-utils/debug';
|
|
16
|
-
|
|
17
|
-
import {
|
|
18
|
-
mydir,
|
|
19
|
-
mkpath
|
|
20
|
-
} from '@jdeighan/coffee-utils/fs';
|
|
21
|
-
|
|
22
|
-
setDebugging(true);
|
|
23
|
-
|
|
24
|
-
dir = mydir(import.meta.url);
|
|
25
|
-
|
|
26
|
-
say(`dir = ${dir}`);
|