list-versions.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env bun
  2. /**
  3. * List available upstream versions
  4. *
  5. * Usage:
  6. * bun run script/upstream/list-versions.ts
  7. */
  8. import { getAvailableUpstreamVersions, getCurrentKiloVersion } from "./utils/version"
  9. import { fetchUpstream, hasUpstreamRemote } from "./utils/git"
  10. import { header, info, success, warn, error } from "./utils/logger"
  11. async function main() {
  12. header("Available Upstream Versions")
  13. // Check upstream remote
  14. if (!(await hasUpstreamRemote())) {
  15. error("No 'upstream' remote found. Please add it:")
  16. info(" git remote add upstream [email protected]:anomalyco/opencode.git")
  17. process.exit(1)
  18. }
  19. info("Fetching upstream tags...")
  20. await fetchUpstream()
  21. const versions = await getAvailableUpstreamVersions()
  22. const kiloVersion = await getCurrentKiloVersion()
  23. console.log()
  24. success(`Current Kilo version: ${kiloVersion}`)
  25. console.log()
  26. info("Available upstream versions (newest first):")
  27. console.log()
  28. const limit = process.argv.includes("--all") ? versions.length : 20
  29. for (let i = 0; i < Math.min(limit, versions.length); i++) {
  30. const v = versions[i]
  31. if (!v) continue
  32. const marker = i === 0 ? " (latest)" : ""
  33. console.log(` ${v.tag.padEnd(12)} ${v.commit.slice(0, 8)}${marker}`)
  34. }
  35. if (versions.length > limit) {
  36. console.log()
  37. info(`Showing ${limit} of ${versions.length} versions. Use --all to see all.`)
  38. }
  39. console.log()
  40. info("To merge a specific version:")
  41. info(" bun run script/upstream/merge.ts --version v1.1.49")
  42. console.log()
  43. info("To merge the latest version:")
  44. info(" bun run script/upstream/merge.ts")
  45. }
  46. main().catch((err) => {
  47. error(`Error: ${err}`)
  48. process.exit(1)
  49. })