Avoid hitting a deprecation warning when encountering errors from @octokit/request-error (#461)

* fix: use status when http err

* tweak code

* add changeset

---------

Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
This commit is contained in:
Younsang Na
2025-05-11 11:15:02 +02:00
committed by GitHub
co-authored by Mateusz Burzyński
parent c1f57e52f9
commit e9c36b6964
3 changed files with 40 additions and 35 deletions
+5
View File
@@ -0,0 +1,5 @@
---
"@changesets/action": patch
---
Avoid hitting a deprecation warning when encountering errors from `@octokit/request-error`
+26 -35
View File
@@ -14,6 +14,7 @@ import {
getChangedPackages, getChangedPackages,
getChangelogEntry, getChangelogEntry,
getVersionsByDirectory, getVersionsByDirectory,
isErrorWithCode,
sortTheThings, sortTheThings,
} from "./utils"; } from "./utils";
@@ -27,38 +28,32 @@ const createRelease = async (
octokit: Octokit, octokit: Octokit,
{ pkg, tagName }: { pkg: Package; tagName: string } { pkg, tagName }: { pkg: Package; tagName: string }
) => { ) => {
let changelog;
try { try {
let changelogFileName = path.join(pkg.dir, "CHANGELOG.md"); changelog = await fs.readFile(path.join(pkg.dir, "CHANGELOG.md"), "utf8");
let changelog = await fs.readFile(changelogFileName, "utf8");
let changelogEntry = getChangelogEntry(changelog, pkg.packageJson.version);
if (!changelogEntry) {
// we can find a changelog but not the entry for this version
// if this is true, something has probably gone wrong
throw new Error(
`Could not find changelog entry for ${pkg.packageJson.name}@${pkg.packageJson.version}`
);
}
await octokit.rest.repos.createRelease({
name: tagName,
tag_name: tagName,
body: changelogEntry.content,
prerelease: pkg.packageJson.version.includes("-"),
...github.context.repo,
});
} catch (err) { } catch (err) {
// if we can't find a changelog, the user has probably disabled changelogs if (isErrorWithCode(err, "ENOENT")) {
if ( // if we can't find a changelog, the user has probably disabled changelogs
err && return;
typeof err === "object" &&
"code" in err &&
err.code !== "ENOENT"
) {
throw err;
} }
throw err;
} }
let changelogEntry = getChangelogEntry(changelog, pkg.packageJson.version);
if (!changelogEntry) {
// we can find a changelog but not the entry for this version
// if this is true, something has probably gone wrong
throw new Error(
`Could not find changelog entry for ${pkg.packageJson.name}@${pkg.packageJson.version}`
);
}
await octokit.rest.repos.createRelease({
name: tagName,
tag_name: tagName,
body: changelogEntry.content,
prerelease: pkg.packageJson.version.includes("-"),
...github.context.repo,
});
}; };
type PublishOptions = { type PublishOptions = {
@@ -169,14 +164,10 @@ const requireChangesetsCliPkgJson = (cwd: string) => {
try { try {
return require(resolveFrom(cwd, "@changesets/cli/package.json")); return require(resolveFrom(cwd, "@changesets/cli/package.json"));
} catch (err) { } catch (err) {
if ( if (isErrorWithCode(err, "MODULE_NOT_FOUND")) {
err &&
typeof err === "object" &&
"code" in err &&
err.code === "MODULE_NOT_FOUND"
) {
throw new Error( throw new Error(
`Have you forgotten to install \`@changesets/cli\` in "${cwd}"?` `Have you forgotten to install \`@changesets/cli\` in "${cwd}"?`,
{ cause: err }
); );
} }
throw err; throw err;
+9
View File
@@ -96,3 +96,12 @@ export function sortTheThings(
} }
return -1; return -1;
} }
export function isErrorWithCode(err: unknown, code: string) {
return (
typeof err === "object" &&
err !== null &&
"code" in err &&
err.code === code
);
}