38 Commits

Author SHA1 Message Date
Nick Cipollo
4c75f0f2e4 v1.11.1 release
Some checks failed
Test / check_pr (push) Has been cancelled
2022-10-04 12:30:45 -04:00
Nick Cipollo
b072aaafe1 update debug build 2022-10-04 08:09:17 -04:00
Nick Cipollo
f3ea29dca7 Fixes #262 normalize artifact paths 2022-10-04 08:08:09 -04:00
Nick Cipollo
889eb279f8 Fixes #261 Correctly set default on updateOnlyUnreleased 2022-10-02 18:19:43 -04:00
Nick Cipollo
5b3ed26ce2 Fixes #219 Add argument to allow only updating drafts and prereleases 2022-10-02 17:35:42 -04:00
Nick Cipollo
fc324198c9 Updating dependencies 10/02/2022 2022-10-02 15:15:54 -04:00
dependabot[bot]
7018cf7fe6 Bump @actions/core from 1.9.1 to 1.10.0 (#258)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.9.1 to 1.10.0.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-02 14:51:39 -04:00
dependabot[bot]
c0a948e0a1 Bump @types/node from 18.0.0 to 18.7.23 (#255)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.0 to 18.7.23.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-02 14:51:24 -04:00
dependabot[bot]
64d30d31e9 Bump @actions/github from 5.0.3 to 5.1.1 (#259)
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 5.0.3 to 5.1.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-02 14:46:17 -04:00
dependabot[bot]
0776e821ce Bump @types/glob from 7.2.0 to 8.0.0 (#249)
Bumps [@types/glob](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/glob) from 7.2.0 to 8.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/glob)

---
updated-dependencies:
- dependency-name: "@types/glob"
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-02 14:43:29 -04:00
dependabot[bot]
21fb52b82e Bump typescript from 4.7.3 to 4.8.4 (#256)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.7.3 to 4.8.4.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.7.3...v4.8.4)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-02 14:42:22 -04:00
dependabot[bot]
994ff9f3e4 Bump jest-circus from 28.1.0 to 29.1.2 (#257)
Bumps [jest-circus](https://github.com/facebook/jest/tree/HEAD/packages/jest-circus) from 28.1.0 to 29.1.2.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v29.1.2/packages/jest-circus)

---
updated-dependencies:
- dependency-name: jest-circus
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-02 14:41:45 -04:00
Nick Cipollo
ca859d0f82 Fixes #253 bump node to node16 2022-09-12 19:14:33 -04:00
dependabot[bot]
5ffcfca321 Bump @actions/core from 1.9.0 to 1.9.1 (#244)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.9.0 to 1.9.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-09-01 23:22:03 -04:00
Mohammad Parvin
3d2de22e3d Update README.md (#199)
Failed to add secret. Secret names must not start with GITHUB_.
2022-07-17 11:26:42 -04:00
dependabot[bot]
353daac015 Bump @actions/core from 1.8.2 to 1.9.0 (#228)
Bumps [@actions/core](https://github.com/actions/toolkit/tree/HEAD/packages/core) from 1.8.2 to 1.9.0.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/core/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/core)

---
updated-dependencies:
- dependency-name: "@actions/core"
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-17 11:25:40 -04:00
dependabot[bot]
17085ec3c4 Bump ts-jest from 28.0.4 to 28.0.5 (#229)
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 28.0.4 to 28.0.5.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v28.0.4...v28.0.5)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-17 11:25:28 -04:00
dependabot[bot]
2d5b7ef7e5 Bump @types/node from 17.0.40 to 18.0.0 (#230)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.40 to 18.0.0.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-17 11:25:16 -04:00
marcomow
a14d847ec5 add missing space (#218) 2022-06-16 17:48:34 -04:00
dependabot[bot]
f24914729f Bump @types/node from 17.0.38 to 17.0.40 (#220)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.38 to 17.0.40.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 11:54:10 -04:00
Nick Cipollo
d7ebb9b36b Update jest and fix tests 2022-06-07 11:42:45 -04:00
dependabot[bot]
8a61907f5d Bump jest-circus from 27.5.1 to 28.1.0 (#213)
Bumps [jest-circus](https://github.com/facebook/jest/tree/HEAD/packages/jest-circus) from 27.5.1 to 28.1.0.
- [Release notes](https://github.com/facebook/jest/releases)
- [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/facebook/jest/commits/v28.1.0/packages/jest-circus)

---
updated-dependencies:
- dependency-name: jest-circus
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-07 11:31:19 -04:00
Nick Cipollo
c9494285dc Fix tests 2022-06-07 11:19:26 -04:00
dependabot[bot]
3a295d0589 Bump @actions/core from 1.6.0 to 1.8.2 (#216) 2022-06-06 18:48:29 -04:00
dependabot[bot]
c99c52b068 Bump typescript from 4.7.2 to 4.7.3 (#222) 2022-06-06 18:46:58 -04:00
dependabot[bot]
1298899b9a Bump @actions/github from 5.0.1 to 5.0.3 (#221) 2022-06-06 18:45:56 -04:00
dependabot[bot]
15c5838b25 Bump glob from 7.2.0 to 8.0.3 (#217) 2022-06-06 09:38:21 -04:00
dependabot[bot]
eebdfaf405 Bump @types/node from 17.0.23 to 17.0.38 (#215)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.23 to 17.0.38.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 08:58:37 -04:00
dependabot[bot]
1cbbf13906 Bump typescript from 4.6.3 to 4.7.2 (#214)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.6.3 to 4.7.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.6.3...v4.7.2)

---
updated-dependencies:
- dependency-name: typescript
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-06 08:58:22 -04:00
dependabot[bot]
421213779e Bump @types/node from 17.0.21 to 17.0.23 (#192)
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.21 to 17.0.23.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: "@types/node"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 14:14:12 -04:00
dependabot[bot]
7719db6a69 Bump ts-jest from 27.1.3 to 27.1.4 (#193)
Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 27.1.3 to 27.1.4.
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v27.1.3...v27.1.4)

---
updated-dependencies:
- dependency-name: ts-jest
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 14:11:01 -04:00
dependabot[bot]
0e0b15bbc5 Bump @types/jest from 27.4.0 to 27.4.1 (#194)
Bumps [@types/jest](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/jest) from 27.4.0 to 27.4.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/jest)

---
updated-dependencies:
- dependency-name: "@types/jest"
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 14:10:53 -04:00
dependabot[bot]
29a6629a49 Bump @actions/github from 5.0.0 to 5.0.1 (#195)
Bumps [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) from 5.0.0 to 5.0.1.
- [Release notes](https://github.com/actions/toolkit/releases)
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-02 14:10:29 -04:00
Nick Cipollo
18990f60e0 Tweak coverage settings. 2022-03-31 22:52:04 -04:00
Nick Cipollo
d37e2be74a Add thresholds for coverage 2022-03-31 20:43:03 -04:00
Nick Cipollo
eed740324c Revert "Ensure test failures still work"
This reverts commit 4f104f8afe.
2022-03-31 18:08:50 -04:00
Nick Cipollo
4f104f8afe Ensure test failures still work 2022-03-31 18:08:21 -04:00
Nick Cipollo
700d6bf347 move jest config into package.json 2022-03-31 18:07:15 -04:00
24 changed files with 4745 additions and 3723 deletions

View File

@@ -22,13 +22,14 @@ This action will create a GitHub release and optionally upload an artifact to it
| omitName | Indicates if the release name should be omitted. | false | false |
| omitNameDuringUpdate | Indicates if the release name should be omitted during updates. The name will still be applied for newly created releases. This will preserve the existing name during updates. | false | false |
| omitPrereleaseDuringUpdate | Indicates if the prerelease flag should be omitted during updates. The prerelease flag will still be applied for newly created releases. This will preserve the existing prerelease state during updates. | false | false |
| owner | Optionally specify the owner of the repo where the release should be generated. Defaults to current repo'sowner. | false | "current repo owner" |
| owner | Optionally specify the owner of the repo where the release should be generated. Defaults to current repo's owner. | false | "current repo owner" |
| prerelease | Optionally marks this release as prerelease. Set to true to enable. | false | "" |
| removeArtifacts | Indicates if existing release artifacts should be removed. | false | false |
| replacesArtifacts | Indicates if existing release artifacts should be replaced. | false | true |
| repo | Optionally specify the repo where the release should be generated. | false | current repo |
| tag | An optional tag for the release. If this is omitted the git ref will be used (if it is a tag). | false | "" |
| token | The GitHub token. This will default to the GitHub app token. This is primarily useful if you want to use your personal token (for targeting other repos, etc). If you are using a personal access token it should have access to the `repo` scope. | false | github.token |
| updateOnlyUnreleased | When allowUpdates is enabled, this will fail the action if the release it is updating is not a draft or a prerelease. | false | false |
## Action Outputs
| Output name | Description |
@@ -60,7 +61,7 @@ jobs:
with:
artifacts: "release.tar.gz,foo/*.txt"
bodyFile: "body.md"
token: ${{ secrets.GITHUB_TOKEN }}
token: ${{ secrets.YOUR_GITHUB_TOKEN }}
```

View File

@@ -37,6 +37,7 @@ const updateBody = 'updateBody'
const updateDraft = false
const updateName = 'updateName'
const updatePrerelease = false
const updateOnlyUnreleased = false
const url = 'http://api.example.com'
describe("Action", () => {
@@ -317,7 +318,9 @@ describe("Action", () => {
expect(applyReleaseDataMock).toBeCalledWith({id: releaseId, upload_url: url})
}
function createAction(allowUpdates: boolean, hasArtifact: boolean, removeArtifacts: boolean = false): Action {
function createAction(allowUpdates: boolean,
hasArtifact: boolean,
removeArtifacts: boolean = false): Action {
let inputArtifact: Artifact[]
if (hasArtifact) {
inputArtifact = artifacts
@@ -379,7 +382,8 @@ describe("Action", () => {
updatedDraft: updateDraft,
updatedReleaseBody: updateBody,
updatedReleaseName: updateName,
updatedPrerelease: updatePrerelease
updatedPrerelease: updatePrerelease,
updateOnlyUnreleased: updateOnlyUnreleased
}
})
const MockOutputs = jest.fn<Outputs, any>(() => {

View File

@@ -18,6 +18,7 @@ const uploadMock = jest.fn()
jest.mock('fs', () => {
return {
promises: {},
readFileSync: () => fileContents,
statSync: () => {
return {size: contentLength}

View File

@@ -430,6 +430,17 @@ describe('Inputs', () => {
})
})
describe('updateOnlyUnreleased', () => {
it('returns false', () => {
expect(inputs.updateOnlyUnreleased).toBe(false)
})
it('returns true', () => {
mockGetInput.mockReturnValueOnce('true')
expect(inputs.updateOnlyUnreleased).toBe(true)
})
})
function createGlobber(): ArtifactGlobber {
const MockGlobber = jest.fn<ArtifactGlobber, any>(() => {
return {

View File

@@ -57,7 +57,8 @@ describe.skip('Integration Test', () => {
updatedDraft: false,
updatedReleaseBody: "This release was generated by release-action's integration test",
updatedReleaseName: "Releases Action Integration Test",
updatedPrerelease: false
updatedPrerelease: false,
updateOnlyUnreleased: false
}
})
return new MockInputs();

View File

@@ -0,0 +1,74 @@
import {ReleaseValidator} from "../src/ReleaseValidator";
describe("validateReleaseUpdate", () => {
describe("updateOnlyUnreleased is disabled", () => {
const validator = new ReleaseValidator(false)
it('should not throw', () => {
const releaseResponse = {
draft: false,
prerelease: false,
name: "Name"
}
expect(() => {
validator.validateReleaseUpdate(releaseResponse)
}).not.toThrow()
})
})
describe("updateOnlyUnreleased is enabled", () => {
const validator = new ReleaseValidator(true)
it('should throw if neither draft or prerelease are enabled', () => {
const releaseResponse = {
draft: false,
prerelease: false,
name: "Name"
}
expect(() => {
validator.validateReleaseUpdate(releaseResponse)
}).toThrow()
})
it('should not throw if draft is enabled', () => {
const releaseResponse = {
draft: true,
prerelease: false,
name: "Name"
}
expect(() => {
validator.validateReleaseUpdate(releaseResponse)
}).not.toThrow()
})
it('should not throw if prerelease is enabled', () => {
const releaseResponse = {
draft: false,
prerelease: true,
name: "Name"
}
expect(() => {
validator.validateReleaseUpdate(releaseResponse)
}).not.toThrow()
})
it('should not throw if draft & prerelease is enabled', () => {
const releaseResponse = {
draft: true,
prerelease: true,
name: "Name"
}
expect(() => {
validator.validateReleaseUpdate(releaseResponse)
}).not.toThrow()
})
it('should default error message release name to release', () => {
const releaseResponse = {
draft: false,
prerelease: false,
name: null
}
expect(() => {
validator.validateReleaseUpdate(releaseResponse)
}).toThrow(`Tried to update "release" which is neither a draft or prerelease. (updateOnlyUnreleased is on)`)
})
})
})

View File

@@ -94,7 +94,7 @@ inputs:
repo:
description: "Optionally specify the repo where the release should be generated. Defaults to current repo"
required: false
default: ''
default: ''
tag:
description: 'An optional tag for the release. If this is omitted the git ref will be used (if it is a tag).'
required: false
@@ -103,6 +103,10 @@ inputs:
description: 'The Github token.'
required: false
default: ${{ github.token }}
updateOnlyUnreleased:
description: "When allowUpdates is enabled, this will fail the action if the release it is updating is not a draft or a prerelease."
required: false
default: 'false'
outputs:
id:
description: 'The identifier of the created release.'
@@ -111,7 +115,7 @@ outputs:
upload_url:
description: 'The URL for uploading assets to the release.'
runs:
using: 'node12'
using: 'node16'
main: 'dist/index.js'
branding:
icon: 'tag'

5768
dist/index.js vendored

File diff suppressed because one or more lines are too long

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

70
dist/licenses.txt vendored
View File

@@ -484,28 +484,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
concat-map
MIT
This software is released under the MIT license:
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
deprecation
ISC
The ISC License
@@ -576,7 +554,7 @@ glob
ISC
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Copyright (c) 2009-2022 Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -590,12 +568,6 @@ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
## Glob Logo
Glob's logo created by Tanya Brassie <http://tanyabrassie.com/>, licensed
under a Creative Commons Attribution-ShareAlike 4.0 International License
https://creativecommons.org/licenses/by-sa/4.0/
inflight
ISC
@@ -665,7 +637,7 @@ minimatch
ISC
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Copyright (c) 2011-2022 Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -725,31 +697,6 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
path-is-absolute
MIT
The MIT License (MIT)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
tr46
MIT
@@ -802,6 +749,19 @@ The above copyright notice and this permission notice shall be included in all c
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
uuid
MIT
The MIT License (MIT)
Copyright (c) 2010-2020 Robert Kieffer and other contributors
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
webidl-conversions
BSD-2-Clause
# The BSD 2-Clause License

File diff suppressed because one or more lines are too long

View File

@@ -1,11 +0,0 @@
module.exports = {
clearMocks: true,
moduleFileExtensions: ['js', 'ts'],
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
testRunner: 'jest-circus/runner',
transform: {
'^.+\\.ts$': 'ts-jest'
},
verbose: true
}

View File

@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
Object.defineProperty(exports, "__esModule", { value: true });
exports.Action = void 0;
const GithubError_1 = require("./GithubError");
const ReleaseValidator_1 = require("./ReleaseValidator");
class Action {
constructor(inputs, outputs, releases, uploader, artifactDestroyer) {
this.inputs = inputs;
@@ -18,6 +19,7 @@ class Action {
this.releases = releases;
this.uploader = uploader;
this.artifactDestroyer = artifactDestroyer;
this.releaseValidator = new ReleaseValidator_1.ReleaseValidator(inputs.updateOnlyUnreleased);
}
perform() {
return __awaiter(this, void 0, void 0, function* () {
@@ -45,6 +47,8 @@ class Action {
catch (error) {
return yield this.checkForMissingReleaseError(error);
}
// Fail if this isn't an unreleased release & updateOnlyUnreleased is enabled.
this.releaseValidator.validateReleaseUpdate(getResponse.data);
return yield this.updateRelease(getResponse.data.id);
}
else {

View File

@@ -32,6 +32,7 @@ const Globber_1 = require("./Globber");
const Artifact_1 = require("./Artifact");
const untildify_1 = __importDefault(require("untildify"));
const ArtifactPathValidator_1 = require("./ArtifactPathValidator");
const PathNormalizer_1 = require("./PathNormalizer");
class FileArtifactGlobber {
constructor(globber = new Globber_1.FileGlobber()) {
this.globber = globber;
@@ -40,6 +41,7 @@ class FileArtifactGlobber {
const split = /[,\n]/;
return artifact.split(split)
.map(path => path.trimStart())
.map(path => PathNormalizer_1.PathNormalizer.normalizePath(path))
.map(path => FileArtifactGlobber.expandPath(path))
.map(pattern => this.globPattern(pattern, errorsFailBuild))
.map((globResult) => FileArtifactGlobber.validatePattern(errorsFailBuild, globResult[1], globResult[0]))

View File

@@ -180,6 +180,9 @@ class CoreInputs {
return undefined;
return this.name;
}
get updateOnlyUnreleased() {
return core.getInput('updateOnlyUnreleased') == 'true';
}
static get omitNameDuringUpdate() {
return core.getInput('omitNameDuringUpdate') == 'true';
}

13
lib/PathNormalizer.js Normal file
View File

@@ -0,0 +1,13 @@
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PathNormalizer = void 0;
const path_1 = __importDefault(require("path"));
class PathNormalizer {
static normalizePath(pathString) {
return pathString.split(path_1.default.sep).join("/");
}
}
exports.PathNormalizer = PathNormalizer;

18
lib/ReleaseValidator.js Normal file
View File

@@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ReleaseValidator = void 0;
class ReleaseValidator {
constructor(updateOnlyUnreleased) {
this.updateOnlyUnreleased = updateOnlyUnreleased;
}
validateReleaseUpdate(releaseResponse) {
var _a;
if (!this.updateOnlyUnreleased) {
return;
}
if (!releaseResponse.draft && !releaseResponse.prerelease) {
throw new Error(`Tried to update "${(_a = releaseResponse.name) !== null && _a !== void 0 ? _a : "release"}" which is neither a draft or prerelease. (updateOnlyUnreleased is on)`);
}
}
}
exports.ReleaseValidator = ReleaseValidator;

View File

@@ -24,19 +24,48 @@
],
"author": "GitHub",
"license": "MIT",
"jest": {
"clearMocks": true,
"collectCoverage": true,
"coveragePathIgnorePatterns": [
"src/Globber.ts",
"src/Releases.ts"
],
"coverageThreshold": {
"global": {
"branches": 95,
"functions": 100,
"lines": 100,
"statements": 100
}
},
"moduleFileExtensions": [
"js",
"ts"
],
"testEnvironment": "node",
"testMatch": [
"**/*.test.ts"
],
"testRunner": "jest-circus/runner",
"transform": {
"^.+\\.ts$": "ts-jest"
},
"verbose": true
},
"dependencies": {
"@actions/core": "^1.6.0",
"@actions/github": "^5.0.0",
"@types/glob": "^7.2.0",
"glob": "^7.2.0",
"@actions/core": "^1.10.0",
"@actions/github": "^5.1.1",
"@types/glob": "^8.0.0",
"glob": "^8.0.3",
"untildify": "^4.0.0"
},
"devDependencies": {
"@types/jest": "^27.4.0",
"@types/node": "^17.0.21",
"jest": "^27.5.1",
"jest-circus": "^27.5.1",
"ts-jest": "^27.1.3",
"typescript": "^4.6.3"
"@types/jest": "^28.1.1",
"@types/node": "^18.7.23",
"jest": "^28.1.1",
"jest-circus": "^29.1.2",
"ts-jest": "^28.0.5",
"typescript": "^4.8.4"
}
}

View File

@@ -10,13 +10,16 @@ import {ArtifactUploader} from "./ArtifactUploader";
import {GithubError} from "./GithubError";
import {Outputs} from "./Outputs";
import {ArtifactDestroyer} from "./ArtifactDestroyer";
import {ReleaseValidator} from "./ReleaseValidator";
export class Action {
private inputs: Inputs
private outputs: Outputs
private releases: Releases
private artifactDestroyer: ArtifactDestroyer
private uploader: ArtifactUploader
private artifactDestroyer: ArtifactDestroyer
private releaseValidator: ReleaseValidator
constructor(inputs: Inputs,
outputs: Outputs,
@@ -28,6 +31,7 @@ export class Action {
this.releases = releases
this.uploader = uploader
this.artifactDestroyer = artifactDestroyer
this.releaseValidator = new ReleaseValidator(inputs.updateOnlyUnreleased)
}
async perform() {
@@ -56,6 +60,9 @@ export class Action {
} catch (error: any) {
return await this.checkForMissingReleaseError(error)
}
// Fail if this isn't an unreleased release & updateOnlyUnreleased is enabled.
this.releaseValidator.validateReleaseUpdate(getResponse.data)
return await this.updateRelease(getResponse.data.id)
} else {

View File

@@ -3,6 +3,7 @@ import {Globber, FileGlobber} from "./Globber";
import {Artifact} from "./Artifact";
import untildify from "untildify";
import {ArtifactPathValidator} from "./ArtifactPathValidator";
import {PathNormalizer} from "./PathNormalizer";
export interface ArtifactGlobber {
globArtifactString(artifact: string, contentType: string, errorsFailBuild: boolean): Artifact[]
@@ -19,6 +20,7 @@ export class FileArtifactGlobber implements ArtifactGlobber {
const split = /[,\n]/
return artifact.split(split)
.map(path => path.trimStart())
.map(path => PathNormalizer.normalizePath(path))
.map(path => FileArtifactGlobber.expandPath(path))
.map(pattern => this.globPattern(pattern, errorsFailBuild))
.map((globResult) => FileArtifactGlobber.validatePattern(errorsFailBuild, globResult[1], globResult[0]))

View File

@@ -25,6 +25,7 @@ export interface Inputs {
readonly updatedReleaseBody?: string
readonly updatedReleaseName?: string
readonly updatedPrerelease?: boolean
readonly updateOnlyUnreleased: boolean
}
export class CoreInputs implements Inputs {
@@ -209,6 +210,10 @@ export class CoreInputs implements Inputs {
if (CoreInputs.omitName || CoreInputs.omitNameDuringUpdate) return undefined
return this.name
}
get updateOnlyUnreleased(): boolean {
return core.getInput('updateOnlyUnreleased') == 'true'
}
private static get omitNameDuringUpdate(): boolean {
return core.getInput('omitNameDuringUpdate') == 'true'

7
src/PathNormalizer.ts Normal file
View File

@@ -0,0 +1,7 @@
import path from "path";
export class PathNormalizer {
static normalizePath(pathString: string): string {
return pathString.split(path.sep).join("/")
}
}

20
src/ReleaseValidator.ts Normal file
View File

@@ -0,0 +1,20 @@
export class ReleaseValidator {
constructor(private updateOnlyUnreleased: boolean) {
}
validateReleaseUpdate(releaseResponse: ReleaseStageArguments) {
if (!this.updateOnlyUnreleased) {
return
}
if (!releaseResponse.draft && !releaseResponse.prerelease) {
throw new Error(`Tried to update "${releaseResponse.name ?? "release"}" which is neither a draft or prerelease. (updateOnlyUnreleased is on)`)
}
}
}
export type ReleaseStageArguments = {
draft: boolean
name: string | null
prerelease: boolean
}

2373
yarn.lock

File diff suppressed because it is too large Load Diff