Skip to content

Commit

Permalink
grunt tasks update
Browse files Browse the repository at this point in the history
  • Loading branch information
yyx990803 committed Dec 22, 2013
1 parent 216e398 commit 0d3248d
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 56 deletions.
66 changes: 10 additions & 56 deletions Gruntfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ module.exports = function( grunt ) {

grunt.initConfig({

pkg: grunt.file.readJSON('package.json'),

componentbuild: {
build: {
options: {
Expand Down Expand Up @@ -53,9 +55,11 @@ module.exports = function( grunt ) {
compress: true,
mangle: true,
banner:
'// Vue.js - v' + require('./package.json').version + '\n' +
'// (c) 2013 Evan You\n' +
'// https://github.com/yyx990803/vue\n'
'/*\n' +
' VueJS v<%= version %>\n' +
' (c) 2013 Evan You\n' +
' License: MIT\n' +
'*/\n'
},
files: {
'dist/vue.min.js': 'dist/vue.js'
Expand All @@ -78,57 +82,8 @@ module.exports = function( grunt ) {
grunt.loadNpmTasks( 'grunt-component-build' )
grunt.loadNpmTasks( 'grunt-mocha' )

grunt.registerTask( 'version', function (version) {
if (!version || !semver.valid(version)) {
return grunt.fail.warn('Invalid semver version.')
}
var current = require('./package.json').version
if (semver.lt(version, current)) {
return grunt.fail.warn('Version is older than current.')
}
;['package', 'bower', 'component'].forEach(function (file) {
file = './' + file + '.json'
var json = fs.readFileSync(file, 'utf-8')
json = json.replace(/"version"\s*:\s*"(.+?)"/, '"version": "' + version + '"')
fs.writeFileSync(file, json)
})
})

grunt.registerTask( 'release', function (version) {
grunt.task.run(['default', 'version:' + version])
})

grunt.registerTask( 'casper', function (id) {
var done = this.async(),
file = id ? id + '.js' : ''
grunt.util.spawn({
cmd: 'casperjs',
args: ['test', '--concise', 'specs/' + file],
opts: {
stdio: ['ignore', process.stdout, 'ignore'],
cwd: path.resolve('test/functional')
}
}, function (err, res) {
if (err) grunt.fail.fatal(res.stdout || 'CasperJS test failed')
grunt.log.writeln(res.stdout)
done()
})
})

grunt.registerTask( 'jsc', function () {
var done = this.async()
grunt.util.spawn({
cmd: './node_modules/jscoverage/bin/jscoverage',
args: ['./test/vue.test.js'],
opts: {
stdio: 'inherit'
}
}, function (err, res) {
if (err) grunt.fail.fatal(res.stdout || 'Jscoverage instrumentation failed')
grunt.log.writeln(res.stdout)
fs.unlinkSync('./test/vue.test.js')
done()
})
grunt.file.recurse('tasks', function (path) {
require('./' + path)(grunt)
})

grunt.registerTask( 'test', [
Expand All @@ -140,8 +95,7 @@ module.exports = function( grunt ) {

grunt.registerTask( 'default', [
'jshint',
'test',
'uglify'
'test'
])

}
20 changes: 20 additions & 0 deletions tasks/casper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
var path = require('path')

module.exports = function (grunt) {
grunt.registerTask( 'casper', function (id) {
var done = this.async(),
file = id ? id + '.js' : ''
grunt.util.spawn({
cmd: 'casperjs',
args: ['test', '--concise', 'specs/' + file],
opts: {
stdio: ['ignore', process.stdout, 'ignore'],
cwd: path.resolve('test/functional')
}
}, function (err, res) {
if (err) grunt.fail.fatal(res.stdout || 'CasperJS test failed')
grunt.log.writeln(res.stdout)
done()
})
})
}
19 changes: 19 additions & 0 deletions tasks/jsc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
var fs = require('fs')

module.exports = function (grunt) {
grunt.registerTask( 'jsc', function () {
var done = this.async()
grunt.util.spawn({
cmd: './node_modules/jscoverage/bin/jscoverage',
args: ['./test/vue.test.js'],
opts: {
stdio: 'inherit'
}
}, function (err, res) {
if (err) grunt.fail.fatal(res.stdout || 'Jscoverage instrumentation failed')
grunt.log.writeln(res.stdout)
fs.unlinkSync('./test/vue.test.js')
done()
})
})
}
64 changes: 64 additions & 0 deletions tasks/release.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
var semver = require('semver'),
readline = require('readline'),
exec = require('child_process').exec

module.exports = function (grunt) {

grunt.registerTask('version', function (version) {
;['package', 'bower', 'component'].forEach(function (file) {
file = './' + file + '.json'
var json = grunt.file.read(file)
json = json.replace(/"version"\s*:\s*"(.+?)"/, '"version": "' + version + '"')
grunt.file.write(file, json)
})
})

grunt.registerTask('git', function (version) {
exec(
'git add -A;' +
'git commit -m "Release v' + version + '";' +
'git tag v' + version + ';' +
'git push;' +
'git push origin v' + version,
this.async()
)
})

grunt.registerTask('release', function (version) {

var done = this.async(),
current = grunt.config('pkg.version'),
next = semver.inc(current, version || 'patch')

if (!next) {
if (!semver.valid(version)) {
return grunt.fail.warn('Invalid version.')
}
if (semver.lt(version, current)) {
return grunt.fail.warn('Version is older than current.')
}
}

readline.createInterface({
input: process.stdin,
output: process.stdout
}).question('Releasing version v' + next + '. Continue? (Y/n)', function (answer) {
if (!answer || answer.toLowerCase() === 'y') {
console.log(
'\n\x1b[1m\x1b[34m' +
'Releasing: v' + next +
'\x1b[39m\x1b[22m'
)
grunt.config.set('version', next)
grunt.task.run([
'jshint',
'test',
'version:' + next,
'uglify',
'git:' + next
])
}
done()
})
})
}

0 comments on commit 0d3248d

Please sign in to comment.