mirror of
https://github.com/linux-odyssey/linux-odyssey.git
synced 2026-11-08 03:20:12 +08:00
Feat filegraph (#194)
* feat: update filegraph on touch command * feat: update filegraph on mkdir * feat: add different parsing opts for each command * refactor: replace axios with fetch. put handleCommand to a new file * feat: add config for mounting cli in dev stage * refactor: clean up unused validators * feat: add command handler for copy files. reuse resolvePath function * feat: add rm handler, support specific files deletion. Glob not supported yet * feat: handle discover cases that the folder is actually empty * feat: handle discover empty folder better and support rmdir * feat: handle mv command * refactor: remove unused console logs
This commit is contained in:
1 parent
a732c1d119
commit
f0a09ac4d9
19 files changed
+326
-119
No files matched your search
@@ -1,21 +1,25 @@
|
||||
const fs = require('fs').promises
|
||||
const path = require('path')
|
||||
const { resolvePath } = require('./utils')
|
||||
|
||||
async function collectFilesInfo(inputPath, level = 0, hiddenFiles = false) {
|
||||
const stats = await fs.stat(inputPath)
|
||||
const name = path.basename(inputPath)
|
||||
const discovered = level <= 1 && (hiddenFiles || !name.startsWith('.'))
|
||||
const files = [
|
||||
{
|
||||
path: inputPath,
|
||||
name,
|
||||
type: stats.isDirectory() ? 'directory' : 'file',
|
||||
discovered,
|
||||
},
|
||||
]
|
||||
const self = {
|
||||
path: inputPath,
|
||||
name,
|
||||
type: stats.isDirectory() ? 'directory' : 'file',
|
||||
discovered,
|
||||
}
|
||||
const files = [self]
|
||||
if (stats.isDirectory() && level < 2) {
|
||||
try {
|
||||
let entries = await fs.readdir(inputPath)
|
||||
if (entries.length === 0) {
|
||||
self.empty = true
|
||||
return files
|
||||
}
|
||||
if (level > 0) {
|
||||
entries = entries.slice(0, 5)
|
||||
}
|
||||
@@ -37,7 +41,7 @@ async function discoverFiles(argv) {
|
||||
try {
|
||||
const result = await Promise.all(
|
||||
targetPath
|
||||
.map((p) => path.resolve(process.cwd(), p))
|
||||
.map((p) => resolvePath(p))
|
||||
.map((p) => collectFilesInfo(p, 0, argv.a || argv.all))
|
||||
)
|
||||
return { discover: result.flat() }
|
||||
@@ -46,4 +50,7 @@ async function discoverFiles(argv) {
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = discoverFiles
|
||||
module.exports = {
|
||||
discoverFiles,
|
||||
collectFilesInfo,
|
||||
}
|
||||
Reference in new issue
Block a user