Jump To …

src/tasks/package/

index.cake.coffee


          
{readFileSync} = require 'fs'

Neat = require '../../neat'
Packager = require './packager'
op = require './operators'

{parallel} = Neat.require 'async'
{run, neatTask, asyncErrorTrap} = Neat.require 'utils/commands'
{error, info, green, red, puts, error} = Neat.require 'utils/logs'
{ensure, rm, find, readFiles} = Neat.require 'utils/files'
{read} = Neat.require 'utils/cup'
{deprecated} = Neat.require 'utils/lib'
_ = Neat.i18n.getHelper()

exports['package'] = neatTask
  name: 'package'
  description: _('neat.tasks.package.description')
  environment: 'default'
  action: (callback) ->
    deprecated 'The old packager based compilation will no longer
    be supported in future version of Neat. Use a Neatfile and The
    cake build task instead.'.squeeze()

    {dir, conf, tmp} = Neat.config.tasks.package

    err = -> callback? 1
    rm dir, asyncErrorTrap err, ->
      ensure dir, asyncErrorTrap err, ->
        find 'cup', conf, asyncErrorTrap err, (files) ->
          readFiles files, asyncErrorTrap err, (res) ->
            commands = (Packager.asCommand read(c), p for p,c of res)
            parallel commands, (res) ->
              failed = 0
              succeed = 0
              res.forEach (status) ->
                if status is 1
                  failed += 1
                  true
                else
                  succeed += 1
                  false

              if failed > 0
                error red _('neat.tasks.package.package_failed',
                            {succeed, failed})
                setTimeout (-> callback? 1), 100
              else
                info green _('neat.tasks.package.packages_done',
                              packages: res.length)
                setTimeout (-> callback? 0), 100