Validação de mensagens de commit e nomes de branches (gilp-util)

Este artigo faz parte da série sobre ferramentas para garantir a qualidade do código.
Vamos explorar as utilidades do gilp-util para diferentes casos de uso na criação de plugins do gulp que dependem do Git.
Em geral, seus nomes explicam o que fazem.
Talvez você queira executar validações com base no nome da branch atual. gilpUtil.getBranchName permite obtê-lo facilmente. É o que gilp-check-branch-name usa internamente.
Imagine que você queira verificar se o nome da branch atual corresponde de alguma forma a um ticket de um rastreador de issues, como o GitHub. Para isso, usaremos node-github.
Para simplificar, vamos supor que a convenção dos nomes das branches seja [dev|master]/[isssue-number].
Este poderia ser o código do plugin:
'use strict'
var through = require('through2');
var gilpUtil = require('gilp-util');
var GithubApi = require('node-github');
module.exports = function (opts, message) {
var githubOpts = opts.github;
message = message || 'No issue found with that number.';
function bufferContents(file, enc, cb) {
cb();
}
function endStream(cb) {
var github = new GitHubApi();
var branchName = gilpUtil.getBranchName();
var issueNumber = branchName.split('/')[1];
github.authenticate(githubOpts.auth);
github.issues.get({
owner: githubOpts.owner,
repo: githubOpts.repo,
number: issueNumber
}, (err, res) => {
if (res.statusCode > 400) {
this.emit('error', new Error('gilp-check-branch-name-issue-tracker: ' + message));
cb();
}
});
}
return through.obj(bufferContents, endStream);
};
No seu gulpfile, você deve incluí-lo desta maneira:
const gilp = require('gilp')(gulp);
const checkBranchIssue = require('check-branch-issue'); // Or something.
gilp.hook('pre-commit', () => {
gilp.srcFromStaged(['**/*'])
.pipe(checkBranchIssue(
{github:
{auth: {}, /* type and token */
owner: '', /* repo owner */
repo: '', /* repo */ }
}))
});
Também temos getCommitMessage, isInMerge e getGitDirectory.
Consulte o README.