this repo has no description
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
12import { webcrypto } from 'crypto'
13
14// === ARGUMENT PARSING ===
15
16function 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
53async 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
71main().catch(err => {
72 console.error('Error:', err.message)
73 process.exit(1)
74})