Skip to main content
Glama

MCP Auth

by rubenpenap
copy-test-files.js•3.4 kB
#!/usr/bin/env node import { existsSync } from 'fs' import { readdir, stat, copyFile, mkdir } from 'fs/promises' import path from 'node:path' import { fileURLToPath } from 'node:url' import { join, dirname } from 'path' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const here = (...p) => path.join(__dirname, ...p) const EXERCISES_DIR = here('..', 'exercises') /** * Copy test files from solution directories to their corresponding problem directories */ async function copyTestFiles() { console.log('šŸ” Scanning exercises directory...') try { const exerciseDirs = await readdir(EXERCISES_DIR) const exerciseNumbers = exerciseDirs .filter((dir) => /^\d+\./.test(dir)) .sort() console.log( `šŸ“ Found ${exerciseNumbers.length} exercise directories: ${exerciseNumbers.join(', ')}`, ) let totalCopied = 0 let totalSkipped = 0 for (const exerciseDir of exerciseNumbers) { const exercisePath = join(EXERCISES_DIR, exerciseDir) const exerciseStats = await stat(exercisePath) if (!exerciseStats.isDirectory()) continue console.log(`\nšŸ“‚ Processing ${exerciseDir}...`) const exerciseContents = await readdir(exercisePath) const solutionDirs = exerciseContents.filter((item) => item.includes('.solution.'), ) for (const solutionDir of solutionDirs) { const problemDir = solutionDir.replace('.solution.', '.problem.') const solutionPath = join(exercisePath, solutionDir) const problemPath = join(exercisePath, problemDir) // Check if both directories exist if (!existsSync(solutionPath) || !existsSync(problemPath)) { console.log( ` āš ļø Skipping ${solutionDir} - corresponding problem directory not found`, ) continue } const solutionTestPath = join(solutionPath, 'test') const problemTestPath = join(problemPath, 'test') // Check if solution test directory exists if (!existsSync(solutionTestPath)) { console.log( ` āš ļø Skipping ${solutionDir} - no test directory in solution`, ) continue } // Ensure problem test directory exists if (!existsSync(problemTestPath)) { await mkdir(problemTestPath, { recursive: true }) console.log(` šŸ“ Created test directory for ${problemDir}`) } // Copy test files const testFiles = await readdir(solutionTestPath) let copiedInThisDir = 0 for (const testFile of testFiles) { const sourceFile = join(solutionTestPath, testFile) const destFile = join(problemTestPath, testFile) try { await copyFile(sourceFile, destFile) console.log( ` āœ… Copied ${testFile} from ${solutionDir} to ${problemDir}`, ) copiedInThisDir++ } catch (error) { console.log(` āŒ Failed to copy ${testFile}: ${error.message}`) } } if (copiedInThisDir > 0) { totalCopied += copiedInThisDir console.log(` šŸ“Š Copied ${copiedInThisDir} files for ${problemDir}`) } else { totalSkipped++ } } } console.log(`\nšŸŽ‰ Copy operation completed!`) console.log(`šŸ“Š Total files copied: ${totalCopied}`) console.log(`āš ļø Directories skipped: ${totalSkipped}`) } catch (error) { console.error('āŒ Error:', error.message) process.exit(1) } } // Run the script if (import.meta.url === `file://${process.argv[1]}`) { copyTestFiles() } export { copyTestFiles }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rubenpenap/mcp-auth'

If you have feedback or need assistance with the MCP directory API, please join our Discord server