Skip to content

Commit c982796

Browse files
committed
chore(release): read packages dynamically
1 parent 946a825 commit c982796

File tree

3 files changed

+33
-34
lines changed

3 files changed

+33
-34
lines changed

packages/tsconfig/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
{
22
"name": "@next-auth/tsconfig",
3+
"private": true,
34
"version": "0.0.0",
45
"license": "MIT",
56
"main": "index.js",
67
"files": [
78
"adapters.json",
89
"base.json"
910
]
10-
}
11+
}

scripts/release/analyze.ts

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,28 +3,36 @@ import type {
33
GroupedCommits as GrouppedCommits,
44
PackageToRelease,
55
} from "./types"
6+
import type { ConfigType } from "./config"
67

78
import { debug, pkgJson, execSync } from "./utils"
89
import semver from "semver"
910
import parseCommit from "@commitlint/parse"
1011
import gitLog from "git-log-parser"
1112
import streamToArray from "stream-to-array"
13+
import fs from "node:fs"
14+
import path from "node:path"
15+
16+
function getPackages(rootDir: string, packageDirectories: string[]) {
17+
const packages = []
18+
19+
for (const dir of packageDirectories) {
20+
const packagesPath = path.join(rootDir, dir)
21+
for (const d of fs.readdirSync(packagesPath)) {
22+
const packageJSONPath = path.join(packagesPath, d, "package.json")
23+
const packageJSON = JSON.parse(fs.readFileSync(packageJSONPath, "utf8"))
24+
if (!packageJSON.private) packages.push(packageJSON.name)
25+
}
26+
}
27+
28+
return packages
29+
}
30+
31+
export async function analyze(config: ConfigType): Promise<PackageToRelease[]> {
32+
const { BREAKING_COMMIT_MSG, RELEASE_COMMIT_MSG, RELEASE_COMMIT_TYPES } =
33+
config
1234

13-
export async function analyze(options: {
14-
dryRun: boolean
15-
packages: Record<string, string>
16-
BREAKING_COMMIT_MSG: string
17-
RELEASE_COMMIT_MSG: string
18-
RELEASE_COMMIT_TYPES: string[]
19-
}): Promise<PackageToRelease[]> {
20-
const {
21-
packages,
22-
BREAKING_COMMIT_MSG,
23-
RELEASE_COMMIT_MSG,
24-
RELEASE_COMMIT_TYPES,
25-
} = options
26-
27-
const packageFolders = Object.values(options.packages)
35+
const packages = getPackages(config.rootDir, config.packageDirectories)
2836

2937
console.log("Identifying latest tag...")
3038
const latestTag = execSync("git describe --tags --abbrev=0", {
@@ -84,7 +92,7 @@ export async function analyze(options: {
8492
}
8593
const packageCommits = commitsSinceLatestTag.filter(({ commit }) => {
8694
const changedFiles = getChangedFiles(commit.short)
87-
return packageFolders.some((packageFolder) =>
95+
return packages.some((packageFolder) =>
8896
changedFiles.some((changedFile) => changedFile.startsWith(packageFolder))
8997
)
9098
})

scripts/release/config.ts

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,10 @@
1+
const rootDir = process.cwd()
2+
13
export const config = {
24
releaseBranches: ["main"],
3-
// TODO: Generate dynamically
4-
packages: {
5-
"next-auth": "packages/next-auth",
6-
"@next-auth/dgraph-adapter": "packages/adapter-dgraph",
7-
"@next-auth/fauna-adapter": "packages/adapter-fauna",
8-
"@next-auth/mikro-orm-adapter": "packages/adapter-mikro-orm",
9-
"@next-auth/neo4j-adapter": "packages/adapter-neo4j",
10-
"@next-auth/prisma-adapter": "packages/adapter-prisma",
11-
"@next-auth/upstash-redis-adapter": "packages/adapter-upstash-redis",
12-
"@next-auth/dynamodb-adapter": "packages/adapter-dynamodb",
13-
"@next-auth/firebase-adapter": "packages/adapter-firebase",
14-
"@next-auth/mongodb-adapter": "packages/adapter-mongodb",
15-
"@next-auth/pouchdb-adapter": "packages/adapter-pouchdb",
16-
"@next-auth/sequelize-adapter": "packages/adapter-sequelize",
17-
"@next-auth/typeorm-legacy-adapter": "packages/adapter-typeorm-legacy",
18-
},
19-
rootDir: process.cwd(),
5+
// TODO: Read from pnpm-workspace.yaml
6+
packageDirectories: ["packages"],
7+
rootDir,
208
BREAKING_COMMIT_MSG: "BREAKING CHANGE:",
219
RELEASE_COMMIT_MSG: "chore(release): bump package version(s) [skip ci]",
2210
RELEASE_COMMIT_TYPES: ["feat", "fix"],
@@ -26,3 +14,5 @@ export const config = {
2614
process.argv.includes("--dry-run"),
2715
verbose: !!process.env.VERBOSE || process.argv.includes("--verbose"),
2816
}
17+
18+
export type ConfigType = typeof config

0 commit comments

Comments
 (0)