- Fixed InternalError class definition in errorHandler.ts - Updated extension configuration and CI workflows - Improved error handling and type safety - Enhanced build and release automation - Updated documentation and changelogs Addresses review feedback on PR #997
52 lines
1.5 KiB
JavaScript
52 lines
1.5 KiB
JavaScript
#!/usr/bin/env node
|
|
import assert from 'node:assert/strict'
|
|
import { spawnSync } from 'node:child_process'
|
|
import { readFileSync } from 'node:fs'
|
|
import { join, dirname } from 'node:path'
|
|
import { fileURLToPath } from 'node:url'
|
|
|
|
const __filename = fileURLToPath(import.meta.url)
|
|
const __dirname = dirname(__filename)
|
|
|
|
// Read the extension's publishing package.json for accurate version/name
|
|
const extensionDir = join(__dirname, '..', 'apps', 'extension')
|
|
const publishPkgPath = join(extensionDir, 'package.publish.json')
|
|
|
|
let pkg
|
|
try {
|
|
const pkgContent = readFileSync(publishPkgPath, 'utf8')
|
|
pkg = JSON.parse(pkgContent)
|
|
} catch (error) {
|
|
console.error('Failed to read package.publish.json:', error.message)
|
|
process.exit(1)
|
|
}
|
|
|
|
// Ensure we have required fields
|
|
assert(pkg.name, 'package.publish.json must have a name field')
|
|
assert(pkg.version, 'package.publish.json must have a version field')
|
|
assert(pkg.repository, 'package.publish.json must have a repository field')
|
|
|
|
const tag = `${pkg.name}@${pkg.version}`
|
|
|
|
// Get repository URL - handle both string and object format
|
|
const repoUrl = typeof pkg.repository === 'string'
|
|
? pkg.repository
|
|
: pkg.repository.url
|
|
|
|
assert(repoUrl, 'Repository URL not found in package.publish.json')
|
|
|
|
const { status, stdout, error } = spawnSync('git', [
|
|
'ls-remote',
|
|
repoUrl,
|
|
tag
|
|
])
|
|
|
|
assert.equal(status, 0, error)
|
|
|
|
const exists = String(stdout).trim() !== ''
|
|
|
|
if (!exists) {
|
|
console.log(`\nNew extension tag: ${tag}`)
|
|
} else {
|
|
console.log(`\nExtension tag already exists: ${tag}`)
|
|
}
|