'use strict'; var _ = require('lodash-compat'), childProcess = require('child_process'), execSync = childProcess.execSync, spawn = childProcess.spawn; var reString = /(["'])(?:(?!\1)[^\n\\]|\\.)*?\1/g; var git = spawn('git', ['log', 'npm-packages', '--pretty=format:"%s | %h"']); git.stdout.on('data', function(data) { var commands = _.map(data.toString().match(reString), function(value) { var parts = _.map(_.trim(value, '"\'').split('|'), _.trim); parts[0] = _.result(/\d+(?:\.\d+)*/.exec(parts[0]), 0, ''); return 'git tag -f -a -m ' + parts[0] + '-npm-packages "' + parts[0] + '-npm-packages" ' + parts[1]; }); _.eachRight(commands, function(command) { console.log(command); execSync(command); }); });