#!/usr/bin/python

# (c) 2012, Michael DeHaan <michael.dehaan@gmail.com>, and others
#
# This file is part of Ansible
#
# Ansible is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Ansible is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Ansible.  If not, see <http://www.gnu.org/licenses/>.
#

try:
    import json
except ImportError:
    import simplejson as json

import subprocess
import sys
import datetime
import traceback

args = sys.argv[1:]
startd = datetime.datetime.now()

try:
    cmd = subprocess.Popen(args, shell=False, 
        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    out, err = cmd.communicate()
except (OSError, IOError), e:
    print json.dumps({
        "failed": 1,
        "error": str(e),
        })
    sys.exit(1)
except:
    print json.dumps({
        "failed" : 1,
        "traceback" : traceback.format_exc()
    })   
    sys.exit(1)

endd = datetime.datetime.now()
delta = endd - startd

result = {
   "stdout" : out,
   "stderr" : err,
   "rc"     : cmd.returncode,
   "start"  : str(startd),
   "end"    : str(endd),
   "delta"  : str(delta),
}

print json.dumps(result)