Skip to content

Commit

Permalink
feature: add new process to abe-cli
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaslabbe committed Oct 11, 2016
1 parent 345f91d commit ea705bb
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 118 deletions.
158 changes: 58 additions & 100 deletions src/cli/process/generate-posts.js
Original file line number Diff line number Diff line change
@@ -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 = {}

Expand All @@ -33,105 +20,76 @@ 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)
}
}

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)
}
init('generate-posts',
{
ABE_PATH: '',
ABE_DESTINATION: 'site'
})
.then(startProcess,
(msg) => {
error(msg)
process.exit(0)
})
55 changes: 50 additions & 5 deletions src/cli/process/initAbeForProcesses.js
Original file line number Diff line number Diff line change
@@ -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
Expand Down
31 changes: 18 additions & 13 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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)
})
Expand Down

0 comments on commit ea705bb

Please sign in to comment.