62 lines
1.5 KiB
JavaScript
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;
|