@ucdjs/release-scripts 0.1.0-beta.50 → 0.1.0-beta.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.mjs +71 -2
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -347,6 +347,59 @@ var GitHubClient = class {
347
347
  });
348
348
  logger.info(`Commit status set to ${farver.cyan(state)} for ${farver.gray(sha.substring(0, 7))}`);
349
349
  }
350
+ async upsertReleaseByTag({ tagName, name, body, prerelease = false }) {
351
+ const encodedTag = encodeURIComponent(tagName);
352
+ let existingRelease = null;
353
+ try {
354
+ existingRelease = await this.request(`/repos/${this.owner}/${this.repo}/releases/tags/${encodedTag}`);
355
+ } catch (error) {
356
+ if (formatUnknownError(error).status !== 404) throw error;
357
+ }
358
+ if (existingRelease) {
359
+ logger.verbose(`Updating release for tag ${farver.cyan(tagName)}`);
360
+ const updated = await this.request(`/repos/${this.owner}/${this.repo}/releases/${existingRelease.id}`, {
361
+ method: "PATCH",
362
+ body: JSON.stringify({
363
+ name,
364
+ body,
365
+ prerelease,
366
+ draft: false
367
+ })
368
+ });
369
+ logger.info(`Updated GitHub release for ${farver.cyan(tagName)}`);
370
+ return {
371
+ release: {
372
+ id: updated.id,
373
+ tagName: updated.tag_name,
374
+ name: updated.name ?? name,
375
+ htmlUrl: updated.html_url
376
+ },
377
+ created: false
378
+ };
379
+ }
380
+ logger.verbose(`Creating release for tag ${farver.cyan(tagName)}`);
381
+ const created = await this.request(`/repos/${this.owner}/${this.repo}/releases`, {
382
+ method: "POST",
383
+ body: JSON.stringify({
384
+ tag_name: tagName,
385
+ name,
386
+ body,
387
+ prerelease,
388
+ draft: false,
389
+ generate_release_notes: body == null
390
+ })
391
+ });
392
+ logger.info(`Created GitHub release for ${farver.cyan(tagName)}`);
393
+ return {
394
+ release: {
395
+ id: created.id,
396
+ tagName: created.tag_name,
397
+ name: created.name ?? name,
398
+ htmlUrl: created.html_url
399
+ },
400
+ created: true
401
+ };
402
+ }
350
403
  async resolveAuthorInfo(info) {
351
404
  if (info.login) return info;
352
405
  try {
@@ -2260,10 +2313,26 @@ async function publishWorkflow(options) {
2260
2313
  status.published.push(packageName);
2261
2314
  logger.step(`Creating git tag ${farver.cyan(`${packageName}@${version}`)}...`);
2262
2315
  const tagResult = await createAndPushPackageTag(packageName, version, options.workspaceRoot);
2316
+ const tagName = `${packageName}@${version}`;
2263
2317
  if (!tagResult.ok) {
2264
2318
  logger.error(`Failed to create/push tag: ${tagResult.error.message}`);
2265
- logger.warn(`Package was published but tag was not created. You may need to create it manually.`);
2266
- } else logger.success(`Created and pushed tag ${farver.cyan(`${packageName}@${version}`)}`);
2319
+ status.failed.push(packageName);
2320
+ exitWithError(`Publishing failed for ${packageName}: could not create git tag`, "Ensure the workflow token can push tags (contents: write) and git credentials are configured", tagResult.error);
2321
+ }
2322
+ logger.success(`Created and pushed tag ${farver.cyan(tagName)}`);
2323
+ logger.step(`Creating GitHub release for ${farver.cyan(tagName)}...`);
2324
+ try {
2325
+ const releaseResult = await options.githubClient.upsertReleaseByTag({
2326
+ tagName,
2327
+ name: tagName,
2328
+ prerelease: Boolean(semver.prerelease(version))
2329
+ });
2330
+ if (releaseResult.release.htmlUrl) logger.success(`${releaseResult.created ? "Created" : "Updated"} GitHub release: ${releaseResult.release.htmlUrl}`);
2331
+ else logger.success(`${releaseResult.created ? "Created" : "Updated"} GitHub release for ${farver.cyan(tagName)}`);
2332
+ } catch (error) {
2333
+ status.failed.push(packageName);
2334
+ exitWithError(`Publishing failed for ${packageName}: could not create GitHub release`, "Ensure the workflow token can write repository contents and releases", error);
2335
+ }
2267
2336
  }
2268
2337
  logger.section("📊 Publishing Summary");
2269
2338
  logger.item(`${farver.green("✓")} Published: ${status.published.length} package(s)`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ucdjs/release-scripts",
3
- "version": "0.1.0-beta.50",
3
+ "version": "0.1.0-beta.51",
4
4
  "description": "@ucdjs release scripts",
5
5
  "type": "module",
6
6
  "license": "MIT",