honor body_path input when provided. fixes #22

This commit is contained in:
softprops 2019-09-29 02:15:58 -04:00
parent 07c8c20669
commit ba42ad9139
4 changed files with 69 additions and 4 deletions

1
__tests__/release.txt Normal file
View file

@ -0,0 +1 @@
bar

View file

@ -1,4 +1,10 @@
import { isTag, paths, parseConfig, parseInputFiles } from "../src/util";
import {
releaseBody,
isTag,
paths,
parseConfig,
parseInputFiles
} from "../src/util";
import * as assert from "assert";
describe("util", () => {
@ -16,6 +22,56 @@ describe("util", () => {
);
});
});
describe("releaseBody", () => {
it("uses input body", () => {
assert.equal(
"foo",
releaseBody({
github_ref: "",
github_repository: "",
github_token: "",
input_body: "foo",
input_body_path: undefined,
input_draft: false,
input_prerelease: false,
input_files: [],
input_name: undefined
})
);
});
it("uses input body path", () => {
assert.equal(
"bar",
releaseBody({
github_ref: "",
github_repository: "",
github_token: "",
input_body: undefined,
input_body_path: "__tests__/release.txt",
input_draft: false,
input_prerelease: false,
input_files: [],
input_name: undefined
})
);
});
it("defaults to body when both body and body path are provided", () => {
assert.equal(
"foo",
releaseBody({
github_ref: "",
github_repository: "",
github_token: "",
input_body: "foo",
input_body_path: "__tests__/release.txt",
input_draft: false,
input_prerelease: false,
input_files: [],
input_name: undefined
})
);
});
});
describe("parseConfig", () => {
it("parses basic config", () => {
assert.deepStrictEqual(parseConfig({}), {

View file

@ -1,5 +1,5 @@
import { GitHub } from "@actions/github";
import { Config } from "./util";
import { Config, releaseBody } from "./util";
import { lstatSync, readFileSync } from "fs";
import { getType } from "mime";
import { basename } from "path";
@ -138,7 +138,7 @@ export const release = async (
try {
const tag_name = tag;
const name = config.input_name || tag;
const body = config.input_body;
const body = releaseBody(config);
const draft = config.input_draft;
const prerelease = config.input_prerelease;
console.log(`👩‍🏭 Creating new GitHub release for tag ${tag_name}...`);

View file

@ -1,5 +1,5 @@
import * as glob from "glob";
import { lstatSync } from "fs";
import { lstatSync, readFileSync } from "fs";
export interface Config {
github_token: string;
@ -14,6 +14,14 @@ export interface Config {
input_prerelease?: boolean;
}
export const releaseBody = (config: Config): string | undefined => {
return (
config.input_body ||
(config.input_body_path &&
readFileSync(config.input_body_path).toString("utf8"))
);
};
type Env = { [key: string]: string | undefined };
export const parseInputFiles = (files: string): string[] => {