cross-ci
Version:
`cross-ci` standardizes environment variables for CI. For example, your can simply use `BUILD_BRANCH` variable in all CI runners instead of `CIRCLE_BRANCH` in CircleCI or `TRAVIS_PULL_REQUEST_BRANCH` in Travis.
65 lines (48 loc) • 1.67 kB
JavaScript
const path = require('path');
const fs = require('fs');
const glob = require('glob');
const REG_BLOCK = /(^|\n)(\s*\/\/\/([^\n]*))+/g;
const REG_LINE = /\s*\/\/\/\s?([^\n]*)/;
const docifyFolder = ({folder, concatBlock, concatListItem}) => {
let files;
try {
files = glob.sync(folder + '/*.js');
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
// eslint-disable-next-line no-process-exit
process.exit(1);
return;
}
const cwd = process.cwd();
let list = '';
let text = '';
for (const file of files) {
const filename = path.join(cwd, file);
const content = fs.readFileSync(filename, 'utf8');
const blocks = content.match(REG_BLOCK);
const name = path.basename(file).slice(0, -3);
let fileText = '';
if (!blocks) {
// eslint-disable-next-line no-continue
continue;
}
list += concatListItem(name);
for (const block of blocks) {
const lines = block.split('\n');
for (let index = 0; index < lines.length; index++) {
const line = lines[index];
const lineMatches = line.match(REG_LINE);
if (lineMatches) {
lines[index] = lineMatches[1];
}
}
const blockText = lines.join('\n').replace(/\n{3,}/g, '\n');
fileText += blockText + '\n';
}
text += concatBlock(name, fileText);
}
// eslint-disable-next-line consistent-return
return list + '\n\n' + text;
};
module.exports = docifyFolder;