js/executables/executable_command.js
// NPM IMPORTS
import assert from 'assert'
// COMMON IMPORTS
import T from 'devapt-core-common/dist/js/utils/types'
import Executable from 'devapt-core-common/dist/js/base/executable'
/**
* Contextual constant for this file logs.
* @private
*/
const context = 'server/executables/executable_command'
/**
* @file todo Executable command class.
* @author Luc BORIES
* @license Apache-2.0
*/
export default class ExecutableCommand extends Executable
{
/**
* Create an Executable command.
*
* @returns {nothing}
*/
constructor()
{
super(context)
/**
* Executable settings.
* @protected
* @type {object}
*/
this.store_config = undefined
/**
* Executable server.
* @protected
* @type {object}
*/
this.server = undefined
}
/**
* Prepare an execution with contextual informations.
*
* @param {object} arg_settings - execution settings.
*
* @returns {nothing}
*/
prepare(arg_settings)
{
assert( T.isObject(arg_settings), context + ':no given config')
this.store_config = arg_settings
assert(T.isObject(this.store_config), context + ':bad config object')
assert(T.isObject(this.store_config.server), context + ':bad server object')
assert(this.store_config.server.is_server, context + ':bad server instance')
this.server = this.store_config.server
// assert(T.isArray(this.store_config.server_types), context + ':bad server_types array')
this.store_config.server_types = ['restify', 'express']
}
/**
* Execution with contextual informations.
*
* @param {object} arg_data - execution datas.
*
* @returns {object} promise
*/
execute(arg_data)
{
// CHECK APPLICATION
assert(T.isObject(arg_data), context + ':bad application object')
assert(arg_data.is_topology_define_application, context + ':bad application instance')
const application = arg_data
this.info('Execute: add server route for ' + application.$name)
// CHECK SERVER
const server_instance = this.server
assert(T.isString(server_instance.server_type), context + ':bad server_instance.server_type string')
assert(this.store_config.server_types.indexOf(server_instance.server_type) > -1, context + ':server_instance.server_type not valid')
// console.log(server_instance, 'server_instance')
// console.log(server_instance.server, 'server_instance.server')
// assert(T.isObject(server_instance.server), context + ':bad server_instance.server object')
assert(T.isObject(server_instance.server) || T.isFunction(server_instance.server), context + ':bad server_instance.server object or function')
return Promise.resolve()
}
}