diff --git a/build/verup.js b/build/verup.js index a2cd149..151f6b9 100644 --- a/build/verup.js +++ b/build/verup.js @@ -15,27 +15,50 @@ * * * @author Dumitru Uzun (DUzun.Me) - * @version 1.1.0 + * @version 1.3.0 */ var path = require('path'); var fs = require('fs'); -var _root = path.join(__dirname, '..'); -var files = [ - 'ua-parser-js.jquery.json', - 'component.json', - 'bower.json', - 'package.js', - 'src/ua-parser.js' -]; - var ver_reg = [ - /^((?:\$|@|(\s*(?:var|,)?\s+))(?:LIBVERSION|version)[\s\:='"]+)([0-9]+(?:\.[0-9]+){2,2})/ + /^((?:\$|(\s*\*\s*@)|(\s*(?:var|,)?\s+))version[\s\:='"]+)([0-9]+(?:\.[0-9]+){2,2})/ , /^(\s?\*.*v)([0-9]+(?:\.[0-9]+){2,2})/ ]; -var packFile = path.join(_root, 'package.json'); +/// bump should be 1 for revision, 1.0 for minor and 1.0.0 for major version +var bump = '1'; // bump by + +/// Project name to bump (search it's package.json folder) +var name = ''; + +var _a = 'b'; +process.argv.forEach(function (v, i) { + if ( i < 2 ) return; + if ( v.slice(0,1) == '-' && isNaN(parseFloat(v)) ) { + _a = v.slice(1); + } + else { + switch(_a) { + case 'b': { + bump = v; + } break; + case 'n': { + name = v; + } break; + } + _a = 'b'; + } +}); + +var packFile = findPackage(__dirname, name); + +if ( !packFile ) { + console.log('package.json file not found'); + process.exist(1); +} + +var _root = path.dirname(packFile); var packo = require(packFile); if ( !packo ) { @@ -43,20 +66,29 @@ if ( !packo ) { process.exit(1); } +var _verup = packo.verup; + +if ( !_verup ) { + console.log('package.json doesn\'t have a `verup` property defined'); + process.exist(1); +} + +var files = _verup.files; + +if ( _verup.regs ) { + ver_reg = _verup.regs.map(function (r) { return new RegExp(r); }); +} + var over = packo.version; - -/* - * bump should be 1 for revision, 1.0 for minor and 1.0.0 for major version - */ -var bump = (process.argv[2] || '1').split('.').reverse(); - if ( over ) { + bump = bump.split('.').reverse(); + var nver = over.split('.').reverse(); var b, l; while(bump.length && !(b = parseInt(bump.pop()))); l = bump.length; -// console.log({b:b,nver:nver,over:over,l:l,bump:bump}) + // console.log({b:b,nver:nver,over:over,l:l,bump:bump}) nver[l] = +nver[l] + b; bump.forEach(function (v,i) { nver[i] = v; }); @@ -104,9 +136,39 @@ if ( over ) { } } if ( buf && buf != cnt ) { - console.log("\t" + fn.replace(_root, '')); + console.log("\t" + fn.replace(_root, '').replace(/^[\\/]+/, '')); fs.writeFileSync(fn, buf); } }); } + + +/// Find package.json file in closest folder from `dir` and up. +function findPackage(dir, packageName) { + var d = dir || '.', f; + do { + f = path.join(d, 'package.json'); + if ( fs.existsSync(f) ) { + + var p = require(f); + // Look for a specific project name + if ( packageName ) { + if ( p ) { + if ( p.name == packageName ) { + return f; + } + } + } + // Look for any project except this one (verup) + else { + if ( !p || p.name != 'verup' ) { + return f; + } + } + } + dir = d; + d = path.join(d, '..'); + } while (d != dir && dir.slice(0,2) != '..'); + return false; +} diff --git a/package.json b/package.json index 1b586ee..0d51bae 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,19 @@ "test": "jshint src/ua-parser.js && mocha -R nyan test/test.js", "verup": "node ./build/verup.js" }, + "verup": { + "files": [ + "ua-parser-js.jquery.json", + "component.json", + "bower.json", + "package.js", + "src/ua-parser.js" + ], + "regs": [ + "^((?:\\$|(\\s*\\*\\s*@)|(\\s*(?:var|,)?\\s+))(?:LIBVERSION|version)[\\s\\:='\"]+)([0-9]+(?:\\.[0-9]+){2,2})", + "^(\\s?\\*.*v)([0-9]+(?:\\.[0-9]+){2,2})" + ] + }, "devDependencies": { "jshint": "~1.1.0", "mocha": "~1.8.0",