| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- #!/usr/bin/env node
- // Iterate through all folders and files in a directory, return directory structure array
- const fs = require('fs')
- const path = require('path')
- const operation = process.argv[2]
- const relativePath = process.argv[3]
- if (!operation || !relativePath) {
- process.stdout.write(JSON.stringify({
- success: false,
- error: 'Missing required parameters: operation and directory path'
- }) + '\n')
- process.exit(1)
- }
- const staticDir = process.env.STATIC_ROOT
- ? path.resolve(process.env.STATIC_ROOT)
- : path.resolve(__dirname, '..', 'static')
- const normalizedPath = path.normalize(relativePath).replace(/\\/g, '/')
- if (normalizedPath.includes('..') || normalizedPath.startsWith('/')) {
- process.stdout.write(JSON.stringify({
- success: false,
- error: 'Invalid directory path'
- }) + '\n')
- process.exit(1)
- }
- const targetDir = path.resolve(staticDir, normalizedPath)
- if (!targetDir.startsWith(staticDir)) {
- process.stdout.write(JSON.stringify({
- success: false,
- error: 'Directory path must be within static directory'
- }) + '\n')
- process.exit(1)
- }
- if (!fs.existsSync(targetDir)) {
- process.stdout.write(JSON.stringify({
- success: false,
- error: 'Directory does not exist'
- }) + '\n')
- process.exit(1)
- }
- const stats = fs.statSync(targetDir)
- if (!stats.isDirectory()) {
- process.stdout.write(JSON.stringify({
- success: false,
- error: 'Path is not a directory'
- }) + '\n')
- process.exit(1)
- }
- // Read only first level directories and files
- function readFirstLevel(dirPath) {
- const forders = []
- const files = []
- const entries = fs.readdirSync(dirPath, { withFileTypes: true })
- for (const entry of entries) {
- if (entry.isDirectory()) {
- forders.push(entry.name)
- } else {
- files.push(entry.name)
- }
- }
- return {
- forders: forders,
- files: files
- }
- }
- if (operation === 'read') {
- const result = readFirstLevel(targetDir)
- process.stdout.write(JSON.stringify(result) + '\n')
- process.exit(0)
- } else {
- process.stdout.write(JSON.stringify({
- success: false,
- error: `Unknown operation: ${operation}. Supported: read`
- }) + '\n')
- process.exit(1)
- }
|