Skip to content

Commit

Permalink
refactoring: fileparser copyasset -> asset.copy
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaslabbe committed Oct 7, 2016
1 parent 2575abd commit 439767e
Show file tree
Hide file tree
Showing 5 changed files with 69 additions and 52 deletions.
2 changes: 1 addition & 1 deletion src/cli/cms/operations/save.js
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ export function save(url, tplPath, json = null, text = '', type = '', previousSa

Hooks.instance.trigger('afterSave', obj)

FileParser.copySiteAssets()
cmsTemplate.assets.copy()

if(typeof config.publishAll !== 'undefined' && config.publishAll !== null && config.publishAll === true) {
if(!publishAll && type === 'publish') {
Expand Down
62 changes: 62 additions & 0 deletions src/cli/cms/templates/assets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
import fse from 'fs-extra'
import dircompare from 'dir-compare'
import mkdirp from 'mkdirp'
import moment from 'moment'
import path from 'path'

import {
cmsData
,cmsOperations
,coreUtils
,FileParser
,config
,Hooks
,Manager
} from '../../'

export function copy(pathAssets) {
var publicFolders = FileParser.getAssetsFolder(pathAssets)
let publish = config.publish.url
var dest = path.join(config.root, publish)
try {
var directory = fse.lstatSync(dest)
if (!directory.isDirectory()) {
mkdirp.sync(dest)
}
} catch (e) {
mkdirp.sync(dest)
}

Array.prototype.forEach.call(publicFolders, (publicFolder) => {
var res = dircompare.compareSync(publicFolder, dest, {compareSize: true})

res.diffSet.forEach(function (entry) {
var state = {
'equal' : '==',
'left' : '->',
'right' : '<-',
'distinct' : '<>'
}[entry.state]

var name1 = entry.name1 ? entry.name1 : ''
var name2 = entry.name2 ? entry.name2 : ''

let exclude = new RegExp(config.files.exclude)
if(!exclude.test(name1) && !exclude.test(name2) && entry.type1 !== 'directory' && entry.type2 !== 'directory') {

if(typeof entry.path1 !== 'undefined' && entry.path1 !== null) {
var original = entry.path1
var basePath = original.replace(publicFolder, '')
var move = path.join(dest, basePath)

if(entry.type2 === 'missing' || entry.state === 'distinct') {
fse.removeSync(move)
fse.copySync(original, move)
}
}
}
})
})

return publicFolders
}
2 changes: 2 additions & 0 deletions src/cli/cms/templates/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import times from './handlebars/times'
import truncate from './handlebars/truncate'

import * as template from './template'
import * as assets from './assets'
import encodeAbeTagAsComment from './encodeAbeTagAsComment'
import insertDebugtoolUtilities from './insertDebugtoolUtilities'

Expand All @@ -43,6 +44,7 @@ HandlebarsIntl.registerWith(Handlebars)

export {
template,
assets,
encodeAbeTagAsComment,
insertDebugtoolUtilities,
attrAbe,
Expand Down
53 changes: 3 additions & 50 deletions src/cli/core/utils/file-parser.js
Original file line number Diff line number Diff line change
Expand Up @@ -151,15 +151,15 @@ export default class FileParser {

try {
var directory = fse.lstatSync(pathAssets)
if (!directory.isDirectory()) {
if (directory.isDirectory()) {
var arr = FileParser.read(pathAssets, pathAssets, 'files', flatten, /(.*?)/, 99)

// now check if file for folder exist
Array.prototype.forEach.call(arr, (file) => {
var folderName = file.path.replace(/\..+$/, '') + assets
try {
var directory = fse.lstatSync(folderName)
if (!directory.isDirectory()) {
if (directory.isDirectory()) {
assetsFolders.push(folderName)
}
} catch (e) {
Expand Down Expand Up @@ -246,53 +246,6 @@ export default class FileParser {
return res
}

static copySiteAssets(pathAssets) {
var publicFolders = FileParser.getAssetsFolder(pathAssets)
let publish = config.publish.url
var dest = path.join(config.root, publish)
try {
var directory = fse.lstatSync(dest)
if (!directory.isDirectory()) {
mkdirp.sync(dest)
}
} catch (e) {
mkdirp.sync(dest)
}

Array.prototype.forEach.call(publicFolders, (publicFolder) => {
var res = dircompare.compareSync(publicFolder, dest, {compareSize: true})

res.diffSet.forEach(function (entry) {
var state = {
'equal' : '==',
'left' : '->',
'right' : '<-',
'distinct' : '<>'
}[entry.state]

var name1 = entry.name1 ? entry.name1 : ''
var name2 = entry.name2 ? entry.name2 : ''

let exclude = new RegExp(config.files.exclude)
if(!exclude.test(name1) && !exclude.test(name2) && entry.type1 !== 'directory' && entry.type2 !== 'directory') {

if(typeof entry.path1 !== 'undefined' && entry.path1 !== null) {
var original = entry.path1
var basePath = original.replace(publicFolder, '')
var move = path.join(dest, basePath)

if(entry.type2 === 'missing' || entry.state === 'distinct') {
fse.removeSync(move)
fse.copySync(original, move)
}
}
}
})
})

return publicFolders
}

static getMetas(arr) {
var res = []
Array.prototype.forEach.call(arr, (file) => {
Expand Down Expand Up @@ -471,7 +424,7 @@ export default class FileParser {
var refFolder = path.join(config.root, config.reference.url)
try {
var directory = fse.lstatSync(refFolder)
if (!directory.isDirectory()) {
if (directory.isDirectory()) {
var files = FileParser.read(refFolder.replace(/\/$/, ''), refFolder.replace(/\/$/, ''), 'files', true, /.json/)
Array.prototype.forEach.call(files, (file) => {
var name = file.filePath.replace(file.fileType, '')
Expand Down
2 changes: 1 addition & 1 deletion src/server/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ app.locals.layout = false
app.use(middleWebsite)
app.use(express.static(__dirname + '/public'))

FileParser.copySiteAssets()
cmsTemplate.assets.copy()

var sites = FileParser.getFolders(config.root.replace(/\/$/, ''), false, 0)

Expand Down

0 comments on commit 439767e

Please sign in to comment.