Skip to content

Commit 0f060c1

Browse files
committed
fix: Don´t throw error if Release is not a Draft and build triggered by Tag
Closes #429
1 parent 7166580 commit 0f060c1

File tree

3 files changed

+19
-11
lines changed

3 files changed

+19
-11
lines changed

src/builder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export async function createPublisher(packager: Packager, options: BuildOptions,
2121
throw new Error("Please specify 'repository' in the dev package.json ('" + packager.devPackageFile + "')")
2222
}
2323
else {
24-
return new GitHubPublisher(info.user, info.project, packager.metadata.version, options.githubToken!, options.publish !== "onTagOrDraft")
24+
return new GitHubPublisher(info.user, info.project, packager.metadata.version, options.githubToken!, options.publish!)
2525
}
2626
}
2727

src/gitHubPublisher.ts

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Release, Asset } from "gh-release"
2-
import { log } from "./util"
2+
import { log, warn } from "./util"
33
import { basename } from "path"
44
import { parse as parseUrl } from "url"
55
import * as mime from "mime"
@@ -31,7 +31,7 @@ export class GitHubPublisher implements Publisher {
3131
return this._releasePromise
3232
}
3333

34-
constructor(private owner: string, private repo: string, version: string, private token: string | null, private createReleaseIfNotExists: boolean = true) {
34+
constructor(private owner: string, private repo: string, version: string, private token: string | null, private policy: string = "always") {
3535
if (token == null || token.length === 0) {
3636
throw new Error("GitHub Personal Access Token is not specified")
3737
}
@@ -41,23 +41,31 @@ export class GitHubPublisher implements Publisher {
4141
}
4242

4343
private async init(): Promise<Release | null> {
44+
const createReleaseIfNotExists = this.policy !== "onTagOrDraft"
4445
// we don't use "Get a release by tag name" because "tag name" means existing git tag, but we draft release and don't create git tag
4546
const releases = await gitHubRequest<Array<Release>>(`/repos/${this.owner}/${this.repo}/releases`, this.token)
4647
for (let release of releases) {
47-
if (release!.tag_name === this.tag) {
48-
if (!release!.draft) {
49-
if (this.createReleaseIfNotExists) {
48+
if (release.tag_name === this.tag) {
49+
if (!release.draft) {
50+
if (this.policy === "onTag") {
5051
throw new Error("Release must be a draft")
5152
}
5253
else {
54+
const message = `Release ${this.tag} is not a draft, artifacts will be not published`
55+
if (this.policy === "always") {
56+
warn(message)
57+
}
58+
else {
59+
log(message)
60+
}
5361
return null
5462
}
5563
}
5664
return release!
5765
}
5866
}
5967

60-
if (this.createReleaseIfNotExists) {
68+
if (createReleaseIfNotExists) {
6169
log("Release %s doesn't exists, creating one", this.tag)
6270
return this.createRelease()
6371
}

test/src/winPackagerTest.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ test.ifNotCiOsx("win", () => assertPack("test-app-one", signed({
1818
})
1919
))
2020

21-
test.ifNotCiOsx("win 32", () => assertPack("test-app-one", signed({
22-
targets: Platform.WINDOWS.createTarget(null, Arch.ia32),
23-
})
24-
))
21+
// test.ifNotCiOsx("win 32", () => assertPack("test-app-one", signed({
22+
// targets: Platform.WINDOWS.createTarget(null, Arch.ia32),
23+
// })
24+
// ))
2525

2626
// very slow
2727
test.ifWinCi("delta", () => assertPack("test-app-one", {

0 commit comments

Comments
 (0)