ci(scripts): misc improvements

This commit is contained in:
Elliot DeNolf
2024-04-24 21:04:12 -04:00
parent 6f6c1435c7
commit 7ef5493414
3 changed files with 35 additions and 20 deletions

View File

@@ -1,17 +1,18 @@
import fse from 'fs-extra'
import path from 'path'
import globby from 'globby'
import path, { dirname } from 'path'
import { fileURLToPath } from 'url'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const packagesDir = path.resolve(__dirname, '../../packages')
const projectRoot = path.resolve(__dirname, '../../')
export type PackageDetails = {
/** Name in package.json / npm registry */
name: string
/** Full path to package */
packagePath: string
/** Full path to package relative to project root */
packagePath: `packages/${string}`
/** Short name is the directory name */
shortName: string
/** Version in package.json */
@@ -19,20 +20,23 @@ export type PackageDetails = {
}
export const getPackageDetails = async (packages: string[]): Promise<PackageDetails[]> => {
const packageDirs = fse.readdirSync(packagesDir).filter((d) => packages.includes(d))
const packageJsons = await globby('packages/*/package.json', {
cwd: projectRoot,
absolute: true,
})
const packageDetails = await Promise.all(
packageDirs.map(async (dirName) => {
const packageJson = await fse.readJson(`${packagesDir}/${dirName}/package.json`)
packageJsons.map(async (packageJsonPath) => {
const packageJson = await fse.readJson(packageJsonPath)
const isPublic = packageJson.private !== true
if (!isPublic) return null
return {
name: packageJson.name as string,
packagePath: path.resolve(packagesDir, dirName),
shortName: dirName,
packagePath: path.relative(projectRoot, dirname(packageJsonPath)),
shortName: path.dirname(packageJsonPath),
version: packageJson.version,
}
} as PackageDetails
}),
)

View File

@@ -1,7 +1,10 @@
import chalk from 'chalk'
import pLimit from 'p-limit'
import { getPackageDetails } from './getPackageDetails.js'
const npmRequestLimit = pLimit(40)
const packages = [
'payload',
'translations',
@@ -37,15 +40,21 @@ const packages = [
export const getPackageRegistryVersions = async (): Promise<void> => {
const packageDetails = await getPackageDetails(packages)
await Promise.all(
packageDetails.map(async (pkg) => {
// Get published version from npm
const json = await fetch(`https://registry.npmjs.org/${pkg.name}`).then((res) => res.json())
const { latest = 'N/A', beta = 'N/A', alpha = 'N/A' } = json['dist-tags'] ?? {}
const msg = `${chalk.bold(pkg.name.padEnd(32))} latest: ${latest?.padEnd(16)} beta: ${beta?.padEnd(16)} alpha: ${alpha}`
console.log(msg)
}),
const results = await Promise.all(
packageDetails.map(async (pkg) =>
npmRequestLimit(async () => {
// Get published version from npm
const json = await fetch(`https://registry.npmjs.org/${pkg.name}`).then((res) => res.json())
const { latest = 'N/A', beta = 'N/A', alpha = 'N/A' } = json['dist-tags'] ?? {}
const msg = `${chalk.bold(pkg.name.padEnd(32))} latest: ${latest?.padEnd(
16,
)} beta: ${beta?.padEnd(16)} alpha: ${alpha}`
return msg
}),
),
)
console.log(results.join('\n'))
}
if (import.meta.url === new URL(import.meta.url).href) {