import * as plugins from './npmci.plugins' import {prepare} from './npmci.prepare' import {bash} from './npmci.bash' import * as NpmciEnv from './npmci.env' import * as NpmciBuildDocker from './npmci.build.docker' /** * type of supported services */ export type TPubService = 'npm' | 'docker'; /** * the main exported publish function. * @param pubServiceArg references targeted service to publish to */ export let publish = (pubServiceArg: TPubService = 'npm') => { switch (pubServiceArg) { case 'npm': return publishNpm() case 'docker': return publishDocker() } } /** * tries to publish current cwd to NPM registry */ let publishNpm = function(){ let done = plugins.q.defer() prepare('npm') .then(function(){ bash('npm publish') plugins.beautylog.ok('Done!') done.resolve() }) return done.promise } /** * tries to pubish current cwd to Docker registry */ let publishDocker = function(){ let done = plugins.q.defer() NpmciBuildDocker.readDockerfiles() .then(NpmciBuildDocker.pullDockerfileImages) .then(NpmciBuildDocker.pushDockerfiles) .then(done.resolve) return done.promise }