qwqdanchun.github.io/node_modules/hexo/lib/plugins/console/deploy.js

62 lines
1.5 KiB
JavaScript

'use strict';
const { exists } = require('hexo-fs');
const { underline, magenta } = require('chalk');
function deployConsole(args) {
let config = this.config.deploy;
const deployers = this.extend.deployer.list();
if (!config) {
let help = '';
help += 'You should configure deployment settings in _config.yml first!\n\n';
help += 'Available deployer plugins:\n';
help += ` ${Object.keys(deployers).join(', ')}\n\n`;
help += `For more help, you can check the online docs: ${underline('https://hexo.io/')}`;
console.log(help);
return;
}
const generateArgs = {...args};
generateArgs.d = false;
generateArgs.deploy = false;
let promise;
if (args.g || args.generate) {
promise = this.call('generate', args);
} else {
promise = exists(this.public_dir).then(exist => {
if (!exist) return this.call('generate', args);
});
}
return promise.then(() => {
this.emit('deployBefore');
if (!Array.isArray(config)) config = [config];
return config;
}).each(item => {
if (!item.type) return;
const { type } = item;
if (!deployers[type]) {
this.log.error('Deployer not found: %s', magenta(type));
return;
}
this.log.info('Deploying: %s', magenta(type));
return Reflect.apply(deployers[type], this, [{ ...item, ...args }]).then(() => {
this.log.info('Deploy done: %s', magenta(type));
});
}).then(() => {
this.emit('deployAfter');
});
}
module.exports = deployConsole;