markscript-core
Version:
A library for building JavaScript or TypeScript projects with MarkLogic.
111 lines • 5.5 kB
JavaScript
var d = require('./deployer');
exports.coreBuildPlugin = {
generate: function (buildModel, buildConfig) {
return buildModel;
},
jsonify: function (buildModel, buildConfig, pkgDir, buildTypeModel, runtimeTypeModel, buildModelPersistance) {
var serialisable = {
databases: buildModel.databases,
servers: buildModel.servers,
ruleSets: buildModel.ruleSets,
tasks: buildModel.tasks,
alerts: buildModel.alerts,
contentDatabase: buildModel.contentDatabase,
modulesDatabase: buildModel.modulesDatabase,
securityDatabase: buildModel.securityDatabase,
schemaDatabase: buildModel.schemaDatabase,
triggersDatabase: buildModel.triggersDatabase
};
if (buildModelPersistance === 2) {
serialisable.modules = buildModel.modules;
serialisable.extensions = buildModel.extensions;
}
else {
serialisable.modules = {};
serialisable.extensions = {};
Object.keys(buildModel.modules).forEach(function (name) {
serialisable.modules[name] = { name: name, code: '' };
});
Object.keys(buildModel.extensions).forEach(function (name) {
serialisable.extensions[name] = { name: name, code: '' };
});
}
return serialisable;
},
dejsonify: function (serialisable) {
return {
databases: serialisable.databases,
servers: serialisable.servers,
ruleSets: serialisable.ruleSets,
modules: serialisable.modules,
extensions: serialisable.extensions,
tasks: serialisable.tasks,
alerts: serialisable.alerts,
contentDatabase: serialisable.contentDatabase,
modulesDatabase: serialisable.modulesDatabase,
securityDatabase: serialisable.securityDatabase,
schemaDatabase: serialisable.schemaDatabase,
triggersDatabase: serialisable.triggersDatabase
};
},
tasks: {
create: {
execute: function (buildModel, buildConfig, server) {
var configClient = server.getClient(buildConfig.databaseConnection.configPort || 8002);
return d.deploy(configClient, new d.StandardDeployer(), 1, buildModel);
},
requiresFreshModel: true,
description: 'Create the MarkLogic HTTP server and databases defined by the database model'
},
delete: {
execute: function (buildModel, buildConfig, server) {
var configClient = server.getClient(buildConfig.databaseConnection.configPort || 8002);
return d.undeploy(configClient, new d.StandardDeployer(), buildModel);
},
description: 'Delete the previously created MarkLogic HTTP server and databases defined by the database model'
},
deploy: {
execute: function (buildModel, buildConfig, server) {
var adminClient = server.getClient(buildConfig.databaseConnection.adminPort || 8001);
var configClient = server.getClient(buildConfig.databaseConnection.configPort || 8002);
return d.deployAssets(adminClient, configClient, function (database) {
return server.getClient(database);
}, new d.StandardAssetDeployer(), buildModel, buildModel);
},
requiresFreshModel: true,
description: 'Deploy the assets (modules, extensions, alerts, etc.) to the MarkLogic HTTP server and databases'
},
undeploy: {
execute: function (buildModel, buildConfig, server) {
var client = server.getClient(buildConfig.databaseConnection.httpPort || 8000);
return d.undeployAssets(client, new d.StandardDeployer(), buildModel);
},
description: 'Remove the previously deployed assets (modules, extensions, alerts, etc.) to the MarkLogic HTTP server and databases'
},
build: {
execute: function (buildModel, buildConfig, server) {
return exports.coreBuildPlugin.tasks['create'].execute(buildModel, buildConfig, server).then(function () {
return exports.coreBuildPlugin.tasks['deploy'].execute(buildModel, buildConfig, server);
});
},
description: 'Create then deploy'
},
redeploy: {
execute: function (buildModel, buildConfig, server) {
return exports.coreBuildPlugin.tasks['undeploy'].execute(buildModel, buildConfig, server).then(function () {
return exports.coreBuildPlugin.tasks['deploy'].execute(buildModel, buildConfig, server);
});
},
description: 'Undeploy then deploy'
},
rebuild: {
execute: function (buildModel, buildConfig, server) {
return exports.coreBuildPlugin.tasks['delete'].execute(buildModel, buildConfig, server).then(function () {
return exports.coreBuildPlugin.tasks['build'].execute(buildModel, buildConfig, server);
});
},
description: 'Delete then build'
}
}
};
//# sourceMappingURL=coreBuildPlugin.js.map