Docker.Config.js

JavaScript source for A Docker module for Node.js, 78 lines. Raw file

const Security = require('Security')

const Docker = {
    Config: {
        _networkName: 'cubelogix-internal',
        _restarting: false,
        _restartingLimit: 10,
        _logPath: undefined,
        _envVariables: [],

        Environment: (name, value, cb) => {
            Security.String(name)
            Security.String(value)
            Security.Callback(cb)

            const prevEnvVariables = Docker.Config._envVariables;
            try {
                Docker.Config._envVariables = [...prevEnvVariables, {name, value}];

                cb();
            }
            finally {
                Docker.Config._envVariables = prevEnvVariables;
            }
        },

        Network: (networkName, cb) => {
            Security.String(networkName)
            Security.Callback(cb)

            const prevNetworkName = Docker.Config._networkName;
            try {
                Docker.Config._networkName = networkName;

                Docker.Network.Create(networkName);
                cb();
            }
            finally {
                Docker.Config._networkName = prevNetworkName;
            }
        },

        Restarting: (limit, cb) => {
            Security.Integer(limit, 0)
            Security.Callback(cb)

            const prevRestartingLimit = Docker.Config._restartingLimit;
            const prevRestarting = Docker.Config._restarting;

            try {
                Docker.Config._restartingLimit = limit;
                Docker.Config._restarting = true;
                cb();
            }
            finally {
                Docker.Config._restartingLimit = prevRestartingLimit;
                Docker.Config._restarting = prevRestarting;
            }
        },

        LogPath: (logPath, cb) => {
            Security.String(logPath)
            Security.Callback(cb)

            const prevLogPath = Docker.Config._logPath;
            try {
                Docker.Config._logPath = logPath;

                cb();
            }
            finally {
                Docker.Config._logPath = prevLogPath;
            }
        },
    }
}

module.exports = Docker.Config