Skip to content

Commit

Permalink
ABE-168
Browse files Browse the repository at this point in the history
  • Loading branch information
gregorybesson committed Aug 28, 2016
1 parent ab88b46 commit a054b65
Show file tree
Hide file tree
Showing 4 changed files with 101 additions and 301 deletions.
20 changes: 13 additions & 7 deletions src/cli/helpers/abe-sql.js
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,8 @@ export default class Sql {
static getDataRequest(tplPath, match, jsonPage) {
var request = Sql.handleSqlRequest(getAttr(match, 'source'), jsonPage),
limit = 0,
res = []
res = [],
recursive = 99

let data = config.data.url
var files = []
Expand All @@ -290,6 +291,10 @@ export default class Sql {
from = from.replace(/___abe___/g, '/')
from = from.replace(/___abe_dash___/g, '-')
var fromPath = ''
if(from.slice(-1) === '.'){
recursive = 0
from = from.slice(0, -1);
}
if(from === '*' || from === '/') {
fromPath = fileUtils.concatPath(config.root, data)
}else if(from === './') {
Expand All @@ -301,11 +306,12 @@ export default class Sql {
}

if(folderUtils.isFolder(fromPath)) {
files = files.concat(FileParser.getFiles(fromPath, true, 99, /\.json/))
// we'll get only published files which don't contain "-abe-"
files = files.concat(FileParser.getFiles(fromPath, true, recursive, /(.*(-abe-).*Z\.json)/, true))
}
})
}else {
files = FileParser.getFiles(fileUtils.concatPath(config.root, data), true, 99, /\.json/)
files = FileParser.getFiles(fileUtils.concatPath(config.root, data), true, recursive, /(.*(-abe-).*Z\.json)/, true)
}

if(typeof request.orderby !== 'undefined' && request.orderby !== null) {
Expand All @@ -326,10 +332,10 @@ export default class Sql {
var json

// remove not published file
var attr = fileAttr.get(file.path)
if(typeof attr.d !== 'undefined' && attr.d !== null) {
return;
}
//var attr = fileAttr.get(file.path)
// if(typeof attr.d !== 'undefined' && attr.d !== null) {
// return;
// }

// check where
if(typeof request.where !== 'undefined' && request.where !== null) {
Expand Down
3 changes: 2 additions & 1 deletion src/cli/helpers/abe-utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -310,8 +310,9 @@ export default class Utils {
var type = Sql.getSourceType(obj.sourceString)
switch (type) {
case 'request':

//console.log(obj.sourceString)
var data = Sql.getDataRequest(tplPath, match[0], jsonPage)
//console.log('FIN : ' + type + "(" + data.length +") > " + ((new Date().getTime() - dateStart.getTime()) / 1000))
jsonPage[sourceAttr][obj.key] = data
if (!obj.editable) {
if (obj.maxLength) {
Expand Down
176 changes: 86 additions & 90 deletions src/cli/helpers/file-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,94 +40,89 @@ export default class FileParser {
return folders.split('/')[0]
}

static read(base, dirName, type, flatten, extensions = /(.*?)/, max = 99, current = 0) {
var website = config.root.split('/')
website = website[website.length - 1]
var arr = []
var level = fse.readdirSync(dirName)
var fileCurrentLevel = []
let assets = config.files.templates.assets
// read file first
for (var i = 0; i < level.length; i++) {
var path = dirName + '/' + level[i]
var match = (isFolder) ? true : extensions.test(level[i])
if((type === 'files' || type === null) && match) {
if(fileUtils.isValidFile(level[i])) {
var extension = /(\.[\s\S]*)/.exec(level[i])[0]
var cleanName = fileAttr.delete(level[i])
var cleanNameNoExt = fileUtils.removeExtension(cleanName)
var fileData = fileAttr.get(level[i])

var date
if (fileData.d) {
date = fileData.d
}else {
var stat = fse.statSync(path)
date = stat.mtime
}
var status = fileData.s ? dirName.replace(config.root, '').replace(/^\//, '').split('/')[0] : 'published'
var cleanFilePath = fileUtils.cleanFilePath(path)

var fileDate = fileDate = moment(date)
var duration = moment.duration(moment(fileDate).diff(new Date())).humanize(true)

var filePath = path.replace(config.root, '')
filePath = filePath.split('/')
filePath.shift()
filePath = filePath.join('/')
var item = {
'name': level[i],
'path': path,
'website': website,
'cleanPathName': fileAttr.delete(path),
'cleanPath': path.replace(base + '/', ''),
date: date,
cleanDate: fileDate.format("YYYY/MM/DD HH:MM:ss"),
duration: duration,
status: status,
cleanName: cleanName,
cleanNameNoExt: cleanNameNoExt,
cleanFilePath: cleanFilePath,
filePath: filePath,
'type': 'file',
'fileType': extension
}

if(!flatten) item['folders'] = [];
arr.push(item)
// push current file name into array to check if siblings folder are assets folder
fileCurrentLevel.push(fileUtils.removeExtension(level[i]) + assets)
}
}
}

// read folder now
for (i = 0; i < level.length; i++) {
var path = dirName + '/' + level[i]
var isFolder = folderUtils.isFolder(path)
var match = (isFolder) ? true : extensions.test(level[i])
if(!fileCurrentLevel.includes(level[i]) && match) {
if(isFolder) {
if(!flatten) {
var index = arr.push({'name': level[i], 'path': path, 'website': website, 'cleanPath': path.replace(base + '/', ''), 'folders': [], 'type': 'folder'}) - 1
if(current < max){
arr[index].folders = FileParser.read(base, path, type, flatten, extensions, max, current + 1)
}
}else {
if(type === 'folders' || type === null) {
arr.push({'name': level[i], 'path': path, 'website': website, 'cleanPath': path.replace(base + '/', ''), 'type': 'folder'})
}
if(current < max){
Array.prototype.forEach.call(FileParser.read(base, path, type, flatten, extensions, max, current + 1), (files) => {
arr.push(files)
})
}
}
}
}
}
static read(base, dirName, type, flatten, extensions = /(.*?)/, max = 99, current = 0, inversePattern = false) {
var website = config.root.split('/')
website = website[website.length - 1]
var arr = []
var level = fse.readdirSync(dirName)
var fileCurrentLevel = []
let assets = config.files.templates.assets

for (var i = 0; i < level.length; i++) {
var path = dirName + '/' + level[i]
var isFolder = folderUtils.isFolder(path)
var match = (isFolder) ? true : (inversePattern) ? !extensions.test(level[i]) : extensions.test(level[i])
if((type === 'files' || type === null) && match) {

if(fileUtils.isValidFile(level[i])) {
var extension = /(\.[\s\S]*)/.exec(level[i])[0]
var cleanName = fileAttr.delete(level[i])
var cleanNameNoExt = fileUtils.removeExtension(cleanName)
var fileData = fileAttr.get(level[i])

var date
if (fileData.d) {
date = fileData.d
}else {
var stat = fse.statSync(path)
date = stat.mtime
}
var status = fileData.s ? dirName.replace(config.root, '').replace(/^\//, '').split('/')[0] : 'published'
var cleanFilePath = fileUtils.cleanFilePath(path)

var fileDate = moment(date)
var duration = moment.duration(moment(fileDate).diff(new Date())).humanize(true)

var filePath = path.replace(config.root, '')
filePath = filePath.split('/')
filePath.shift()
filePath = filePath.join('/')
var item = {
'name': level[i],
'path': path,
'website': website,
'cleanPathName': fileAttr.delete(path),
'cleanPath': path.replace(base + '/', ''),
date: date,
cleanDate: fileDate.format("YYYY/MM/DD HH:MM:ss"),
duration: duration,
status: status,
cleanName: cleanName,
cleanNameNoExt: cleanNameNoExt,
cleanFilePath: cleanFilePath,
filePath: filePath,
'type': 'file',
'fileType': extension
}

if(!flatten) item['folders'] = [];
arr.push(item)
// push current file name into array to check if siblings folder are assets folder
fileCurrentLevel.push(fileUtils.removeExtension(level[i]) + assets)
}
}
if(!fileCurrentLevel.includes(level[i]) && match) {
if(isFolder) {
if(!flatten) {
var index = arr.push({'name': level[i], 'path': path, 'website': website, 'cleanPath': path.replace(base + '/', ''), 'folders': [], 'type': 'folder'}) - 1
if(current < max){
arr[index].folders = FileParser.read(base, path, type, flatten, extensions, max, current + 1, inversePattern)
}
}else {
if(type === 'folders' || type === null) {
arr.push({'name': level[i], 'path': path, 'website': website, 'cleanPath': path.replace(base + '/', ''), 'type': 'folder'})
}
if(current < max){
Array.prototype.forEach.call(FileParser.read(base, path, type, flatten, extensions, max, current + 1, inversePattern), (files) => {
arr.push(files)
})
}
}
}
}
}

return arr
return arr
}

static getFolders(folder, flatten, level) {
Expand All @@ -137,11 +132,12 @@ export default class FileParser {
return arr
}

static getFiles(folder, flatten, level, extensions = /(.*?)/) {
static getFiles(folder, flatten, level, extensions = /(.*?)/, inversePattern = false) {
var arr = []
flatten = flatten || false
arr = FileParser.read(fileUtils.cleanPath(folder), fileUtils.cleanPath(folder), 'files', flatten, extensions, level)
return arr
arr = FileParser.read(fileUtils.cleanPath(folder), fileUtils.cleanPath(folder), 'files', flatten, extensions, level, 0, inversePattern)

return arr
}

static getFilesByType(path, type = null) {
Expand Down
Loading

0 comments on commit a054b65

Please sign in to comment.