@khatastroffik/treefolder 1.2.1 → 1.3.1
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/README.md +5 -0
- package/dist/index.js +9 -11
- package/package.json +39 -4
package/README.md
CHANGED
|
@@ -42,6 +42,7 @@ This is the recommanded and easiest approach.
|
|
|
42
42
|
1. [Styled output](#styled-output)
|
|
43
43
|
1. [Version information](#version-information)
|
|
44
44
|
1. [Verbose output](#verbose-output)
|
|
45
|
+
1. [Debug Output](#debug-output)
|
|
45
46
|
|
|
46
47
|
### Auto "root folder"
|
|
47
48
|
|
|
@@ -90,6 +91,10 @@ Use the command line argument `--version` or `-v` to display the version informa
|
|
|
90
91
|
|
|
91
92
|
When the flag i.e. command line argument `--verbose` is defined/set, then a few more information will be displayed together with the tree representation.
|
|
92
93
|
|
|
94
|
+
### Debug output
|
|
95
|
+
|
|
96
|
+
Use the flag `--debug` (short `-d`) to display additional information about the used tool configuration.
|
|
97
|
+
|
|
93
98
|
## Development
|
|
94
99
|
|
|
95
100
|
### Manually install as a globally available CLI tool `tfold`
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#! /usr/bin/env node
|
|
2
|
-
"use strict";var
|
|
2
|
+
"use strict";var O=Object.create;var F=Object.defineProperty;var S=Object.getOwnPropertyDescriptor;var M=Object.getOwnPropertyNames;var z=Object.getPrototypeOf,K=Object.prototype.hasOwnProperty;var R=(e,t,n,l)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of M(t))!K.call(e,i)&&i!==n&&F(e,i,{get:()=>t[i],enumerable:!(l=S(t,i))||l.enumerable});return e};var u=(e,t,n)=>(n=e!=null?O(z(e)):{},R(t||!e||!e.__esModule?F(n,"default",{value:e,enumerable:!0}):n,e));var b=u(require("node:path"));var s=class{static folderCount=1;static fileCount=0;static ignoredCount=0;static commandLineArgs={}};var h=require("node:process"),f=require("node:util");var p="1.3.1";function r(e){return(0,f.styleText)(typeof e=="number"?"yellow":"blueBright",`${e}`)}async function G(){let e=await fetch("https://registry.npmjs.org/@khatastroffik/treefolder");return await new Promise(l=>setTimeout(l,100)),(await e.json())["dist-tags"].latest}async function $(){if(o.version){let e=`
|
|
3
3
|
\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
|
|
4
4
|
| |
|
|
5
5
|
\u256D\u2501\u2533\u2501\u256D\u2501\u256D\u2501\u256E\u256E
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
\u2523\u2501\u2501\u2501\u2501\u2501\u2501\u252B
|
|
13
13
|
| |
|
|
14
14
|
\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 made by khatastroffik \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
|
|
15
|
-
`,t,n=await
|
|
15
|
+
`,t,n=await G();return n&&n!==p&&(t=(0,f.styleText)("yellow",`
|
|
16
16
|
\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510
|
|
17
17
|
| A new version of Treefolder is available: |
|
|
18
18
|
| current: ${p} -> latest: ${n} |
|
|
@@ -20,19 +20,17 @@
|
|
|
20
20
|
| Install the latest version with: |
|
|
21
21
|
| "npm update -g @khatastroffik/treefolder@latest" |
|
|
22
22
|
\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518
|
|
23
|
-
`)),console.info(
|
|
23
|
+
`)),console.info(r(`
|
|
24
24
|
Treefolder aka "tfold"
|
|
25
25
|
Version ${p}
|
|
26
26
|
|
|
27
27
|
https://npmjs.com/@khatastroffik/treefolder
|
|
28
|
-
${t??e}`)),(0,
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
`
|
|
32
|
-
`}function
|
|
33
|
-
`}function
|
|
34
|
-
`}function U(e){return`${c.default.join(e.contentItem.parentPath,e.contentItem.name)}
|
|
35
|
-
`}function X(e,t){return e.isDirectory()?t.isFile()?-1:e.name.localeCompare(t.name):t.isDirectory()?1:e.name.localeCompare(t.name)}function Y(e,t){let n=o.ignores.includes(c.default.join(e,t));return n&&s.ignoredCount++,n}async function Z(e){let t=(await q(e,{withFileTypes:!0})).filter(n=>!Y(e,n.name));return o.unsorted?t:t.sort(X)}async function A(e,t,n,l){let r=await Z(e),V=r.length<1?o.symbols.closed:o.symbols.open,N=n?"":(l?"\u2514\u2500":"\u251C\u2500")+(o.symbols.open?"":i),y=k({indent:t,folderPrefix:N,foldersymbol:V,folderName:e}),v=n?"":l?`${i}${i}${i}`:`\u2502${i}${i}`,F=r.length-1;for(let m=0;m<r.length;m++){let d=r[m];if(d.isDirectory()&&(y+=await A(c.default.join(e,d.name),t+v,!1,m===F)),d.isFile()){s.fileCount++;let B=m===F?`\u2514\u2500${o.symbols.file}${i}`:`\u251C\u2500${o.symbols.file}${i}`;y+=w({indent:t,contentItemPrefix:v,entityPrefix:B,contentItem:d})}}return s.folderCount++,y}async function D(){k=G,w=J,o.formatAsList&&(k=Q,w=U);let e=await A(o.root,"",!0,!0);console.info(e)}async function H(){await T(),await P(),await D(),await j()}H();
|
|
28
|
+
${t??e}`)),(0,h.exit)(0)}}async function P(){o.debug&&(console.info(r(`${"+".repeat(26)} DEBUG ${"+".repeat(27)}`)),console.info(r("Command line arguments:")),console.info(s.commandLineArgs),console.info(r("Treefolder configuration:")),console.info(o),console.info(r("FolderCount:"),r(s.folderCount)),console.info(r("FileCount:"),r(s.fileCount)),console.info(r("IgnoredCount:"),r(s.ignoredCount)),console.info(r("+".repeat(60))))}async function j(){o.verbose&&(console.info(r(`
|
|
29
|
+
Scanned ${r(s.folderCount)} folders and ${r(s.fileCount)} files.`)),console.info(r(`Filtered out ${r(s.ignoredCount)} items (folders or files).`)))}var Q={style:{type:"string",default:"none",short:"s"},verbose:{type:"boolean",default:!1},unsorted:{type:"boolean",default:!1,short:"u"},version:{type:"boolean",default:!1,short:"v"},list:{type:"boolean",default:!1,short:"l"},debug:{type:"boolean",default:!1,short:"d"}};function I(){try{return(0,f.parseArgs)({options:Q,allowPositionals:!0,strict:!0})}catch(e){let t=e;return console.error(`[${(0,f.styleText)("red",t.name)}]: ${t.message}`),(0,h.exit)(1)}}var a=" ",x=(i=>(i.none="none",i.wireframe="wireframe",i.black="black",i.colored="colored",i))(x||{}),T={none:{closed:"",open:"",file:""},wireframe:{closed:"\u{1F5C0} ",open:"\u{1F5C1} ",file:"\u{1F5CB}"},black:{closed:"\u{1F5BF} ",open:"\u{1F5BF} ",file:"\u{1F5CE}"},colored:{closed:"\u{1F4C1} ",open:"\u{1F4C2} ",file:"\u{1F4C4}"}},o={style:"none",symbols:T.none,root:".",ignores:["node_modules","dist","build",".git",".husky\\_","logs",".angular","coverage"],verbose:!1,unsorted:!1,formatAsList:!1,version:!1,debug:!1};async function D(){let{values:e,positionals:t}=I();o.version=e.version,o.formatAsList=e.list,o.style=x[e.style]??o.style,o.symbols=T[o.style],o.root=b.default.resolve(t[0]??o.root),o.ignores=o.ignores.map(n=>b.default.join(o.root,n)),o.unsorted=e.unsorted,o.verbose=e.verbose,o.debug=e.debug,s.commandLineArgs={...e,root:t[0]??"n/a"}}var L=u(require("node:fs")),d=u(require("node:path")),g=u(require("node:util"));var U=g.default.promisify(L.default.readdir),w,k;function W(e){return`${e.indent+e.folderPrefix+e.foldersymbol+d.default.basename(e.folderName)}
|
|
30
|
+
`}function q(e){return`${e.indent+e.contentItemPrefix+e.entityPrefix+e.contentItem.name}
|
|
31
|
+
`}function J(e){let t=e.folderName+d.default.sep;return o.style==="colored"&&(t=(0,g.styleText)("blueBright",t)),`${t}
|
|
32
|
+
`}function X(e){return`${d.default.join(e.contentItem.parentPath,e.contentItem.name)}
|
|
33
|
+
`}function Y(e,t){return e.isDirectory()?t.isFile()?-1:e.name.localeCompare(t.name):t.isDirectory()?1:e.name.localeCompare(t.name)}function Z(e,t){let n=o.ignores.includes(d.default.join(e,t));return n&&s.ignoredCount++,n}async function H(e){let t=(await U(e,{withFileTypes:!0})).filter(n=>!Z(e,n.name));return o.unsorted?t:t.sort(Y)}async function A(e,t,n,l){let i=await H(e),B=i.length<1?o.symbols.closed:o.symbols.open,N=n?"":(l?"\u2514\u2500":"\u251C\u2500")+(o.symbols.open?"":a),y=w({indent:t,folderPrefix:N,foldersymbol:B,folderName:e}),v=n?"":l?`${a}${a}${a}`:`\u2502${a}${a}`,C=i.length-1;for(let c=0;c<i.length;c++){let m=i[c];if(m.isDirectory()&&(y+=await A(d.default.join(e,m.name),t+v,!1,c===C)),m.isFile()){s.fileCount++;let E=c===C?`\u2514\u2500${o.symbols.file}${a}`:`\u251C\u2500${o.symbols.file}${a}`;y+=k({indent:t,contentItemPrefix:v,entityPrefix:E,contentItem:m})}}return s.folderCount++,y}async function V(){w=W,k=q,o.formatAsList&&(w=J,k=X);let e=await A(o.root,"",!0,!0);console.info(e)}async function ee(){await D(),await $(),await V(),await P(),await j()}ee();
|
|
36
34
|
/*!
|
|
37
35
|
* @khatastroffik/treefolder
|
|
38
36
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@khatastroffik/treefolder",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"devEngines": {
|
|
5
5
|
"packageManager": [
|
|
6
6
|
{
|
|
@@ -74,6 +74,41 @@
|
|
|
74
74
|
},
|
|
75
75
|
"commit-and-tag-version": {
|
|
76
76
|
"types": [
|
|
77
|
+
{
|
|
78
|
+
"type": "feat",
|
|
79
|
+
"section": "Features",
|
|
80
|
+
"hidden": false
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"type": "chore",
|
|
84
|
+
"section": "Chore",
|
|
85
|
+
"hidden": false
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"type": "ci",
|
|
89
|
+
"section": "CI/CD",
|
|
90
|
+
"hidden": false
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"type": "improve",
|
|
94
|
+
"section": "Improvements / Addendum",
|
|
95
|
+
"hidden": false
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
"type": "fix",
|
|
99
|
+
"section": "Bug Fixes / Corrigendum",
|
|
100
|
+
"hidden": false
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"type": "perf",
|
|
104
|
+
"section": "Performance / Optimization",
|
|
105
|
+
"hidden": false
|
|
106
|
+
},
|
|
107
|
+
{
|
|
108
|
+
"type": "test",
|
|
109
|
+
"section": "Code Quality",
|
|
110
|
+
"hidden": false
|
|
111
|
+
},
|
|
77
112
|
{
|
|
78
113
|
"type": "refactor",
|
|
79
114
|
"section": "Refactors",
|
|
@@ -105,9 +140,9 @@
|
|
|
105
140
|
"pushtags": "git push --follow-tags origin main",
|
|
106
141
|
"try-commit": "git hook run pre-commit",
|
|
107
142
|
"tsx": "tsx",
|
|
108
|
-
"release": "
|
|
109
|
-
"release:test": "
|
|
110
|
-
"pub": "pnpm pushtags && pnpm publish",
|
|
143
|
+
"release": "pnpx commit-and-tag-version",
|
|
144
|
+
"release:test": "pnpx commit-and-tag-version --dry-run",
|
|
145
|
+
"pub": "pnpm build2prod && pnpm pushtags && pnpm publish",
|
|
111
146
|
"pub:test": "pnpm publish --dry-run --force --no-git-checks"
|
|
112
147
|
}
|
|
113
148
|
}
|