1 Commits

Author SHA1 Message Date
Nick Cipollo
2792aea870 Prepate 1.10.1 release
Some checks failed
Test / check_pr (push) Has been cancelled
2022-10-02 15:18:23 -04:00
25 changed files with 252 additions and 540 deletions

View File

@@ -22,14 +22,13 @@ 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 | | 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 | | 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 | | 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's owner. | 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 | "" | | prerelease | Optionally marks this release as prerelease. Set to true to enable. | false | "" |
| removeArtifacts | Indicates if existing release artifacts should be removed. | false | false | | removeArtifacts | Indicates if existing release artifacts should be removed. | false | false |
| replacesArtifacts | Indicates if existing release artifacts should be replaced. | false | true | | 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 | | 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 | "" | | 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 | | 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 ## Action Outputs
| Output name | Description | | Output name | Description |

View File

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

View File

@@ -430,17 +430,6 @@ 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 { function createGlobber(): ArtifactGlobber {
const MockGlobber = jest.fn<ArtifactGlobber, any>(() => { const MockGlobber = jest.fn<ArtifactGlobber, any>(() => {
return { return {

View File

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

View File

@@ -1,74 +0,0 @@
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: repo:
description: "Optionally specify the repo where the release should be generated. Defaults to current repo" description: "Optionally specify the repo where the release should be generated. Defaults to current repo"
required: false required: false
default: '' default: ''
tag: tag:
description: 'An optional tag for the release. If this is omitted the git ref will be used (if it is a 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 required: false
@@ -103,10 +103,6 @@ inputs:
description: 'The Github token.' description: 'The Github token.'
required: false required: false
default: ${{ github.token }} 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: outputs:
id: id:
description: 'The identifier of the created release.' description: 'The identifier of the created release.'

546
dist/index.js vendored

File diff suppressed because it is too large Load Diff

2
dist/index.js.map vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

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

View File

@@ -6,14 +6,14 @@ const fs_1 = require("fs");
class Artifact { class Artifact {
constructor(path, contentType = "raw") { constructor(path, contentType = "raw") {
this.path = path; this.path = path;
this.name = (0, path_1.basename)(path); this.name = path_1.basename(path);
this.contentType = contentType; this.contentType = contentType;
} }
get contentLength() { get contentLength() {
return (0, fs_1.statSync)(this.path).size; return fs_1.statSync(this.path).size;
} }
readFile() { readFile() {
return (0, fs_1.readFileSync)(this.path); return fs_1.readFileSync(this.path);
} }
} }
exports.Artifact = Artifact; exports.Artifact = Artifact;

View File

@@ -1,11 +1,7 @@
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k); Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];

View File

@@ -1,11 +1,7 @@
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k); Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
@@ -32,7 +28,6 @@ const Globber_1 = require("./Globber");
const Artifact_1 = require("./Artifact"); const Artifact_1 = require("./Artifact");
const untildify_1 = __importDefault(require("untildify")); const untildify_1 = __importDefault(require("untildify"));
const ArtifactPathValidator_1 = require("./ArtifactPathValidator"); const ArtifactPathValidator_1 = require("./ArtifactPathValidator");
const PathNormalizer_1 = require("./PathNormalizer");
class FileArtifactGlobber { class FileArtifactGlobber {
constructor(globber = new Globber_1.FileGlobber()) { constructor(globber = new Globber_1.FileGlobber()) {
this.globber = globber; this.globber = globber;
@@ -41,7 +36,6 @@ class FileArtifactGlobber {
const split = /[,\n]/; const split = /[,\n]/;
return artifact.split(split) return artifact.split(split)
.map(path => path.trimStart()) .map(path => path.trimStart())
.map(path => PathNormalizer_1.PathNormalizer.normalizePath(path))
.map(path => FileArtifactGlobber.expandPath(path)) .map(path => FileArtifactGlobber.expandPath(path))
.map(pattern => this.globPattern(pattern, errorsFailBuild)) .map(pattern => this.globPattern(pattern, errorsFailBuild))
.map((globResult) => FileArtifactGlobber.validatePattern(errorsFailBuild, globResult[1], globResult[0])) .map((globResult) => FileArtifactGlobber.validatePattern(errorsFailBuild, globResult[1], globResult[0]))
@@ -71,7 +65,7 @@ class FileArtifactGlobber {
throw Error(`Artifact pattern :${pattern} did not match any files`); throw Error(`Artifact pattern :${pattern} did not match any files`);
} }
static expandPath(path) { static expandPath(path) {
return (0, untildify_1.default)(path); return untildify_1.default(path);
} }
} }
exports.FileArtifactGlobber = FileArtifactGlobber; exports.FileArtifactGlobber = FileArtifactGlobber;

View File

@@ -1,11 +1,7 @@
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k); Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
@@ -43,7 +39,7 @@ class ArtifactPathValidator {
} }
} }
verifyNotDirectory(path) { verifyNotDirectory(path) {
const isDir = (0, fs_1.statSync)(path).isDirectory(); const isDir = fs_1.statSync(path).isDirectory();
if (isDir) { if (isDir) {
const message = `Artifact is a directory:${path}. Directories can not be uploaded to a release.`; const message = `Artifact is a directory:${path}. Directories can not be uploaded to a release.`;
this.reportError(message); this.reportError(message);

View File

@@ -1,11 +1,7 @@
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k); Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];

View File

@@ -1,11 +1,7 @@
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k); Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];
@@ -180,14 +176,11 @@ class CoreInputs {
return undefined; return undefined;
return this.name; return this.name;
} }
get updateOnlyUnreleased() {
return core.getInput('updateOnlyUnreleased') == 'true';
}
static get omitNameDuringUpdate() { static get omitNameDuringUpdate() {
return core.getInput('omitNameDuringUpdate') == 'true'; return core.getInput('omitNameDuringUpdate') == 'true';
} }
stringFromFile(path) { stringFromFile(path) {
return (0, fs_1.readFileSync)(path, 'utf-8'); return fs_1.readFileSync(path, 'utf-8');
} }
} }
exports.CoreInputs = CoreInputs; exports.CoreInputs = CoreInputs;

