diff --git a/src/cli/process/generate-posts.js b/src/cli/process/generate-posts.js index dc6990d..dbe30d0 100644 --- a/src/cli/process/generate-posts.js +++ b/src/cli/process/generate-posts.js @@ -1,30 +1,17 @@ import path from 'path' -import moment from 'moment' import fse from 'fs-extra' -import debug from 'debug' -var log = debug('generate-posts:log') -log.color = 2 -var traceLog = debug('generate-posts:trace') -var errorLog = debug('generate-posts:error') -errorLog.color = 1 +import {init, log, trace, error, processConfig, getTime} from './initAbeForProcesses' -var pConfig = {} -Array.prototype.forEach.call(process.argv, (item) => { - if (item.indexOf('=') > -1) { - var ar = item.split('=') - pConfig[ar[0]] = ar[1] - } -}) - -if(typeof pConfig.ABE_PATH === 'undefined' || pConfig.ABE_PATH === null) { - pConfig.ABE_PATH = '' -} +// IMPORT LIB +var Page = require('../../cli').Page +var cmsOperations = require('../../cli').cmsOperations +var abeExtend = require('../../cli').abeExtend +var Manager = require('../../cli').Manager +var cmsData = require('../../cli').cmsData +var cmsTemplates = require('../../cli').cmsTemplates -if(typeof pConfig.ABE_DESTINATION === 'undefined' || pConfig.ABE_DESTINATION === null) { - pConfig.ABE_DESTINATION = 'site' -} +var config = require('../../cli').config -log('loading dependencies...'); var dateStart var templatesTexts = {} @@ -33,50 +20,49 @@ function publishNext(published, tt, cb, i = 0) { if(typeof pub !== 'undefined' && pub !== null) { var jsonObject = fse.readJsonSync(pub.path) - if(typeof jsonObject.abe_meta !== 'undefined' && jsonObject.abe_meta !== null) { - i++ - var p = new Promise((resolve) => { - if(typeof templatesTexts[jsonObject.abe_meta.template] === 'undefined' || templatesTexts[jsonObject.abe_meta.template] === null) { - templatesTexts[jsonObject.abe_meta.template] = cmsTemplates.template.getTemplate(jsonObject.abe_meta.template) - } - - cmsData.source.getDataList(path.dirname(jsonObject.abe_meta.link), templatesTexts[jsonObject.abe_meta.template], jsonObject, true) - .then(() => { - jsonObject = abeExtend.hooks.instance.trigger('afterGetDataListOnSave', jsonObject) - - var obj = { - publishAll:true, - type: jsonObject.abe_meta.status, - json: { - content: jsonObject - } + i++ + var p = new Promise((resolve) => { + if(typeof templatesTexts[jsonObject.abe_meta.template] === 'undefined' || templatesTexts[jsonObject.abe_meta.template] === null) { + templatesTexts[jsonObject.abe_meta.template] = cmsTemplates.template.getTemplate(jsonObject.abe_meta.template) + } + + cmsData.source.getDataList(path.dirname(jsonObject.abe_meta.link), templatesTexts[jsonObject.abe_meta.template], jsonObject, true) + .then(() => { + jsonObject = abeExtend.hooks.instance.trigger('afterGetDataListOnSave', jsonObject) + + var obj = { + publishAll:true, + type: jsonObject.abe_meta.status, + json: { + content: jsonObject } - obj = abeExtend.hooks.instance.trigger('beforeSave', obj) - - var page = new Page(obj.json.content.abe_meta.template, templatesTexts[jsonObject.abe_meta.template], obj.json.content, true) - cmsOperations.save.saveHtml( - path.join(config.root, pConfig.ABE_DESTINATION, jsonObject.abe_meta.link), - page.html - ) - - obj = abeExtend.hooks.instance.trigger('afterSave', obj) - - traceLog('('+(moment(moment() - dateStart).format('mm:ss')) + 'sec) ' + i + ' - ' + pub.path.replace(config.root, '').replace(config.data.url, '') + ' (tpl: ' + jsonObject.abe_meta.template + ')') - resolve() - }, - () => { - errorLog('publish-all ERROR on ' + pub.path.replace(config.root, '').replace(config.data.url, '')) - resolve() - }) - }) - } + } + obj = abeExtend.hooks.instance.trigger('beforeSave', obj) + + var page = new Page(obj.json.content.abe_meta.template, templatesTexts[jsonObject.abe_meta.template], obj.json.content, true) + + cmsOperations.save.saveHtml( + path.join(config.root, processConfig.ABE_DESTINATION, jsonObject.abe_meta.link), + page.html + ) + + obj = abeExtend.hooks.instance.trigger('afterSave', obj) + + trace('('+ getTime() + ') ' + i + ' - ' + pub.path.replace(config.root, '').replace(config.data.url, '') + ' (tpl: ' + jsonObject.abe_meta.template + ')') + resolve() + }, + () => { + error('publish-all ERROR on ' + pub.path.replace(config.root, '').replace(config.data.url, '')) + resolve() + }) + }) p.then(function () { publishNext(published, tt, cb, i++) }) .catch(function (e) { publishNext(published, tt, cb, i++) - errorLog('error', e) + error('error', e) }) }else { cb(i) @@ -84,54 +70,26 @@ function publishNext(published, tt, cb, i = 0) { } function startProcess() { - dateStart = moment() - log('start publish all at path ' + pConfig.ABE_PATH); + log('start publish all at path ' + processConfig.ABE_PATH); log('searching for file at ' + config.root); - var files = Manager.instance.getListWithStatusOnFolder('publish', pConfig.ABE_PATH) + var files = Manager.instance.getListWithStatusOnFolder('publish', processConfig.ABE_PATH) log('Found ' + files.length + ' to republish') publishNext(files, files.length, function (i) { log('total ' + i + ' files') - if (publishErrors.length > 0) { - errorLog('Errors ' + publishErrors.length + ' see ' + errorPath + ' for more info') - fse.writeJsonSync(errorPath, publishErrors, { - space: 2, - encoding: 'utf-8' - }) - } - log('publish process finished ' + (moment(moment() - dateStart).format('mm:ss')) + 'sec') + log('publish process finished ' + getTime()) process.exit(0) }) } -var publishErrors = [] -// var logsPub = "" -if(typeof pConfig.ABE_WEBSITE !== 'undefined' && pConfig.ABE_WEBSITE !== null) { - var config = require('../../cli').config - if(pConfig.ABE_WEBSITE) config.set({root: pConfig.ABE_WEBSITE.replace(/\/$/, '') + '/'}) - try { - // IMPORT LIB - var Page = require('../../cli').Page - var cmsOperations = require('../../cli').cmsOperations - var abeExtend = require('../../cli').abeExtend - var Manager = require('../../cli').Manager - var cmsData = require('../../cli').cmsData - var cmsTemplates = require('../../cli').cmsTemplates - var Handlebars = require('../../cli').Handlebars - - abeExtend.hooks.instance.trigger('afterHandlebarsHelpers', Handlebars) - Manager.instance.init() - .then(startProcess) - .catch((e) => { - errorLog('publish-all' + e) - }) - - } catch(e) { - errorLog('publish-all' + e) - } - -}else { - errorLog('ABE_WEBSITE is not defined use node process.js ABE_WEBSITE=/pat/to/website') - process.exit(0) -} \ No newline at end of file +init('generate-posts', + { + ABE_PATH: '', + ABE_DESTINATION: 'site' + }) + .then(startProcess, + (msg) => { + error(msg) + process.exit(0) + }) \ No newline at end of file diff --git a/src/cli/process/initAbeForProcesses.js b/src/cli/process/initAbeForProcesses.js index e4defe2..0ce62d3 100644 --- a/src/cli/process/initAbeForProcesses.js +++ b/src/cli/process/initAbeForProcesses.js @@ -1,14 +1,59 @@ -export function initAbeForProcess() { - var p = new Promise((resolve) => { - - var pConfig = {} +import debug from 'debug' +import extend from 'extend' +import moment from 'moment' + +var Manager = require('../../cli').Manager +var Handlebars = require('../../cli').Handlebars +var config = require('../../cli').config +var abeExtend = require('../../cli').abeExtend + +export var log +export var trace +export var error +export var processConfig +export var dateStart + +export function getTime() { + return (moment(moment() - dateStart).format('mm:ss')) + 'sec' +} + +export function init(processName, conf) { + var p = new Promise((resolve, reject) => { + + log = debug(processName + ':log') + log.color = 2 + trace = debug(processName + ':trace') + error = debug(processName + ':error') + error.color = 1 + + processConfig = {} Array.prototype.forEach.call(process.argv, (item) => { if (item.indexOf('=') > -1) { var ar = item.split('=') - pConfig[ar[0]] = ar[1] + processConfig[ar[0]] = ar[1] } }) + if(processConfig.ABE_WEBSITE) { + config.set({root: processConfig.ABE_WEBSITE.replace(/\/$/, '') + '/'}) + } + + processConfig = extend(true, conf, processConfig) + + if(typeof processConfig.ABE_WEBSITE !== 'undefined' && processConfig.ABE_WEBSITE !== null) { + abeExtend.hooks.instance.trigger('afterHandlebarsHelpers', Handlebars) + Manager.instance.init() + .then(()=> { + dateStart = moment() + resolve() + }) + .catch((e) => { + error('publish-all' + e) + }) + }else { + error('ABE_WEBSITE is not defined use node process.js ABE_WEBSITE=/pat/to/website') + process.exit(0) + } }) return p diff --git a/src/index.js b/src/index.js index 15007e2..9a07d0c 100755 --- a/src/index.js +++ b/src/index.js @@ -219,27 +219,32 @@ if(typeof userArgs[0] !== 'undefined' && userArgs[0] !== null){ cp.stderr.pipe(process.stderr) cp.stdout.pipe(process.stdout) break - case 'publish-all': + case 'generate-posts': dir = process.cwd() - var customPath = '' - if(typeof userArgs[1] !== 'undefined' && userArgs[1] !== null){ - customPath = 'ABE_PATH=' + userArgs[1] - } if(process.env.ROOT) { dir = process.env.ROOT.replace(/\/$/, '') } + process.env.DEBUG = 'generate-posts:*' + var generateArgs = ['--harmony', __dirname + '/cli/process/generate-posts.js', 'ABE_WEBSITE=' + dir] + Array.prototype.forEach.call(userArgs, (arg) => { + if (arg.indexOf('--path=') > -1) { + generateArgs.push('ABE_PATH=' + arg.split('=')[1]) + }else if (arg.indexOf('--destination=') > -1) { + generateArgs.push('ABE_DESTINATION=' + arg.split('=')[1]) + } + }) - const publishAll = spawn('node', ['--harmony', __dirname + '/cli/process/publish-all.js', 'ABE_WEBSITE=' + dir, customPath]) + const generate = spawn('node', generateArgs, { shell: true, stdio: 'inherit' }) - publishAll.stdout.on('data', (data) => { - console.log(data.toString().replace(/\n/, '')) - }) + // generate.stdout.on('data', (data) => { + // console.log(data.toString().replace(/\n/, '')) + // }) - publishAll.stderr.on('data', (data) => { - console.log(data.toString().replace(/\n/, '')) - }) + // generate.stderr.on('data', (data) => { + // console.log(data.toString().replace(/\n/, '')) + // }) - publishAll.on('close', (code) => { + generate.on('close', (code) => { console.log(clc.cyan('child process exited with code') + ' ' + code) process.exit(0) })