UNPKG

grunt-svninfo

Version:

Subversion working copy metadata (svn info) grunt plugin

59 lines (51 loc) 2.07 kB
# # * grunt-svninfo # * https://github.com/liqweed/grunt-svninfo # * # * Copyright (c) 2013 liqweed # * Licensed under the MIT license. # # # require("child_process").spawn("svn",["info"],{cwd:"./test/fixtures/svninfo"}).stdout.on('data',function(data){ console.log(data.toString()); }); "use strict" module.exports = (grunt) -> # Please see the Grunt documentation for more information regarding task # creation: http://gruntjs.com/creating-tasks grunt.registerTask 'svninfo','Get Subversion info from a working copy and populate grunt.config with the data', (output, argsKey) -> done = @async() options = @options cwd: '.' output: 'svninfo' options.output = output if output args = options[argsKey or 'args'] grunt.verbose.writeln("svninfo start: output - ", options.output, ", args - ", args) grunt.util.spawn cmd: 'svn' args: if args then ['info', '--xml'].concat(args) else ['info', '--xml'] opts: options , (err, result) -> if err grunt.log.warn err return done() info = {} # Extract xml info with RegExp revRE = /<entry[^>]+revision="([^"]*)"/ urlRE = /<url>([^<]*)<\/url>/ lastRevRE = /<commit[^>]+revision="([^"]*)"/ lastAuthorRE = /<author>([^<]*)<\/author>/ lastDateRE = /<date>([^<]*)<\/date>/ repoRootRE = /<root>([^<]*)<\/root>/ repoIdRE = /<uuid>([^<]*)<\/uuid>/ # Populate grunt.config with nicely parsed object: grunt.config.set options.output, rev: revRE.exec(result.stdout)[1] url: urlRE.exec(result.stdout)[1] last: rev: lastRevRE.exec(result.stdout)[1] author: lastAuthorRE.exec(result.stdout)[1] date: lastDateRE.exec(result.stdout)[1] repository: root: repoRootRE.exec(result.stdout)[1] id: repoIdRE.exec(result.stdout)[1] grunt.log.writeln "SVN info fetched (rev: #{grunt.config.get(options.output + '.rev')})" done()