plan = require('flightplan')
argv = require('yargs').argv

plan.target('beta', {
  host: 'jrs1.int.avs.io',
  username: 'aviasales',
  agent: process.env.SSH_AUTH_SOCK
}, {
  web_root: '/home/aviasales/jr-search'
  environment: 'beta'
})

plan.target('production', {
  host: 'jrd2.int.avs.io',
  username: 'aviasales',
  agent: process.env.SSH_AUTH_SOCK
}, {
  web_root: '/home/aviasales/jr-search'
  environment: 'production'
})

branch = argv.branch or 'master'

locales = ['en', 'th', 'de', 'es', 'fr', 'it', 'pl', 'pt', 'pt_BR']

plan.local((local) ->
  local.log "Preparing clean version"
  local.exec "rm -rf tmp"
  local.exec "mkdir -p tmp/deployment"
  local.exec "cp -rf node_modules tmp/deployment"
  local.exec "cp -rf .git tmp/deployment"
  local.with "cd tmp/deployment", ->
    local.log "Reset hard"
    local.exec "git fetch && git reset --hard HEAD && git clean -fd && git checkout #{branch} && git reset --hard origin/#{branch}"

    local.log "Installing npm packages"
    local.exec "npm install"

    local.log "Building release"
    locales.forEach (locale) ->
      local.exec "gulp --locale #{locale} html"
      local.exec "webpack --production --locale #{locale}"
    local.exec "gulp build --stage #{plan.runtime.options.environment}"
    local.exec "gulp do_minify --stage #{plan.runtime.options.environment}"
    local.exec "gulp compress --stage #{plan.runtime.options.environment}"
    local.exec "cd tmp/build && tar -cvzf ../build.tgz ."
    local.transfer "tmp/build.tgz", plan.runtime.options.web_root
)

plan.remote((remote) ->
  release = (new Date).toString().slice(0, 21).replace(/\s/g, '_')
  remote.log "Put release #{release}"
  remote.with "cd #{plan.runtime.options.web_root}", ->
    remote.exec "mkdir -p releases/#{release}"
    remote.exec "tar -zxvf tmp/build.tgz -C releases/#{release}"
    remote.exec "ln -snf releases/#{release} current"
    remote.exec "ls -dt releases/* | tail -n +11 | xargs rm -rf"
)

# plan.local((local) ->
#   local.exec 'ENVIRONMENT=#{plan.runtime.options.environment} sh notify_rollbar.sh'
#   local.exec 'rm -rf tmp/deployment'
# )
