OverviewFilesCommitsIssuesDocsReleasesPeers

pear-git / scripts / list-issues.js

52 lines · javascript ref:
#!/usr/bin/env bare

import Corestore from 'corestore'
import Hyperbee from 'hyperbee'
import process from 'bare-process'

async function main() {
  const repoName = process.argv[2] || 'pear-git'

  console.log(`📋 Listing issues for ${repoName}...\n`)

  const store = new Corestore('./pear-git-storage')
  await store.ready()

  const core = store.get({ name: 'pear-git-db' })
  const db = new Hyperbee(core, { keyEncoding: 'utf-8', valueEncoding: 'json' })
  await db.ready()

  try {
    let count = 0
    for await (const entry of db.createReadStream({
      gt: `issue:${repoName}:`,
      lt: `issue:${repoName}:\xff`
    })) {
      count++
      const issue = entry.value
      console.log(`Issue #${issue.number}: ${issue.title}`)
      console.log(`  Status: ${issue.status}`)
      console.log(`  Created: ${new Date(issue.createdAt).toISOString()}`)
      console.log(`  Description: ${issue.description.substring(0, 100)}...`)
      console.log('')
    }

    if (count === 0) {
      console.log('No issues found.')
    } else {
      console.log(`Total: ${count} issue(s)`)
    }
  } catch (err) {
    console.error('Error:', err.message)
    process.exit(1)
  } finally {
    await db.close()
    await store.close()
  }
}

main().catch(err => {
  console.error('Fatal error:', err)
  process.exit(1)
})