| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #!/usr/bin/env node
- // List folder names in a directory
- const fs = require('fs')
- const path = require('path')
- const relativePath = process.argv[2]
- if (!relativePath) {
- process.stdout.write(JSON.stringify({
- success: false,
- error: 'Missing required parameter: directory path'
- }) + '\n')
- process.exit(1)
- }
- const staticDir = 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 file path'
- }) + '\n')
- process.exit(1)
- }
- const targetDir = path.resolve(staticDir, normalizedPath)
- if (!targetDir.startsWith(staticDir)) {
- process.stdout.write(JSON.stringify({
- success: false,
- error: '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)
- }
- const entries = fs.readdirSync(targetDir, { withFileTypes: true })
- const folderNames = []
- for (const entry of entries) {
- if (entry.isDirectory()) {
- folderNames.push(entry.name)
- }
- }
- process.stdout.write(JSON.stringify({
- success: true,
- data: folderNames
- }) + '\n')
- process.exit(0)
|