Skip to content

Commit

Permalink
feat: Config file support
Browse files Browse the repository at this point in the history
closes amannn#161
  • Loading branch information
zepatrik committed Jul 18, 2022
1 parent 348e2e6 commit b23c0b6
Show file tree
Hide file tree
Showing 3 changed files with 40 additions and 43 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:

## Configuration

The action works without configuration, however you can provide options for customization.
The action works without configuration, however you can provide options for customization. You can either use inputs to pass the configuration, or add a `.github/semantic.json` file to your repository. The action inputs will override the configuration file. Lists will be appended.

The following terminology helps to understand the configuration options:

Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,6 @@
"semantic-release": "19.0.2"
},
"engines": {
"node": "^16.0.0"
"node": "^18.0.0"
}
}
79 changes: 38 additions & 41 deletions src/parseConfig.js
Original file line number Diff line number Diff line change
@@ -1,92 +1,89 @@
const {readFileSync} = require('fs');
const ConfigParser = require('./ConfigParser');

module.exports = function parseConfig() {
let types;
const config = JSON.parse(
readFileSync('.github/semantic.json', {encoding: 'utf8'})
);

if (process.env.INPUT_TYPES) {
types = ConfigParser.parseEnum(process.env.INPUT_TYPES);
config.types = [
...config.types,
...ConfigParser.parseEnum(process.env.INPUT_TYPES)
];
}

let scopes;
if (process.env.INPUT_SCOPES) {
scopes = ConfigParser.parseEnum(process.env.INPUT_SCOPES);
config.scopes = [
...config.scopes,
...ConfigParser.parseEnum(process.env.INPUT_SCOPES)
];
}

let requireScope;
if (process.env.INPUT_REQUIRESCOPE) {
requireScope = ConfigParser.parseBoolean(process.env.INPUT_REQUIRESCOPE);
config.requireScope = ConfigParser.parseBoolean(
process.env.INPUT_REQUIRESCOPE
);
}

let disallowScopes;
if (process.env.INPUT_DISALLOWSCOPES) {
disallowScopes = ConfigParser.parseEnum(process.env.INPUT_DISALLOWSCOPES);
config.disallowScopes = [
...config.disallowScopes,
...ConfigParser.parseEnum(process.env.INPUT_DISALLOWSCOPES)
];
}

let subjectPattern;
if (process.env.INPUT_SUBJECTPATTERN) {
subjectPattern = ConfigParser.parseString(process.env.INPUT_SUBJECTPATTERN);
config.subjectPattern = ConfigParser.parseString(
process.env.INPUT_SUBJECTPATTERN
);
}

let subjectPatternError;
if (process.env.INPUT_SUBJECTPATTERNERROR) {
subjectPatternError = ConfigParser.parseString(
config.subjectPatternError = ConfigParser.parseString(
process.env.INPUT_SUBJECTPATTERNERROR
);
}

let headerPattern;
if (process.env.INPUT_HEADERPATTERN) {
headerPattern = ConfigParser.parseString(process.env.INPUT_HEADERPATTERN);
config.headerPattern = ConfigParser.parseString(
process.env.INPUT_HEADERPATTERN
);
}

let headerPatternCorrespondence;
if (process.env.INPUT_HEADERPATTERNCORRESPONDENCE) {
headerPatternCorrespondence = ConfigParser.parseString(
config.headerPatternCorrespondence = ConfigParser.parseString(
process.env.INPUT_HEADERPATTERNCORRESPONDENCE
);
}

let wip;
if (process.env.INPUT_WIP) {
wip = ConfigParser.parseBoolean(process.env.INPUT_WIP);
config.wip = ConfigParser.parseBoolean(process.env.INPUT_WIP);
}

let validateSingleCommit;
if (process.env.INPUT_VALIDATESINGLECOMMIT) {
validateSingleCommit = ConfigParser.parseBoolean(
config.validateSingleCommit = ConfigParser.parseBoolean(
process.env.INPUT_VALIDATESINGLECOMMIT
);
}

let validateSingleCommitMatchesPrTitle;
if (process.env.INPUT_VALIDATESINGLECOMMITMATCHESPRTITLE) {
validateSingleCommitMatchesPrTitle = ConfigParser.parseBoolean(
config.validateSingleCommitMatchesPrTitle = ConfigParser.parseBoolean(
process.env.INPUT_VALIDATESINGLECOMMITMATCHESPRTITLE
);
}

let githubBaseUrl;
if (process.env.INPUT_GITHUBBASEURL) {
githubBaseUrl = ConfigParser.parseString(process.env.INPUT_GITHUBBASEURL);
config.githubBaseUrl = ConfigParser.parseString(
process.env.INPUT_GITHUBBASEURL
);
}

let ignoreLabels;
if (process.env.INPUT_IGNORELABELS) {
ignoreLabels = ConfigParser.parseEnum(process.env.INPUT_IGNORELABELS);
config.ignoreLabels = ConfigParser.parseEnum(
process.env.INPUT_IGNORELABELS
);
}

return {
types,
scopes,
requireScope,
disallowScopes,
wip,
subjectPattern,
subjectPatternError,
headerPattern,
headerPatternCorrespondence,
validateSingleCommit,
validateSingleCommitMatchesPrTitle,
githubBaseUrl,
ignoreLabels
};
return config;
};

0 comments on commit b23c0b6

Please sign in to comment.