| import fs from "fs"; |
| |
| export default async function getSubcommandsInFolder(path: string, indent: string = "") { |
| const files = fs.readdirSync(path, { withFileTypes: true }).filter( |
| file => !file.name.endsWith(".ts") && !file.name.endsWith(".map") |
| ); |
| const subcommands = []; |
| const subcommandGroups = []; |
| let errors = 0; |
| for (const file of files) { |
| if (file.name === "_meta.js") continue; |
| try { |
| if (file.isDirectory()) { |
| // Get the _meta.ts file |
| subcommandGroups.push(await import(`../../../${path}/${file.name}/_meta.js`)); |
| } else if (file.name.endsWith(".js")) { |
| // If its a file |
| console.log(`│ ${indent}├─ Loading subcommand ${file.name}`) |
| subcommands.push(await import(`../../../${path}/${file.name}`)); |
| } |
| } catch (e) { |
| console.error(`│ ${indent}│ └─ Error loading ${file.name}: ${e}`); |
| errors++; |
| } |
| } |
| return {subcommands, subcommandGroups, errors}; |
| } |