semantic-release/lib/hide-sensitive.js
2021-07-30 13:57:35 -07:00

22 lines
795 B
JavaScript

import lodash from 'lodash'
const {escapeRegExp, size, isString} = lodash
import {SECRET_REPLACEMENT, SECRET_MIN_SIZE} from './definitions/constants.js';
export default (env) => {
const toReplace = Object.keys(env).filter((envVar) => {
// https://github.com/semantic-release/semantic-release/issues/1558
if (envVar === 'GOPRIVATE') {
return false;
}
return /token|password|credential|secret|private/i.test(envVar) && size(env[envVar].trim()) >= SECRET_MIN_SIZE;
});
const regexp = new RegExp(
toReplace.map((envVar) => `${escapeRegExp(env[envVar])}|${escapeRegExp(encodeURI(env[envVar]))}`).join('|'),
'g'
);
return (output) =>
output && isString(output) && toReplace.length > 0 ? output.toString().replace(regexp, SECRET_REPLACEMENT) : output;
};