Artigos

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.

“Validação de mensagens de commit e nomes de branches (gilp-util)” por Rodrigo Lopez está sob a licença CC BY SA. Os exemplos de código-fonte estão sob a licença MIT.

Foto de Luca Bravo.

Classificado em Código aberto.

Leituras relacionadas