diff --git a/README.md b/README.md index 0884389..737093a 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Generate a release for a project following semver using nodejs and gitflow [![Generate Release on NPM](https://img.shields.io/npm/v/generate-release.svg?style=flat-square)](https://www.npmjs.com/package/generate-release) [![Generate Release uses the MIT](https://img.shields.io/npm/l/generate-release.svg?style=flat-square)](https://opensource.org/licenses/MIT) -Current Version: 0.7.1 +Current Version: 0.7.2 Requires NodeJS v4.0.0 or greater diff --git a/main/index.js b/main/index.js index 7bc9ba4..b8ad3dd 100644 --- a/main/index.js +++ b/main/index.js @@ -7,14 +7,12 @@ */ (function() { - var GitCommands, GitFlowSettings, GitResetError, Glob, HelpError, IS_DEBUG, Observatory, Options, PackageFile, Path, Promise, askConfirmUpdate, askReleaseMessage, askReleaseType, incrementVersion, replaceVersionInFile, runArbitraryCommand; + var GitCommands, GitFlowSettings, GitResetError, HelpError, IS_DEBUG, Observatory, Options, PackageFile, Path, Promise, askConfirmUpdate, askReleaseMessage, askReleaseType, globNormalize, incrementVersion, replaceVersionInFile, runArbitraryCommand; IS_DEBUG = process.env.IS_DEBUG != null; Promise = require('bluebird'); - Glob = require('glob'); - Path = require('path'); Observatory = require('observatory'); @@ -43,6 +41,8 @@ runArbitraryCommand = require('./lib/helper/runArbitraryCommand'); + globNormalize = require('./lib/helper/globNormalize'); + module.exports = function(args) { var git_commands, git_flow_settings, observatory_tasks, options, package_file, release_message; options = void 0; @@ -131,20 +131,11 @@ git_commands.start(); return observatory_tasks.git_start.done('Complete'); }).then(function() { - var err, error1, file, files, i, item, j, k, len, len1, len2, ref, ref1; + var err, error1, file, files, i, len; try { - files = []; - ref = options.files_to_version; - for (i = 0, len = ref.length; i < len; i++) { - item = ref[i]; - ref1 = Glob.sync(item); - for (j = 0, len1 = ref1.length; j < len1; j++) { - file = ref1[j]; - files.push(Path.resolve(file)); - } - } - for (k = 0, len2 = files.length; k < len2; k++) { - file = files[k]; + files = globNormalize(options.files_to_version); + for (i = 0, len = files.length; i < len; i++) { + file = files[i]; observatory_tasks.write_files.status(file); replaceVersionInFile(file, options.current_version, options.next_version); } @@ -178,27 +169,9 @@ throw new GitResetError(err); } }).then(function() { - var err, error1, file, files, i, item, j, k, l, len, len1, len2, len3, ref, ref1, ref2, ref3; + var err, error1, files; try { - files = [options.package_file_location]; - ref = options.files_to_commit; - for (i = 0, len = ref.length; i < len; i++) { - item = ref[i]; - ref1 = Glob.sync(item); - for (j = 0, len1 = ref1.length; j < len1; j++) { - file = ref1[j]; - files.push(Path.resolve(file)); - } - } - ref2 = options.files_to_version; - for (k = 0, len2 = ref2.length; k < len2; k++) { - item = ref2[k]; - ref3 = Glob.sync(item); - for (l = 0, len3 = ref3.length; l < len3; l++) { - file = ref3[l]; - files.push(Path.resolve(file)); - } - } + files = globNormalize(options.package_file_location, options.files_to_commit, options.files_to_version); observatory_tasks.git_commit.status('Committing'); git_commands.commit(files); return observatory_tasks.git_commit.done('Complete'); diff --git a/main/lib/helper/globNormalize.js b/main/lib/helper/globNormalize.js new file mode 100644 index 0000000..6605be6 --- /dev/null +++ b/main/lib/helper/globNormalize.js @@ -0,0 +1,35 @@ +// Generated by CoffeeScript 1.10.0 +(function() { + var Glob, Path, globNormalize, + slice = [].slice; + + Glob = require('glob'); + + Path = require('path'); + + globNormalize = function() { + var file, files, i, item, j, len, len1, params, ref; + params = 1 <= arguments.length ? slice.call(arguments, 0) : []; + files = []; + for (i = 0, len = params.length; i < len; i++) { + item = params[i]; + if (typeof item === 'string') { + ref = Glob.sync(item); + for (j = 0, len1 = ref.length; j < len1; j++) { + file = ref[j]; + files.push(Path.resolve(file)); + } + } else if (Array.isArray(item)) { + files = files.concat(globNormalize.apply({}, item)); + } else { + throw new Error(item + " is not an array or a string."); + } + } + return files.sort().filter(function(item, pos, self) { + return !pos || item !== self[pos - 1]; + }); + }; + + module.exports = globNormalize; + +}).call(this); diff --git a/package.json b/package.json index 0f538ba..282b17a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "generate-release", - "version": "0.7.1", + "version": "0.7.2", "description": "Generate a release using git-glow", "engines": { "node": ">=4.0.0" diff --git a/src/index.coffee b/src/index.coffee index ef4459c..004a0d4 100644 --- a/src/index.coffee +++ b/src/index.coffee @@ -7,7 +7,6 @@ IS_DEBUG = process.env.IS_DEBUG? Promise = require 'bluebird' -Glob = require 'glob' Path = require 'path' Observatory = require 'observatory' @@ -26,6 +25,7 @@ askReleaseMessage = require './lib/question/askReleaseMessage' incrementVersion = require './lib/helper/incrementVersion' replaceVersionInFile = require './lib/helper/replaceVersionInFile' runArbitraryCommand = require './lib/helper/runArbitraryCommand' +globNormalize = require './lib/helper/globNormalize' module.exports = (args) -> options = undefined @@ -132,8 +132,7 @@ module.exports = (args) -> #Write Version Files .then -> try - files = [] - files.push Path.resolve file for file in Glob.sync item for item in options.files_to_version + files = globNormalize options.files_to_version for file in files observatory_tasks.write_files.status(file) replaceVersionInFile file, options.current_version, options.next_version @@ -162,11 +161,7 @@ module.exports = (args) -> #Commit files .then -> try - files = [options.package_file_location] - - files.push Path.resolve file for file in Glob.sync item for item in options.files_to_commit - files.push Path.resolve file for file in Glob.sync item for item in options.files_to_version - + files = globNormalize options.package_file_location, options.files_to_commit, options.files_to_version observatory_tasks.git_commit.status('Committing') git_commands.commit files observatory_tasks.git_commit.done('Complete') diff --git a/src/lib/helper/globNormalize.coffee b/src/lib/helper/globNormalize.coffee new file mode 100644 index 0000000..b76890d --- /dev/null +++ b/src/lib/helper/globNormalize.coffee @@ -0,0 +1,17 @@ +Glob = require 'glob' +Path = require 'path' + +globNormalize = (params...) -> + files = [] + + for item in params + if typeof item is 'string' + files.push Path.resolve file for file in Glob.sync item + else if Array.isArray item + files = files.concat globNormalize.apply {}, item + else + throw new Error "#{item} is not an array or a string." + + files.sort().filter (item, pos, self) -> not pos or item isnt self[pos - 1] + +module.exports = globNormalize