UNPKG

neft

Version:

Universal Platform

92 lines (77 loc) 2.57 kB
'use strict' config = require './config' processLogs = require './processLogs' builder = require './builder' testsFile = require './testsFile' httpServer = require './httpServer' {log} = Neft HTTP_BASED_PLATFORMS = html: true webgl: true getEnvTarget = (env) -> unless env.platform in ['local', 'npm'] env.platform exports.getEnvHandler = (env) -> switch env.platform when 'local' require '../env/local' when 'npm' require '../env/npm' when 'node' if env.version is 'current' require '../env/node' else require '../env/nvm' when 'html', 'webgl' switch env.browser when 'chrome' require '../env/chrome' else throw new Error "Unsupported browser '#{env.browser}'" when 'android' require '../env/android' when 'ios' require '../env/ios' when 'macos' require '../env/macos' else throw new Error "Unsupported environment '#{env.platform}'" targetsToBuild = {} envQueue = [] for env in config.getEnabledConfigEnvironments() if buildTarget = getEnvTarget(env) targetsToBuild[buildTarget] = env envQueue.push env: env, handler: exports.getEnvHandler(env) buildProject = (env, callback) -> target = getEnvTarget env if target builder.buildProject target, env, callback else callback null exports.runEnvs = (callback) -> buildAndRun = (name, logsReader, envCfg) -> testsFile.saveBuildTestsFile envCfg.env.platform, (err) -> if err return callback err buildProject envCfg.env, (err) -> if err return callback err log.info "\n▶️ #{name}" envCfg.handler.run envCfg.env, logsReader, (err) -> if err return callback err runNext() runNext = -> unless envCfg = envQueue.shift() return callback null name = envCfg.handler.getName envCfg.env iconIndex = -1 logsReader = new processLogs.LogsReader name httpServer.closeServer() if HTTP_BASED_PLATFORMS[envCfg.env.platform] httpServer.runHttpServer envCfg.env.platform, -> buildAndRun name, logsReader, envCfg else buildAndRun name, logsReader, envCfg return runNext()