this repo has no description

feat: add setup script skeleton

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Changed files
+76 -1
scripts
+2 -1
package.json
··· 6 6 "scripts": { 7 7 "dev": "wrangler dev", 8 8 "deploy": "wrangler deploy", 9 - "test": "node --test test/*.test.js" 9 + "test": "node --test test/*.test.js", 10 + "setup": "node scripts/setup.js" 10 11 } 11 12 }
+74
scripts/setup.js
··· 1 + #!/usr/bin/env node 2 + 3 + /** 4 + * PDS Setup Script 5 + * 6 + * Registers a did:plc, initializes the PDS, and notifies the relay. 7 + * Zero dependencies - uses Node.js built-ins only. 8 + * 9 + * Usage: node scripts/setup.js --handle alice --pds https://your-pds.workers.dev 10 + */ 11 + 12 + import { webcrypto } from 'crypto' 13 + 14 + // === ARGUMENT PARSING === 15 + 16 + function parseArgs() { 17 + const args = process.argv.slice(2) 18 + const opts = { 19 + handle: null, 20 + pds: null, 21 + plcUrl: 'https://plc.directory', 22 + relayUrl: 'https://bsky.network' 23 + } 24 + 25 + for (let i = 0; i < args.length; i++) { 26 + if (args[i] === '--handle' && args[i + 1]) { 27 + opts.handle = args[++i] 28 + } else if (args[i] === '--pds' && args[i + 1]) { 29 + opts.pds = args[++i] 30 + } else if (args[i] === '--plc-url' && args[i + 1]) { 31 + opts.plcUrl = args[++i] 32 + } else if (args[i] === '--relay-url' && args[i + 1]) { 33 + opts.relayUrl = args[++i] 34 + } 35 + } 36 + 37 + if (!opts.handle || !opts.pds) { 38 + console.error('Usage: node scripts/setup.js --handle <handle> --pds <pds-url>') 39 + console.error('') 40 + console.error('Options:') 41 + console.error(' --handle Handle name (e.g., "alice")') 42 + console.error(' --pds PDS URL (e.g., "https://atproto-pds.chad-53c.workers.dev")') 43 + console.error(' --plc-url PLC directory URL (default: https://plc.directory)') 44 + console.error(' --relay-url Relay URL (default: https://bsky.network)') 45 + process.exit(1) 46 + } 47 + 48 + return opts 49 + } 50 + 51 + // === MAIN === 52 + 53 + async function main() { 54 + const opts = parseArgs() 55 + 56 + console.log('PDS Federation Setup') 57 + console.log('====================') 58 + console.log(`Handle: ${opts.handle}`) 59 + console.log(`PDS: ${opts.pds}`) 60 + console.log(`PLC: ${opts.plcUrl}`) 61 + console.log(`Relay: ${opts.relayUrl}`) 62 + console.log('') 63 + 64 + // TODO: Implement in subsequent tasks 65 + console.log('TODO: Generate keypair') 66 + console.log('TODO: Register DID:PLC') 67 + console.log('TODO: Initialize PDS') 68 + console.log('TODO: Notify relay') 69 + } 70 + 71 + main().catch(err => { 72 + console.error('Error:', err.message) 73 + process.exit(1) 74 + })