Add content type and length to inputs

This commit is contained in:
Nick Cipollo
2019-08-26 17:12:56 -04:00
parent 0416a360c1
commit 7375770ad3
4 changed files with 46 additions and 13 deletions

View File

@@ -1,5 +1,6 @@
const mockGetInput = jest.fn(); const mockGetInput = jest.fn();
const mockReadFileSync = jest.fn(); const mockReadFileSync = jest.fn();
const mockStatSync = jest.fn();
import { Inputs } from "../src/Inputs"; import { Inputs } from "../src/Inputs";
import { Context } from "@actions/github/lib/context"; import { Context } from "@actions/github/lib/context";
@@ -10,7 +11,10 @@ jest.mock('@actions/core', () => {
}); });
jest.mock('fs', () => { jest.mock('fs', () => {
return { readFileSync: mockReadFileSync }; return {
readFileSync: mockReadFileSync,
statSync: mockStatSync
};
}); });
describe('Inputs', () => { describe('Inputs', () => {
@@ -27,6 +31,12 @@ describe('Inputs', () => {
expect(inputs.artifact).toBe("a/path") expect(inputs.artifact).toBe("a/path")
}) })
it('returns artifactContentLength', () => {
mockGetInput.mockReturnValue("a/path")
mockStatSync.mockReturnValue({size: 100})
expect(inputs.artifactContentLength).toBe(100)
})
it('returns targetCommit', () => { it('returns targetCommit', () => {
mockGetInput.mockReturnValue("42") mockGetInput.mockReturnValue("42")
expect(inputs.commit).toBe("42") expect(inputs.commit).toBe("42")
@@ -37,6 +47,17 @@ describe('Inputs', () => {
expect(inputs.token).toBe("42") expect(inputs.token).toBe("42")
}) })
describe('artifactContentType', () => {
it('returns input content-type', () => {
mockGetInput.mockReturnValue("type")
expect(inputs.artifactContentType).toBe("type")
})
it('returns raw as default', () => {
expect(inputs.artifactContentType).toBe("raw")
})
})
describe('description', () => { describe('description', () => {
it('returns input description', () => { it('returns input description', () => {
mockGetInput.mockReturnValue("description") mockGetInput.mockReturnValue("description")

View File

@@ -1,3 +0,0 @@
describe('TODO - Add a test suite', () => {
it('TODO - Add a test', async () => {});
});

View File

@@ -5,6 +5,9 @@ inputs:
artifact: artifact:
description: 'A path to an optional artifact to upload to the release.' description: 'A path to an optional artifact to upload to the release.'
default: '' default: ''
artifactContentType:
description: 'The content type of the artifact. Defaults to raw'
default: ''
commit: commit:
description: 'An optional commit reference. This will be used to create the tag if it doesn't exist.' description: 'An optional commit reference. This will be used to create the tag if it doesn't exist.'
default: '' default: ''

View File

@@ -1,7 +1,6 @@
import * as core from '@actions/core'; import * as core from '@actions/core';
import { Context } from "@actions/github/lib/context"; import { Context } from "@actions/github/lib/context";
import { isObject } from 'util'; import { readFileSync, statSync } from 'fs';
import { fstat, readFileSync } from 'fs';
export class Inputs { export class Inputs {
private context: Context private context: Context
@@ -14,18 +13,31 @@ export class Inputs {
return core.getInput('artifact') return core.getInput('artifact')
} }
get artifactContentType(): string {
const type = core.getInput('artifactContentType')
if(type) {
return type;
}
return 'raw'
}
get artifactContentLength(): number {
return statSync(this.artifact).size
}
get commit(): string { get commit(): string {
return core.getInput('commit') return core.getInput('commit')
} }
get description(): string { get description(): string {
const description = core.getInput('description') const description = core.getInput('description')
if(description) { if (description) {
return description return description
} }
const descriptionFile = core.getInput('descriptionFile') const descriptionFile = core.getInput('descriptionFile')
if(descriptionFile) { if (descriptionFile) {
return this.stringFromFile(descriptionFile) return this.stringFromFile(descriptionFile)
} }
@@ -41,10 +53,6 @@ export class Inputs {
return this.tag return this.tag
} }
get token(): string {
return core.getInput('token', { required: true })
}
get tag(): string { get tag(): string {
const tag = core.getInput('tag') const tag = core.getInput('tag')
if (tag) { if (tag) {
@@ -60,6 +68,10 @@ export class Inputs {
throw Error("No tag found in ref or input!") throw Error("No tag found in ref or input!")
} }
get token(): string {
return core.getInput('token', { required: true })
}
private stringFromFile(path: string): string { private stringFromFile(path: string): string {
return readFileSync(path, 'utf-8') return readFileSync(path, 'utf-8')
} }