Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ LSAudio 将音效参数编辑、曲线展示、音频试听和设备通信集中

## 快速开始

安装包入口:[GitHub Releases](https://github.com/LISTENAI/equalizer/releases)(需要仓库访问权限)。首个预览版计划为 `1.2.0-beta.1`,验收完成前不会标为已发布。源码运行与本地打包仍可使用。
安装包入口:[GitHub Releases](https://github.com/LISTENAI/equalizer/releases)(发布后公开下载)。首个预览版计划为 `1.2.0-beta.1`,验收完成前不会标为已发布。源码运行与本地打包仍可使用。

### 安装应用

Expand Down
2 changes: 1 addition & 1 deletion docs/RELEASING.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# LSAudio 发布维护

仓库保持私有;Release 仅供有仓库权限的成员下载。产品标识 `listenai.com`、名称 `LSAudio` 和 Electron 用户数据目录保持不变。不接入在线更新。
仓库保持公开;通过验收的 Release 可公开下载,草稿仍仅供维护者检查。发布任务检查仓库可见性为 public。产品标识 `listenai.com`、名称 `LSAudio` 和 Electron 用户数据目录保持不变。不接入在线更新。

## 工作流

Expand Down
9 changes: 7 additions & 2 deletions scripts/release/github.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,12 @@ function api(route) { return JSON.parse(gh('api', `repos/${repository}/${route}`
function release(tag) {
const result = spawnSync('gh', ['api', `repos/${repository}/releases/tags/${tag}`], { encoding: 'utf8' });
if (result.status === 0) return JSON.parse(result.stdout);
if (/HTTP 404/.test(result.stderr)) return null;
if (/HTTP 404/.test(result.stderr)) {
// GitHub's tag endpoint may omit an unpublished draft. Authenticated
// release listings include drafts; never create a duplicate on retry.
const pages = JSON.parse(gh('api', `repos/${repository}/releases?per_page=100`, '--paginate', '--slurp'));
return pages.flat().find(item => item.tag_name === tag) || null;
}
throw new Error(result.stderr);
}
function assertDraft(existing, sha) {
Expand All @@ -36,7 +41,7 @@ function assets(directory, version, sha) {
return expected;
}
function draft(tag, directory) {
if (!JSON.parse(gh('api', `repos/${repository}`)).private) throw new Error('This release workflow requires a private repository');
if (JSON.parse(gh('api', `repos/${repository}`)).private) throw new Error('This release workflow requires a public repository');
const version = verify({ tag, master: 'refs/remotes/origin/master' });
const sha = gh('api', `repos/${repository}/git/ref/tags/${tag}`, '--jq', '.object.sha');
const files = assets(directory, version, sha);
Expand Down
Loading