@jdeighan/coffee-utils 17.0.5 → 17.0.7
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 +3 -3
- package/src/lib/fs.coffee +2 -15
- package/src/lib/fs.js +2 -15
- package/src/lib/fs.js.map +2 -2
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@jdeighan/coffee-utils",
|
3
3
|
"type": "module",
|
4
|
-
"version": "17.0.
|
4
|
+
"version": "17.0.7",
|
5
5
|
"description": "A set of utility functions for CoffeeScript",
|
6
6
|
"main": "coffee_utils.js",
|
7
7
|
"exports": {
|
@@ -38,10 +38,10 @@
|
|
38
38
|
},
|
39
39
|
"homepage": "https://github.com/johndeighan/coffee-utils#readme",
|
40
40
|
"dependencies": {
|
41
|
-
"@jdeighan/base-utils": "^
|
41
|
+
"@jdeighan/base-utils": "^15.0.3",
|
42
42
|
"cross-env": "^7.0.3",
|
43
43
|
"n-readlines": "^1.0.1",
|
44
44
|
"readline-sync": "^1.4.10",
|
45
|
-
"svelte": "^4.2.
|
45
|
+
"svelte": "^4.2.12"
|
46
46
|
}
|
47
47
|
}
|
package/src/lib/fs.coffee
CHANGED
@@ -17,7 +17,7 @@ import {
|
|
17
17
|
} from '@jdeighan/base-utils'
|
18
18
|
import {
|
19
19
|
fileExt, mydir, mkpath, isFile, mkDir, rmDir, rmFile,
|
20
|
-
forEachLineInFile, isDir, parsePath,
|
20
|
+
forEachLineInFile, isDir, parsePath, newerDestFileExists,
|
21
21
|
barf, barfJSON, slurp, slurpJSON, withExt,
|
22
22
|
} from '@jdeighan/base-utils/fs'
|
23
23
|
import {assert, croak} from '@jdeighan/base-utils/exceptions'
|
@@ -27,7 +27,7 @@ import {fromTAML} from '@jdeighan/base-utils/taml'
|
|
27
27
|
|
28
28
|
export {
|
29
29
|
fileExt, mydir, mkpath, isFile, mkDir, rmDir, rmFile,
|
30
|
-
forEachLineInFile, isDir, parsePath,
|
30
|
+
forEachLineInFile, isDir, parsePath, newerDestFileExists,
|
31
31
|
barf, barfJSON, slurp, slurpJSON, withExt,
|
32
32
|
}
|
33
33
|
|
@@ -401,19 +401,6 @@ export allPathsTo = (fname, searchDir) =>
|
|
401
401
|
|
402
402
|
# ---------------------------------------------------------------------------
|
403
403
|
|
404
|
-
export newerDestFileExists = (srcPath, destPath) =>
|
405
|
-
|
406
|
-
if ! fs.existsSync(destPath)
|
407
|
-
return false
|
408
|
-
srcModTime = fs.statSync(srcPath).mtimeMs
|
409
|
-
destModTime = fs.statSync(destPath).mtimeMs
|
410
|
-
if destModTime >= srcModTime
|
411
|
-
return true
|
412
|
-
else
|
413
|
-
return false
|
414
|
-
|
415
|
-
# ---------------------------------------------------------------------------
|
416
|
-
|
417
404
|
export shortenPath = (path) =>
|
418
405
|
# --- Replace user's home dir with '~'
|
419
406
|
|
package/src/lib/fs.js
CHANGED
@@ -54,6 +54,7 @@ import {
|
|
54
54
|
forEachLineInFile,
|
55
55
|
isDir,
|
56
56
|
parsePath,
|
57
|
+
newerDestFileExists,
|
57
58
|
barf,
|
58
59
|
barfJSON,
|
59
60
|
slurp,
|
@@ -92,6 +93,7 @@ export {
|
|
92
93
|
forEachLineInFile,
|
93
94
|
isDir,
|
94
95
|
parsePath,
|
96
|
+
newerDestFileExists,
|
95
97
|
barf,
|
96
98
|
barfJSON,
|
97
99
|
slurp,
|
@@ -497,21 +499,6 @@ export var allPathsTo = (fname, searchDir) => {
|
|
497
499
|
}
|
498
500
|
};
|
499
501
|
|
500
|
-
// ---------------------------------------------------------------------------
|
501
|
-
export var newerDestFileExists = (srcPath, destPath) => {
|
502
|
-
var destModTime, srcModTime;
|
503
|
-
if (!fs.existsSync(destPath)) {
|
504
|
-
return false;
|
505
|
-
}
|
506
|
-
srcModTime = fs.statSync(srcPath).mtimeMs;
|
507
|
-
destModTime = fs.statSync(destPath).mtimeMs;
|
508
|
-
if (destModTime >= srcModTime) {
|
509
|
-
return true;
|
510
|
-
} else {
|
511
|
-
return false;
|
512
|
-
}
|
513
|
-
};
|
514
|
-
|
515
502
|
// ---------------------------------------------------------------------------
|
516
503
|
export var shortenPath = (path) => {
|
517
504
|
var _, lMatches, str, tail;
|
package/src/lib/fs.js.map
CHANGED
@@ -6,8 +6,8 @@
|
|
6
6
|
"src\\lib\\fs.coffee"
|
7
7
|
],
|
8
8
|
"names": [],
|
9
|
-
"mappings": "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",
|
9
|
+
"mappings": "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",
|
10
10
|
"sourcesContent": [
|
11
|
-
"# fs.coffee\r\n\r\nimport os from 'os'\r\nimport pathlib from 'path'\r\nimport urllib from 'url'\r\nimport fs from 'fs'\r\nimport {\r\n\treadFile, writeFile, rm, rmdir,\r\n\t} from 'node:fs/promises'\r\nimport {execSync} from 'node:child_process'\r\n\r\nimport {\r\n\tundef, pass, defined, notdefined, rtrim, isEmpty, nonEmpty,\r\n\tisString, isArray, isHash, isRegExp, isFunction, isBoolean,\r\n\tOL, toBlock, getOptions, isArrayOfStrings, deepCopy,\r\n\trunCmd,\r\n\t} from '@jdeighan/base-utils'\r\nimport {\r\n\tfileExt, mydir, mkpath, isFile, mkDir, rmDir, rmFile,\r\n\tforEachLineInFile, isDir, parsePath,\r\n\tbarf, barfJSON, slurp, slurpJSON, withExt,\r\n\t} from '@jdeighan/base-utils/fs'\r\nimport {assert, croak} from '@jdeighan/base-utils/exceptions'\r\nimport {LOG, LOGVALUE} from '@jdeighan/base-utils/log'\r\nimport {dbg, dbgEnter, dbgReturn} from '@jdeighan/base-utils/debug'\r\nimport {fromTAML} from '@jdeighan/base-utils/taml'\r\n\r\nexport {\r\n\tfileExt, mydir, mkpath, isFile, mkDir, rmDir, rmFile,\r\n\tforEachLineInFile, isDir, parsePath,\r\n\tbarf, barfJSON, slurp, slurpJSON, withExt,\r\n\t}\r\n\r\nfix = true\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport doFixOutput = (flag=true) =>\r\n\r\n\tfix = flag\r\n\treturn\r\n\r\n# --------------------------------------------------------------------------\r\n\r\nexport fixOutput = (contents) =>\r\n\r\n\tif fix && isString(contents)\r\n\t\treturn rtrim(contents) + \"\\n\"\r\n\telse\r\n\t\treturn contents\r\n\r\n# --------------------------------------------------------------------------\r\n\r\nexport fixFile = (filepath, func) =>\r\n\r\n\tcontents = await readFile(filepath, {encoding: 'utf8'})\r\n\toutput = func(contents) # returns modified contents\r\n\toutput = fixOutput(output)\r\n\tawait writeFile(filepath, output, {encoding: 'utf8'})\r\n\treturn\r\n\r\n# --------------------------------------------------------------------------\r\n\r\nexport fixJSON = (filepath, func) =>\r\n\r\n\tcontents = fs.readFileSync(filepath, {encoding: 'utf8'})\r\n\thJson = JSON.parse(contents)\r\n\tfunc(hJson) # modify in place\r\n\toutput = JSON.stringify(hJson, null, 3)\r\n\toutput = fixOutput(output)\r\n\tfs.writeFileSync(filepath, output, {encoding: 'utf8'})\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport cloneRepo = (user, repo, dir) =>\r\n\r\n\tgit_repo = \"https://github.com/#{user}/#{repo}.git\"\r\n\treturn runCmd \"git clone #{git_repo} #{dir}\"\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport homeDir = () =>\r\n\r\n\treturn mkpath(os.homedir())\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport projRoot = (url) =>\r\n\r\n\tdir = mydir(url)\r\n\trootDir = pathTo('package.json', dir, 'direction=up directory')\r\n\tassert defined(rootDir), \"No project root directory found\"\r\n\treturn rootDir\r\n\r\n# ---------------------------------------------------------------------------\r\n# myfile() - pass argument import.meta.url and it will return\r\n# the name of your file\r\n\r\nexport myfile = (url) =>\r\n\r\n\tpath = urllib.fileURLToPath(url)\r\n\tfilename = pathlib.parse(path).base\r\n\treturn filename\r\n\r\n# ---------------------------------------------------------------------------\r\n# myfullpath() - pass argument import.meta.url and it will return\r\n# the full path to your file\r\n\r\nexport myfullpath = (url) =>\r\n\r\n\tpath = urllib.fileURLToPath(url)\r\n\treturn mkpath(path)\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport getStats = (fullpath) =>\r\n\r\n\treturn fs.lstatSync(fullpath)\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport isSimpleFileName = (path) =>\r\n\r\n\th = pathlib.parse(path)\r\n\treturn ! h.root && ! h.dir && h.base\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport fileStub = (path) =>\r\n\r\n\tassert isString(path), \"fileStub(): path not a string\"\r\n\tif lMatches = path.match(/^(.*)\\.[A-Za-z0-9_]+$/)\r\n\t\treturn lMatches[1]\r\n\telse\r\n\t\treturn ''\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport getFullPath = (filepath) =>\r\n\r\n\treturn mkpath(pathlib.resolve(filepath))\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport forEachBlock = (filepath, func, regexp = /^-{16,}$/) =>\r\n\r\n\tlLines = []\r\n\tfirstLineNum = 1\r\n\tearlyExit = false\r\n\r\n\tcallback = (line, lineNum) ->\r\n\t\tif (line.match(regexp))\r\n\t\t\tif result = func(lLines.join('\\n'), firstLineNum, line)\r\n\t\t\t\tif (result == true)\r\n\t\t\t\t\tearlyExit = true\r\n\t\t\t\t\treturn true\r\n\t\t\t\telse if defined(result)\r\n\t\t\t\t\tcroak \"forEachBlock() - callback returned '#{result}'\"\r\n\t\t\tlLines = []\r\n\t\t\tfirstLineNum = lineNum+1\r\n\t\telse\r\n\t\t\tlLines.push line\r\n\t\treturn false\r\n\r\n\tforEachLineInFile filepath, callback\r\n\tif ! earlyExit\r\n\t\tfunc(lLines.join('\\n'), firstLineNum)\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport forEachSetOfBlocks = (filepath, func, \\\r\n\t\tblock_regexp = /^-{16,}$/, \\\r\n\t\tset_regexp = /^={16,}$/) \\\r\n\t\t=>\r\n\r\n\tdbgEnter 'forEachSetOfBlocks', filepath\r\n\tlBlocks = []\r\n\tlLines = []\r\n\tfirstLineNum = 1\r\n\tearlyExit = false\r\n\r\n\tcallback = (line, hContext) ->\r\n\t\tdbgEnter 'callback', line, hContext.lineNum\r\n\t\tlineNum = hContext.lineNum\r\n\t\tif (line.match(set_regexp))\r\n\t\t\tlBlocks.push(lLines.join('\\n'))\r\n\t\t\tlLines = []\r\n\t\t\tresult = func(deepCopy(lBlocks), firstLineNum, line)\r\n\t\t\tif (result == true)\r\n\t\t\t\tearlyExit = true\r\n\t\t\t\tdbgReturn 'callback', true\r\n\t\t\t\treturn true\r\n\t\t\tlBlocks = []\r\n\t\t\tfirstLineNum = lineNum+1\r\n\t\telse if (line.match(block_regexp))\r\n\t\t\tlBlocks.push(lLines.join('\\n'))\r\n\t\t\tlLines = []\r\n\t\telse\r\n\t\t\tlLines.push line\r\n\t\tdbgReturn 'callback', false\r\n\t\treturn false\r\n\r\n\tforEachLineInFile filepath, callback\r\n\tif ! earlyExit\r\n\t\tlBlocks.push(lLines.join('\\n'))\r\n\t\tfunc(lBlocks, firstLineNum)\r\n\tdbgReturn 'forEachSetOfBlocks'\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n# removeFileWithExt - remove file with different ext\r\n\r\nexport removeFileWithExt = (path, newExt, hOptions={}) =>\r\n\t# --- Valid options:\r\n\t# doLog\r\n\r\n\t{doLog} = getOptions(hOptions)\r\n\tfullpath = withExt(path, newExt)\r\n\ttry\r\n\t\tfs.unlinkSync fullpath\r\n\t\tif doLog\r\n\t\t\tLOG \" unlink #{filename}\"\r\n\t\tsuccess = true\r\n\tcatch err\r\n\t\tLOG \" UNLINK FAILED: #{err.message}\"\r\n\t\tsuccess = false\r\n\treturn success\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nisHiddenDir = (dir) ->\r\n\r\n\thFileInfo = parsePath(dir)\r\n\tbase = hFileInfo.lDirs.pop()\r\n\treturn (base.substring(0, 1) == '.')\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nisSystemDir = (dir) ->\r\n\r\n\treturn dir in ['$Recycle.Bin', '$WinREAgent']\r\n\r\n# ---------------------------------------------------------------------------\r\n# Get all subdirectories of a directory\r\n# don't return hidden or system subdirectories\r\n# Return value is just named, not full paths\r\n\r\nexport getSubDirs = (dir) =>\r\n\r\n\tdbgEnter 'getSubDirs', dir\r\n\tassert isDir(dir), \"not a directory\"\r\n\r\n\tdoInclude = (d) ->\r\n\t\tif !d.isDirectory()\r\n\t\t\treturn false\r\n\t\tdirName = d.name\r\n\t\tif isSystemDir(dirName) || (dirName.substring(0,1) == '.')\r\n\t\t\treturn false\r\n\t\treturn true\r\n\r\n\thOptions = {\r\n\t\twithFileTypes: true\r\n\t\trecursive: false\r\n\t\t}\r\n\tlSubDirs = fs.readdirSync(dir, hOptions) \\\r\n\t\t\t.filter(doInclude) \\\r\n\t\t\t.map((d) -> d.name) \\\r\n\t\t\t.sort()\r\n\tdbgReturn 'getSubDirs', lSubDirs\r\n\treturn lSubDirs\r\n\r\n# ---------------------------------------------------------------------------\r\n# Get path to parent directory of a directory\r\n\r\nexport getParentDir = (dir) =>\r\n\r\n\thParts = pathlib.parse(dir)\r\n\tif (hParts.dir == hParts.root)\r\n\t\treturn undef\r\n\treturn mkpath(pathlib.resolve(dir, '..'))\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport forEachFile = (dir, cb, filt=undef, level=0) =>\r\n\t# --- filt can be a regular expression or a function that gets:\r\n\t# (filename, dir, level)\r\n\t# callback will get parms (filename, dir, level)\r\n\r\n\tlSubDirectories = []\r\n\tfor ent in fs.readdirSync(dir, {withFileTypes: true})\r\n\t\tif ent.isDirectory()\r\n\t\t\tlSubDirectories.push ent\r\n\t\telse if ent.isFile()\r\n\t\t\tif notdefined(filt)\r\n\t\t\t\tcb(ent.name, dir, level)\r\n\t\t\telse if isRegExp(filt)\r\n\t\t\t\tif ent.name.match(filt)\r\n\t\t\t\t\tcb(ent.name, dir, level)\r\n\t\t\telse if isFunction(filt)\r\n\t\t\t\tif filt(ent.name, dir, level)\r\n\t\t\t\t\tcb(ent.name, dir, level)\r\n\t\t\telse\r\n\t\t\t\tcroak \"forEachFile(): bad filter\", 'filter', filt\r\n\tif nonEmpty(lSubDirectories)\r\n\t\tfor subdir in lSubDirectories.sort()\r\n\t\t\tforEachFile(mkpath(dir, subdir.name), cb, filt, level+1)\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport pathTo = (fname, searchDir, hOptions={}) =>\r\n\r\n\tdbgEnter 'pathTo', fname, searchDir, hOptions\r\n\t{direction, relative, directory} = getOptions(hOptions, {\r\n\t\tdirection: 'down'\r\n\t\trelative: false\r\n\t\tdirectory: false # return only the directory the file is in\r\n\t\t})\r\n\tdbg \"direction = #{direction}\"\r\n\tdbg \"relative = #{relative}\"\r\n\tdbg \"directory = #{directory}\"\r\n\r\n\tassert !(relative && directory),\r\n\t\t\t\"relative & directory are incompatible\"\r\n\tif ! searchDir\r\n\t\tsearchDir = process.cwd()\r\n\tassert isDir(searchDir), \"Not a directory: #{OL(searchDir)}\"\r\n\r\n\t# --- first check if the file is in searchDir\r\n\r\n\tfilepath = mkpath(searchDir, fname)\r\n\tif isFile(filepath)\r\n\t\tif relative\r\n\t\t\tresult = \"./#{fname}\"\r\n\t\telse if directory\r\n\t\t\tresult = mkpath(searchDir)\r\n\t\telse\r\n\t\t\tresult = mkpath(filepath)\r\n\t\tdbgReturn 'pathTo', result\r\n\t\treturn result\r\n\r\n\tdbg \"not found in searchDir '#{searchDir}'\"\r\n\r\n\tif (direction == 'down')\r\n\t\t# --- Search all directories in this directory\r\n\t\t# getSubDirs() returns dirs sorted alphabetically\r\n\t\tlSubDirs = getSubDirs(searchDir)\r\n\t\tdbg 'lSubDirs', lSubDirs\r\n\t\tfor subdir in lSubDirs\r\n\t\t\t# --- subdir is a simple name, not a full path\r\n\t\t\tdirPath = mkpath(searchDir, subdir)\r\n\t\t\tfpath = pathTo(fname, dirPath, hOptions)\r\n\t\t\tif defined(fpath)\r\n\t\t\t\tif relative\r\n\t\t\t\t\tresult = fpath.replace('./', \"./#{subdir}/\")\r\n\t\t\t\telse if directory\r\n\t\t\t\t\tresult = mkpath(dirPath)\r\n\t\t\t\telse\r\n\t\t\t\t\tresult = mkpath(fpath)\r\n\t\t\t\tdbgReturn 'pathTo', result\r\n\t\t\t\treturn result\r\n\telse if (direction == 'up')\r\n\t\tnLevels = 0\r\n\t\twhile defined(dirPath = getParentDir(searchDir))\r\n\t\t\tnLevels += 1\r\n\t\t\tfpath = mkpath(dirPath, fname)\r\n\t\t\tif isFile(fpath)\r\n\t\t\t\tif relative\r\n\t\t\t\t\tresult = \"../\".repeat(nLevels) + fname\r\n\t\t\t\telse if directory\r\n\t\t\t\t\tresult = mkpath(dirPath)\r\n\t\t\t\telse\r\n\t\t\t\t\tresult = mkpath(fpath)\r\n\t\t\t\tdbgReturn 'pathTo', result\r\n\t\t\t\treturn result\r\n\t\t\tsearchDir = dirPath\r\n\telse\r\n\t\tcroak \"pathTo(): Invalid direction '#{direction}'\"\r\n\tdbgReturn 'pathTo', undef\r\n\treturn undef\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport allPathsTo = (fname, searchDir) =>\r\n\t# --- Only searches upward\r\n\r\n\tif ! searchDir\r\n\t\tsearchDir = process.cwd()\r\n\tpath = pathTo(fname, searchDir, {direction: \"up\"})\r\n\tif defined(path)\r\n\t\tlPaths = [path] # --- build an array of paths\r\n\t\t# --- search upward for files, but return ordered top down\r\n\t\twhile (h = pathlib.parse(path)) \\\r\n\t\t\t\t&& (path = pathTo(fname, pathlib.resolve(h.dir, '..'), {direction: \"up\"}))\r\n\t\t\tlPaths.unshift path\r\n\t\treturn lPaths\r\n\telse\r\n\t\treturn []\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport newerDestFileExists = (srcPath, destPath) =>\r\n\r\n\tif ! fs.existsSync(destPath)\r\n\t\treturn false\r\n\tsrcModTime = fs.statSync(srcPath).mtimeMs\r\n\tdestModTime = fs.statSync(destPath).mtimeMs\r\n\tif destModTime >= srcModTime\r\n\t\treturn true\r\n\telse\r\n\t\treturn false\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport shortenPath = (path) =>\r\n\t# --- Replace user's home dir with '~'\r\n\r\n\tstr = mkpath(path)\r\n\tif lMatches = str.match(///^\r\n\t\t\t[A-Za-z]:/Users/[a-z_][a-z0-9_]*/(.*)\r\n\t\t\t$///i)\r\n\t\t[_, tail] = lMatches\r\n\t\treturn \"~/#{tail}\"\r\n\telse\r\n\t\treturn str\r\n\r\n# ---------------------------------------------------------------------------\r\n"
|
11
|
+
"# fs.coffee\r\n\r\nimport os from 'os'\r\nimport pathlib from 'path'\r\nimport urllib from 'url'\r\nimport fs from 'fs'\r\nimport {\r\n\treadFile, writeFile, rm, rmdir,\r\n\t} from 'node:fs/promises'\r\nimport {execSync} from 'node:child_process'\r\n\r\nimport {\r\n\tundef, pass, defined, notdefined, rtrim, isEmpty, nonEmpty,\r\n\tisString, isArray, isHash, isRegExp, isFunction, isBoolean,\r\n\tOL, toBlock, getOptions, isArrayOfStrings, deepCopy,\r\n\trunCmd,\r\n\t} from '@jdeighan/base-utils'\r\nimport {\r\n\tfileExt, mydir, mkpath, isFile, mkDir, rmDir, rmFile,\r\n\tforEachLineInFile, isDir, parsePath, newerDestFileExists,\r\n\tbarf, barfJSON, slurp, slurpJSON, withExt,\r\n\t} from '@jdeighan/base-utils/fs'\r\nimport {assert, croak} from '@jdeighan/base-utils/exceptions'\r\nimport {LOG, LOGVALUE} from '@jdeighan/base-utils/log'\r\nimport {dbg, dbgEnter, dbgReturn} from '@jdeighan/base-utils/debug'\r\nimport {fromTAML} from '@jdeighan/base-utils/taml'\r\n\r\nexport {\r\n\tfileExt, mydir, mkpath, isFile, mkDir, rmDir, rmFile,\r\n\tforEachLineInFile, isDir, parsePath, newerDestFileExists,\r\n\tbarf, barfJSON, slurp, slurpJSON, withExt,\r\n\t}\r\n\r\nfix = true\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport doFixOutput = (flag=true) =>\r\n\r\n\tfix = flag\r\n\treturn\r\n\r\n# --------------------------------------------------------------------------\r\n\r\nexport fixOutput = (contents) =>\r\n\r\n\tif fix && isString(contents)\r\n\t\treturn rtrim(contents) + \"\\n\"\r\n\telse\r\n\t\treturn contents\r\n\r\n# --------------------------------------------------------------------------\r\n\r\nexport fixFile = (filepath, func) =>\r\n\r\n\tcontents = await readFile(filepath, {encoding: 'utf8'})\r\n\toutput = func(contents) # returns modified contents\r\n\toutput = fixOutput(output)\r\n\tawait writeFile(filepath, output, {encoding: 'utf8'})\r\n\treturn\r\n\r\n# --------------------------------------------------------------------------\r\n\r\nexport fixJSON = (filepath, func) =>\r\n\r\n\tcontents = fs.readFileSync(filepath, {encoding: 'utf8'})\r\n\thJson = JSON.parse(contents)\r\n\tfunc(hJson) # modify in place\r\n\toutput = JSON.stringify(hJson, null, 3)\r\n\toutput = fixOutput(output)\r\n\tfs.writeFileSync(filepath, output, {encoding: 'utf8'})\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport cloneRepo = (user, repo, dir) =>\r\n\r\n\tgit_repo = \"https://github.com/#{user}/#{repo}.git\"\r\n\treturn runCmd \"git clone #{git_repo} #{dir}\"\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport homeDir = () =>\r\n\r\n\treturn mkpath(os.homedir())\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport projRoot = (url) =>\r\n\r\n\tdir = mydir(url)\r\n\trootDir = pathTo('package.json', dir, 'direction=up directory')\r\n\tassert defined(rootDir), \"No project root directory found\"\r\n\treturn rootDir\r\n\r\n# ---------------------------------------------------------------------------\r\n# myfile() - pass argument import.meta.url and it will return\r\n# the name of your file\r\n\r\nexport myfile = (url) =>\r\n\r\n\tpath = urllib.fileURLToPath(url)\r\n\tfilename = pathlib.parse(path).base\r\n\treturn filename\r\n\r\n# ---------------------------------------------------------------------------\r\n# myfullpath() - pass argument import.meta.url and it will return\r\n# the full path to your file\r\n\r\nexport myfullpath = (url) =>\r\n\r\n\tpath = urllib.fileURLToPath(url)\r\n\treturn mkpath(path)\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport getStats = (fullpath) =>\r\n\r\n\treturn fs.lstatSync(fullpath)\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport isSimpleFileName = (path) =>\r\n\r\n\th = pathlib.parse(path)\r\n\treturn ! h.root && ! h.dir && h.base\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport fileStub = (path) =>\r\n\r\n\tassert isString(path), \"fileStub(): path not a string\"\r\n\tif lMatches = path.match(/^(.*)\\.[A-Za-z0-9_]+$/)\r\n\t\treturn lMatches[1]\r\n\telse\r\n\t\treturn ''\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport getFullPath = (filepath) =>\r\n\r\n\treturn mkpath(pathlib.resolve(filepath))\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport forEachBlock = (filepath, func, regexp = /^-{16,}$/) =>\r\n\r\n\tlLines = []\r\n\tfirstLineNum = 1\r\n\tearlyExit = false\r\n\r\n\tcallback = (line, lineNum) ->\r\n\t\tif (line.match(regexp))\r\n\t\t\tif result = func(lLines.join('\\n'), firstLineNum, line)\r\n\t\t\t\tif (result == true)\r\n\t\t\t\t\tearlyExit = true\r\n\t\t\t\t\treturn true\r\n\t\t\t\telse if defined(result)\r\n\t\t\t\t\tcroak \"forEachBlock() - callback returned '#{result}'\"\r\n\t\t\tlLines = []\r\n\t\t\tfirstLineNum = lineNum+1\r\n\t\telse\r\n\t\t\tlLines.push line\r\n\t\treturn false\r\n\r\n\tforEachLineInFile filepath, callback\r\n\tif ! earlyExit\r\n\t\tfunc(lLines.join('\\n'), firstLineNum)\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport forEachSetOfBlocks = (filepath, func, \\\r\n\t\tblock_regexp = /^-{16,}$/, \\\r\n\t\tset_regexp = /^={16,}$/) \\\r\n\t\t=>\r\n\r\n\tdbgEnter 'forEachSetOfBlocks', filepath\r\n\tlBlocks = []\r\n\tlLines = []\r\n\tfirstLineNum = 1\r\n\tearlyExit = false\r\n\r\n\tcallback = (line, hContext) ->\r\n\t\tdbgEnter 'callback', line, hContext.lineNum\r\n\t\tlineNum = hContext.lineNum\r\n\t\tif (line.match(set_regexp))\r\n\t\t\tlBlocks.push(lLines.join('\\n'))\r\n\t\t\tlLines = []\r\n\t\t\tresult = func(deepCopy(lBlocks), firstLineNum, line)\r\n\t\t\tif (result == true)\r\n\t\t\t\tearlyExit = true\r\n\t\t\t\tdbgReturn 'callback', true\r\n\t\t\t\treturn true\r\n\t\t\tlBlocks = []\r\n\t\t\tfirstLineNum = lineNum+1\r\n\t\telse if (line.match(block_regexp))\r\n\t\t\tlBlocks.push(lLines.join('\\n'))\r\n\t\t\tlLines = []\r\n\t\telse\r\n\t\t\tlLines.push line\r\n\t\tdbgReturn 'callback', false\r\n\t\treturn false\r\n\r\n\tforEachLineInFile filepath, callback\r\n\tif ! earlyExit\r\n\t\tlBlocks.push(lLines.join('\\n'))\r\n\t\tfunc(lBlocks, firstLineNum)\r\n\tdbgReturn 'forEachSetOfBlocks'\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n# removeFileWithExt - remove file with different ext\r\n\r\nexport removeFileWithExt = (path, newExt, hOptions={}) =>\r\n\t# --- Valid options:\r\n\t# doLog\r\n\r\n\t{doLog} = getOptions(hOptions)\r\n\tfullpath = withExt(path, newExt)\r\n\ttry\r\n\t\tfs.unlinkSync fullpath\r\n\t\tif doLog\r\n\t\t\tLOG \" unlink #{filename}\"\r\n\t\tsuccess = true\r\n\tcatch err\r\n\t\tLOG \" UNLINK FAILED: #{err.message}\"\r\n\t\tsuccess = false\r\n\treturn success\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nisHiddenDir = (dir) ->\r\n\r\n\thFileInfo = parsePath(dir)\r\n\tbase = hFileInfo.lDirs.pop()\r\n\treturn (base.substring(0, 1) == '.')\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nisSystemDir = (dir) ->\r\n\r\n\treturn dir in ['$Recycle.Bin', '$WinREAgent']\r\n\r\n# ---------------------------------------------------------------------------\r\n# Get all subdirectories of a directory\r\n# don't return hidden or system subdirectories\r\n# Return value is just named, not full paths\r\n\r\nexport getSubDirs = (dir) =>\r\n\r\n\tdbgEnter 'getSubDirs', dir\r\n\tassert isDir(dir), \"not a directory\"\r\n\r\n\tdoInclude = (d) ->\r\n\t\tif !d.isDirectory()\r\n\t\t\treturn false\r\n\t\tdirName = d.name\r\n\t\tif isSystemDir(dirName) || (dirName.substring(0,1) == '.')\r\n\t\t\treturn false\r\n\t\treturn true\r\n\r\n\thOptions = {\r\n\t\twithFileTypes: true\r\n\t\trecursive: false\r\n\t\t}\r\n\tlSubDirs = fs.readdirSync(dir, hOptions) \\\r\n\t\t\t.filter(doInclude) \\\r\n\t\t\t.map((d) -> d.name) \\\r\n\t\t\t.sort()\r\n\tdbgReturn 'getSubDirs', lSubDirs\r\n\treturn lSubDirs\r\n\r\n# ---------------------------------------------------------------------------\r\n# Get path to parent directory of a directory\r\n\r\nexport getParentDir = (dir) =>\r\n\r\n\thParts = pathlib.parse(dir)\r\n\tif (hParts.dir == hParts.root)\r\n\t\treturn undef\r\n\treturn mkpath(pathlib.resolve(dir, '..'))\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport forEachFile = (dir, cb, filt=undef, level=0) =>\r\n\t# --- filt can be a regular expression or a function that gets:\r\n\t# (filename, dir, level)\r\n\t# callback will get parms (filename, dir, level)\r\n\r\n\tlSubDirectories = []\r\n\tfor ent in fs.readdirSync(dir, {withFileTypes: true})\r\n\t\tif ent.isDirectory()\r\n\t\t\tlSubDirectories.push ent\r\n\t\telse if ent.isFile()\r\n\t\t\tif notdefined(filt)\r\n\t\t\t\tcb(ent.name, dir, level)\r\n\t\t\telse if isRegExp(filt)\r\n\t\t\t\tif ent.name.match(filt)\r\n\t\t\t\t\tcb(ent.name, dir, level)\r\n\t\t\telse if isFunction(filt)\r\n\t\t\t\tif filt(ent.name, dir, level)\r\n\t\t\t\t\tcb(ent.name, dir, level)\r\n\t\t\telse\r\n\t\t\t\tcroak \"forEachFile(): bad filter\", 'filter', filt\r\n\tif nonEmpty(lSubDirectories)\r\n\t\tfor subdir in lSubDirectories.sort()\r\n\t\t\tforEachFile(mkpath(dir, subdir.name), cb, filt, level+1)\r\n\treturn\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport pathTo = (fname, searchDir, hOptions={}) =>\r\n\r\n\tdbgEnter 'pathTo', fname, searchDir, hOptions\r\n\t{direction, relative, directory} = getOptions(hOptions, {\r\n\t\tdirection: 'down'\r\n\t\trelative: false\r\n\t\tdirectory: false # return only the directory the file is in\r\n\t\t})\r\n\tdbg \"direction = #{direction}\"\r\n\tdbg \"relative = #{relative}\"\r\n\tdbg \"directory = #{directory}\"\r\n\r\n\tassert !(relative && directory),\r\n\t\t\t\"relative & directory are incompatible\"\r\n\tif ! searchDir\r\n\t\tsearchDir = process.cwd()\r\n\tassert isDir(searchDir), \"Not a directory: #{OL(searchDir)}\"\r\n\r\n\t# --- first check if the file is in searchDir\r\n\r\n\tfilepath = mkpath(searchDir, fname)\r\n\tif isFile(filepath)\r\n\t\tif relative\r\n\t\t\tresult = \"./#{fname}\"\r\n\t\telse if directory\r\n\t\t\tresult = mkpath(searchDir)\r\n\t\telse\r\n\t\t\tresult = mkpath(filepath)\r\n\t\tdbgReturn 'pathTo', result\r\n\t\treturn result\r\n\r\n\tdbg \"not found in searchDir '#{searchDir}'\"\r\n\r\n\tif (direction == 'down')\r\n\t\t# --- Search all directories in this directory\r\n\t\t# getSubDirs() returns dirs sorted alphabetically\r\n\t\tlSubDirs = getSubDirs(searchDir)\r\n\t\tdbg 'lSubDirs', lSubDirs\r\n\t\tfor subdir in lSubDirs\r\n\t\t\t# --- subdir is a simple name, not a full path\r\n\t\t\tdirPath = mkpath(searchDir, subdir)\r\n\t\t\tfpath = pathTo(fname, dirPath, hOptions)\r\n\t\t\tif defined(fpath)\r\n\t\t\t\tif relative\r\n\t\t\t\t\tresult = fpath.replace('./', \"./#{subdir}/\")\r\n\t\t\t\telse if directory\r\n\t\t\t\t\tresult = mkpath(dirPath)\r\n\t\t\t\telse\r\n\t\t\t\t\tresult = mkpath(fpath)\r\n\t\t\t\tdbgReturn 'pathTo', result\r\n\t\t\t\treturn result\r\n\telse if (direction == 'up')\r\n\t\tnLevels = 0\r\n\t\twhile defined(dirPath = getParentDir(searchDir))\r\n\t\t\tnLevels += 1\r\n\t\t\tfpath = mkpath(dirPath, fname)\r\n\t\t\tif isFile(fpath)\r\n\t\t\t\tif relative\r\n\t\t\t\t\tresult = \"../\".repeat(nLevels) + fname\r\n\t\t\t\telse if directory\r\n\t\t\t\t\tresult = mkpath(dirPath)\r\n\t\t\t\telse\r\n\t\t\t\t\tresult = mkpath(fpath)\r\n\t\t\t\tdbgReturn 'pathTo', result\r\n\t\t\t\treturn result\r\n\t\t\tsearchDir = dirPath\r\n\telse\r\n\t\tcroak \"pathTo(): Invalid direction '#{direction}'\"\r\n\tdbgReturn 'pathTo', undef\r\n\treturn undef\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport allPathsTo = (fname, searchDir) =>\r\n\t# --- Only searches upward\r\n\r\n\tif ! searchDir\r\n\t\tsearchDir = process.cwd()\r\n\tpath = pathTo(fname, searchDir, {direction: \"up\"})\r\n\tif defined(path)\r\n\t\tlPaths = [path] # --- build an array of paths\r\n\t\t# --- search upward for files, but return ordered top down\r\n\t\twhile (h = pathlib.parse(path)) \\\r\n\t\t\t\t&& (path = pathTo(fname, pathlib.resolve(h.dir, '..'), {direction: \"up\"}))\r\n\t\t\tlPaths.unshift path\r\n\t\treturn lPaths\r\n\telse\r\n\t\treturn []\r\n\r\n# ---------------------------------------------------------------------------\r\n\r\nexport shortenPath = (path) =>\r\n\t# --- Replace user's home dir with '~'\r\n\r\n\tstr = mkpath(path)\r\n\tif lMatches = str.match(///^\r\n\t\t\t[A-Za-z]:/Users/[a-z_][a-z0-9_]*/(.*)\r\n\t\t\t$///i)\r\n\t\t[_, tail] = lMatches\r\n\t\treturn \"~/#{tail}\"\r\n\telse\r\n\t\treturn str\r\n\r\n# ---------------------------------------------------------------------------\r\n"
|
12
12
|
]
|
13
13
|
}
|