source: Dev/trunk/node_modules/grunt-svninfo/tasks/svninfo.coffee @ 516

Last change on this file since 516 was 516, checked in by hendrikvanantwerpen, 11 years ago

Enable deployment with Grunt.

File size: 1.8 KB
Line 
1#
2# * grunt-svninfo
3# * https://github.com/liqweed/grunt-svninfo
4# *
5# * Copyright (c) 2013 liqweed
6# * Licensed under the MIT license.
7#
8#
9# require("child_process").spawn("svn",["info"],{cwd:"./test/fixtures/svninfo"}).stdout.on('data',function(data){ console.log(data.toString()); });
10
11"use strict"
12module.exports = (grunt) ->
13
14  # Please see the Grunt documentation for more information regarding task
15  # creation: http://gruntjs.com/creating-tasks
16  grunt.registerTask 'svninfo', 'Get Subversion info from a working copy and populate grunt.config with the data', (output, argsKey) ->
17    done = @async()
18    options = @options
19      cwd: '.'
20      output: 'svninfo'
21    options.output = output if output
22    args = options[argsKey or 'args']
23   
24    grunt.verbose.writeln("svninfo start: output - ", options.output, ", args - ", args)
25   
26    grunt.util.spawn
27      cmd: 'svn'
28      args: if args then ['info'].concat(args) else ['info']
29      opts: options
30    , (err, result) ->
31      if err
32        grunt.log.warn err
33        return done()
34      info = {}
35      # Split SVN info by lines:
36      result.stdout.split('\n').forEach (line) ->
37        lineParts =line.split(': ')
38        if lineParts.length == 2
39          # Populate info object
40          info[lineParts[0]] = lineParts[1].trim()
41
42      # Populate grunt.config with nicely parsed object:
43      grunt.config.set options.output,
44        rev: info['Revision']
45        url: info['URL']
46        last:
47          rev: info['Last Changed Rev']
48          author: info['Last Changed Author']
49          date: info['Last Changed Date']
50        repository:
51          root: info['Repository Root']
52          id: info['Repository UUID']
53
54      grunt.log.writeln "SVN info fetched (rev: #{grunt.config.get(options.output + '.rev')})"
55      done()
Note: See TracBrowser for help on using the repository browser.