neft
Version:
Universal Platform
54 lines (41 loc) • 1.28 kB
text/coffeescript
'use strict'
fs = require 'fs'
pathUtils = require 'path'
cliUtils = require 'cli/utils'
utils = require 'src/utils'
log = require 'src/log'
FOLDERS = [
{name: 'routes', dir: 'routes'},
{name: 'models', dir: 'models'},
{name: 'scripts', dir: 'build/scripts'}
]
getFolderLinks = (dir, callback) ->
links = []
fs.exists dir, (exists) ->
# break if not dir found
unless exists
return callback null, links
cliUtils.forEachFileDeep dir, (path, stat) ->
# get file name
if name = /(.+)\.[a-z]+(\.md)?$/i.exec(path)
[_, name] = name
else
name = path
name = name.slice dir.length + 1
links.push
name: name
path: path
, (err) ->
callback err, links
saveFolderLinks = (opts, target, callback) ->
getFolderLinks opts.dir, (err, links) ->
target[opts.name] = links
callback err
module.exports = (platform, app, callback) ->
logtime = log.time 'Link files'
stack = new utils.async.Stack
for folder in FOLDERS
stack.add saveFolderLinks, null, [folder, app]
stack.runAllSimultaneously (err) ->
log.end logtime
callback err