exec = require('child_process').exec
argv = require('optimist').argv
sl = require './serverList'

exports = module.exports = (slist, cmd) ->
    run(slist, cmd)

run = (slist, cmd) ->
    # l-home[1-4].fe.cn5, l-corpfe[1,3,4].fe.cn1
    if (!argv['r'] or !argv['c']) and (!slist and !cmd)
        console.log('缺少-c或-r参数')
        return

    slist = slist or argv['r']
    serverList = sl.parse(slist + ' ')
    remoteCommand = cmd or argv['c']

    i = 0
    runCommand = () ->
        if i is serverList.length
            console.log '远程命令执行完成'
            return

        server = serverList[i]
        command = "ssh #{server} -t -t '#{remoteCommand}'"
        remote = exec(command)
        remote.stdout.on('data', (data) ->
            console.log data.toString()
        )

        remote.stderr.on('data', (data) ->
            console.log(data.toString())
        )

        remote.on('close', (code) ->
            if code isnt 0
                console.log('grep process exited with code ' + code)
            else
                i += 1
                runCommand()
        )

    runCommand()

exports.initServer = (schema) ->
    ret = []
    for own evn, server of schema.serverList
        ret.push server

    serverList = ret.join(',')
    cmd = 'sudo qxf initserver -w ' + schema.webapp + ' -s ' + schema.service
    run(serverList, cmd)