View File

@@ -1,11 +1,7 @@
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k); Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];

View File

@@ -1,11 +1,7 @@
"use strict"; "use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k); Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) { }) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k; if (k2 === undefined) k2 = k;
o[k2] = m[k]; o[k2] = m[k];

View File

@@ -1,13 +0,0 @@
"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;

View File

@@ -1,18 +0,0 @@
"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

@@ -10,16 +10,13 @@ import {ArtifactUploader} from "./ArtifactUploader";
import {GithubError} from "./GithubError"; import {GithubError} from "./GithubError";
import {Outputs} from "./Outputs"; import {Outputs} from "./Outputs";
import {ArtifactDestroyer} from "./ArtifactDestroyer"; import {ArtifactDestroyer} from "./ArtifactDestroyer";
import {ReleaseValidator} from "./ReleaseValidator";
export class Action { export class Action {
private inputs: Inputs private inputs: Inputs
private outputs: Outputs private outputs: Outputs
private releases: Releases private releases: Releases
private uploader: ArtifactUploader
private artifactDestroyer: ArtifactDestroyer private artifactDestroyer: ArtifactDestroyer
private uploader: ArtifactUploader
private releaseValidator: ReleaseValidator
constructor(inputs: Inputs, constructor(inputs: Inputs,
outputs: Outputs, outputs: Outputs,
@@ -31,7 +28,6 @@ export class Action {
this.releases = releases this.releases = releases
this.uploader = uploader this.uploader = uploader
this.artifactDestroyer = artifactDestroyer this.artifactDestroyer = artifactDestroyer
this.releaseValidator = new ReleaseValidator(inputs.updateOnlyUnreleased)
} }
async perform() { async perform() {
@@ -60,9 +56,6 @@ export class Action {
} catch (error: any) { } catch (error: any) {
return await this.checkForMissingReleaseError(error) 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) return await this.updateRelease(getResponse.data.id)
} else { } else {

View File

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

View File

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

View File

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

View File

@@ -1,20 +0,0 @@
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
}