#!/usr/bin/env bare
/**
* Create a bearer token for API access
*/
import Corestore from 'corestore'
import Hyperbee from 'hyperbee'
import process from 'bare-process'
import { BearerTokenProvider } from '../lib/auth/providers/bearer-token.js'
import { IdentityFacade } from '../lib/facades/identity-facade.js'
import { MetadataBase } from '../lib/metadata-base.js'
async function main() {
const username = process.argv[2] || 'admin'
const description = process.argv[3] || 'CLI-generated token'
const permissions = process.argv[4]?.split(',') || ['read', 'create-issue', 'manage-issues', 'write', 'admin']
console.log('🔑 Creating bearer token...')
console.log(` Username: ${username}`)
console.log(` Description: ${description}`)
console.log(` Permissions: ${permissions.join(', ')}`)
console.log('')
// Initialize storage
const store = new Corestore('./pear-git-storage')
await store.ready()
const core = store.get({ name: 'registry' })
const db = new Hyperbee(core, { keyEncoding: 'utf-8', valueEncoding: 'json' })
await db.ready()
const registry = { db }
const tokenProvider = new BearerTokenProvider(registry)
try {
const result = await tokenProvider.createToken({
username,
description,
permissions,
repos: ['*']
})
console.log('✅ Token created successfully!')
console.log('')
console.log('Token:', result.token)
console.log('')
console.log('Usage:')
console.log(` curl -H "Authorization: Bearer ${result.token}" http://localhost:5005/git/tabertron/pear-git/api/issues`)
console.log('')
console.log('⚠️ Save this token securely - it cannot be retrieved later!')
} catch (err) {
console.error('❌ Error creating token:', err.message)
process.exit(1)
} finally {
await db.close()
await store.close()
}
}
main().catch(err => {
console.error('Fatal error:', err)
process.exit(1)
})