Skip to content

Commit 1fff2ca

Browse files
committed
feat: Add enable_jekyll
1 parent ade8887 commit 1fff2ca

File tree

5 files changed

+63
-48
lines changed

5 files changed

+63
-48
lines changed

__tests__/get-inputs.test.ts

Lines changed: 33 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,31 @@
22
import {Inputs} from '../src/interfaces';
33
import {showInputs, getInputs} from '../src/get-inputs';
44
import os from 'os';
5+
import fs from 'fs';
6+
import yaml from 'js-yaml';
57

68
beforeEach(() => {
79
jest.resetModules();
10+
process.stdout.write = jest.fn();
11+
12+
const doc = yaml.safeLoad(
13+
fs.readFileSync(__dirname + '/../action.yml', 'utf8')
14+
);
15+
Object.keys(doc.inputs).forEach(name => {
16+
const envVar = `INPUT_${name.replace(/ /g, '_').toUpperCase()}`;
17+
process.env[envVar] = doc.inputs[name]['default'];
18+
});
819
});
920

1021
afterEach(() => {
11-
delete process.env['INPUT_DEPLOY_KEY'];
12-
delete process.env['INPUT_GITHUB_TOKEN'];
13-
delete process.env['INPUT_PERSONAL_TOKEN'];
14-
delete process.env['INPUT_PUBLISH_BRANCH'];
15-
delete process.env['INPUT_PUBLISH_DIR'];
16-
delete process.env['INPUT_EXTERNAL_REPOSITORY'];
17-
delete process.env['INPUT_ALLOW_EMPTY_COMMIT'];
18-
delete process.env['INPUT_KEEP_FILES'];
19-
delete process.env['INPUT_FORCE_ORPHAN'];
20-
delete process.env['INPUT_USER_NAME'];
21-
delete process.env['INPUT_USER_EMAIL'];
22-
delete process.env['INPUT_COMMIT_MESSAGE'];
23-
delete process.env['INPUT_TAG_NAME'];
24-
delete process.env['INPUT_TAG_MESSAGE'];
25-
delete process.env['INPUT_DISABLE_NOJEKYLL'];
26-
delete process.env['INPUT_CNAME'];
22+
const doc = yaml.safeLoad(
23+
fs.readFileSync(__dirname + '/../action.yml', 'utf8')
24+
);
25+
Object.keys(doc.inputs).forEach(name => {
26+
const envVar = `INPUT_${name.replace(/ /g, '_').toUpperCase()}`;
27+
console.debug(`delete ${envVar}\t${process.env[envVar]}`);
28+
delete process.env[envVar];
29+
});
2730
});
2831

2932
// Assert that process.stdout.write calls called only with the given arguments.
@@ -36,22 +39,6 @@ function assertWriteCalls(calls: string[]): void {
3639
}
3740
}
3841

39-
function setTestInputs(): void {
40-
process.env['INPUT_PUBLISH_BRANCH'] = 'master';
41-
process.env['INPUT_PUBLISH_DIR'] = 'out';
42-
process.env['INPUT_EXTERNAL_REPOSITORY'] = 'user/repo';
43-
process.env['INPUT_ALLOW_EMPTY_COMMIT'] = 'true';
44-
process.env['INPUT_KEEP_FILES'] = 'true';
45-
process.env['INPUT_FORCE_ORPHAN'] = 'true';
46-
process.env['INPUT_USER_NAME'] = 'username';
47-
process.env['INPUT_USER_EMAIL'] = '[email protected]';
48-
process.env['INPUT_COMMIT_MESSAGE'] = 'feat: Add new feature';
49-
process.env['INPUT_TAG_NAME'] = 'deploy-v1.2.3';
50-
process.env['INPUT_TAG_MESSAGE'] = 'Deployment v1.2.3';
51-
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true';
52-
process.env['INPUT_CNAME'] = 'github.com';
53-
}
54-
5542
function getInputsLog(authMethod: string, inps: Inputs): string {
5643
return `\
5744
[INFO] ${authMethod}: true
@@ -66,20 +53,15 @@ function getInputsLog(authMethod: string, inps: Inputs): string {
6653
[INFO] CommitMessage: ${inps.CommitMessage}
6754
[INFO] TagName: ${inps.TagName}
6855
[INFO] TagMessage: ${inps.TagMessage}
69-
[INFO] DisableNoJekyll: ${inps.DisableNoJekyll}
56+
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
7057
[INFO] CNAME: ${inps.CNAME}
7158
`;
7259
}
7360

