11var fs = require ( 'fs' ) ,
2- path = require ( 'path' )
2+ path = require ( 'path' ) ,
3+ semver = require ( 'semver' )
34
45module . exports = function ( grunt ) {
56
@@ -78,6 +79,13 @@ module.exports = function( grunt ) {
7879 grunt . loadNpmTasks ( 'grunt-mocha' )
7980
8081 grunt . registerTask ( 'version' , function ( version ) {
82+ if ( ! version || ! semver . valid ( version ) ) {
83+ return grunt . fail . warn ( 'Invalid semver version.' )
84+ }
85+ var current = require ( './package.json' ) . version
86+ if ( semver . lt ( version , current ) ) {
87+ return grunt . fail . warn ( 'Version is older than current.' )
88+ }
8189 ; [ 'package' , 'bower' , 'component' ] . forEach ( function ( file ) {
8290 file = './' + file + '.json'
8391 var json = fs . readFileSync ( file , 'utf-8' )
@@ -87,26 +95,7 @@ module.exports = function( grunt ) {
8795 } )
8896
8997 grunt . registerTask ( 'release' , function ( version ) {
90- if ( ! version || ! isValid ( version ) ) {
91- return grunt . fail . warn ( 'Must provide a valid semver version number.' )
92- }
93- grunt . task . run ( [ 'version:' + version , 'default' ] )
94-
95- function isValid ( v ) {
96- var nums = v . split ( '.' )
97- if ( nums . length !== 3 ) return false
98- var current = require ( './package.json' ) . version . split ( '.' ) ,
99- a1 = + nums [ 0 ] ,
100- b1 = + nums [ 1 ] ,
101- c1 = + nums [ 2 ] ,
102- a2 = + current [ 0 ] ,
103- b2 = + current [ 1 ] ,
104- c2 = + current [ 2 ]
105- if ( a1 < a2 ) return false
106- if ( a1 === a2 && b1 < b2 ) return false
107- if ( a1 === a2 && b1 === b2 && c1 < c2 ) return false
108- return true
109- }
98+ grunt . task . run ( [ 'default' , 'version:' + version ] )
11099 } )
111100
112101 grunt . registerTask ( 'casper' , function ( id ) {
0 commit comments