7461
describe('showInputs()', () => {
75-
beforeEach(() => {
76-
process.stdout.write = jest.fn();
77-
});
78-
7962
// eslint-disable-next-line jest/expect-expect
8063
test('print all inputs DeployKey', () => {
8164
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key';
82-
setTestInputs();
8365

8466
const inps: Inputs = getInputs();
8567
showInputs(inps);
@@ -91,8 +73,8 @@ describe('showInputs()', () => {
9173

9274
// eslint-disable-next-line jest/expect-expect
9375
test('print all inputs GithubToken', () => {
76+
delete process.env['INPUT_DEPLOY_KEY'];
9477
process.env['INPUT_GITHUB_TOKEN'] = 'test_github_token';
95-
setTestInputs();
9678

9779
const inps: Inputs = getInputs();
9880
showInputs(inps);
@@ -104,8 +86,9 @@ describe('showInputs()', () => {
10486

10587
// eslint-disable-next-line jest/expect-expect
10688
test('print all inputs PersonalToken', () => {
89+
delete process.env['INPUT_DEPLOY_KEY'];
90+
delete process.env['INPUT_GITHUB_TOKEN'];
10791
process.env['INPUT_PERSONAL_TOKEN'] = 'test_personal_token';
108-
setTestInputs();
10992

11093
const inps: Inputs = getInputs();
11194
showInputs(inps);
@@ -119,10 +102,6 @@ describe('showInputs()', () => {
119102
describe('getInputs()', () => {
120103
test('get default inputs', () => {
121104
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key';
122-
// process.env['INPUT_GITHUB_TOKEN'] = 'test_github_token';
123-
// process.env['INPUT_PERSONAL_TOKEN'] = 'test_personal_token';
124-
process.env['INPUT_PUBLISH_BRANCH'] = 'gh-pages';
125-
process.env['INPUT_PUBLISH_DIR'] = 'public';
126105

127106
const inps: Inputs = getInputs();
128107

@@ -181,4 +160,14 @@ describe('getInputs()', () => {
181160
expect(inps.DisableNoJekyll).toBe(true);
182161
expect(inps.CNAME).toMatch('github.com');
183162
});
163+
164+
test('throw error enable_jekyll or disable_nojekyll', () => {
165+
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key';
166+
process.env['INPUT_ENABLE_JEKYLL'] = 'true';
167+
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true';
168+
169+
expect(() => {
170+
getInputs();
171+
}).toThrowError('Use either of enable_jekyll or disable_nojekyll');
172+
});
184173
});

action.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,12 @@ inputs:
5555
tag_message:
5656
description: 'Set tag message'
5757
required: false
58+
enable_jekyll:
59+
description: 'Enable the GitHub Pages built-in Jekyll'
60+
required: false
61+
default: 'false'
5862
disable_nojekyll:
59-
description: 'Disable adding .nojekyll file to master or gh-pages branches'
63+
description: 'An alias for enable_jekyll to disable adding .nojekyll file to master or gh-pages branches'
6064
required: false
6165
default: 'false'
6266
cname:

package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
},
5858
"devDependencies": {
5959
"@types/jest": "^25.1.3",
60+
"@types/js-yaml": "^3.12.2",
6061
"@types/node": "~12",
6162
"@typescript-eslint/eslint-plugin": "^2.22.0",
6263
"@typescript-eslint/parser": "^2.22.0",
@@ -66,6 +67,7 @@
6667
"husky": "^4.2.3",
6768
"jest": "^25.1.0",
6869
"jest-circus": "^25.1.0",
70+
"js-yaml": "^3.13.1",
6971
"lint-staged": "^10.0.8",
7072
"prettier": "1.19.1",
7173
"standard-version": "^7.1.0",

src/get-inputs.ts

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,27 @@ export function showInputs(inps: Inputs): void {
2424
[INFO] CommitMessage: ${inps.CommitMessage}
2525
[INFO] TagName: ${inps.TagName}
2626
[INFO] TagMessage: ${inps.TagMessage}
27-
[INFO] DisableNoJekyll: ${inps.DisableNoJekyll}
27+
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll}
2828
[INFO] CNAME: ${inps.CNAME}
2929
`);
3030
}
3131

3232
export function getInputs(): Inputs {
33+
let useBuiltinJekyll = false;
34+
35+
const enableJekyll: boolean =
36+
(core.getInput('enable_jekyll') || 'false').toUpperCase() === 'TRUE';
37+
const disableNoJekyll: boolean =
38+
(core.getInput('disable_nojekyll') || 'false').toUpperCase() === 'TRUE';
39+
40+
if (enableJekyll && disableNoJekyll) {
41+
throw new Error(`Use either of enable_jekyll or disable_nojekyll`);
42+
} else if (enableJekyll) {
43+
useBuiltinJekyll = true;
44+
} else if (disableNoJekyll) {
45+
useBuiltinJekyll = true;
46+
}
47+
3348
const inps: Inputs = {
3449
DeployKey: core.getInput('deploy_key'),
3550
GithubToken: core.getInput('github_token'),
@@ -48,8 +63,7 @@ export function getInputs(): Inputs {
4863
CommitMessage: core.getInput('commit_message'),
4964
TagName: core.getInput('tag_name'),
5065
TagMessage: core.getInput('tag_message'),
51-
DisableNoJekyll:
52-
(core.getInput('disable_nojekyll') || 'false').toUpperCase() === 'TRUE',
66+
DisableNoJekyll: useBuiltinJekyll,
5367
CNAME: core.getInput('cname')
5468
};
5569

0 commit comments

Comments
 (0)