{existsSync:exists} = path
{exec, spawn} = require 'child_process'
{mkdirp, mkdirpAsync} = require './mkdirp'
-{readFilesAsync} = require './files'
++{ readFilesAsync, readJSONFilesAsync,
++} = require './files'
-_ = require 'underscore'
-_.str = require 'underscore.string'
-_.mixin _.str.exports()
Seq = require 'seq'
yaml = require 'js-yaml'
YAML_EXT_PAT = /\.ya?ml$/i
app.get '/datasources/all', (req, res, next) ->
data = {}
- files = []
- Seq(findit.sync 'data/datasources')
- # .seq fs.readdir, 'data/datasources', Seq
- # .flatten()
- .filter -> /\.(json|ya?ml)$/.test it
- .seq ->
- files := @stack.slice()
- # console.log 'files:', files
- @ok files
- .flatten()
- .parMap (f) ->
- # console.log "fs.readFile '#CWD/data/#f'"
- fs.readFile f, 'utf8', this
- .parMap (text, i) ->
- f = files[i]
+ Seq
+ .seq glob, 'data/datasources/**/*.@(yaml|json)', {+nocase, +nosort}, Seq
- .seq (paths) -> files.readFilesAsync paths, this
++ .seq (paths) -> readFilesAsync paths, this
+ .seq (txts) -> @ok _.items txts
+ .flatten false
+ .parMap ([f, text]) ->
# console.log "parsing file[#i]: '#f' -> text[#{text.length}]..."
k = f.replace YAML_EXT_PAT, '.json'
v = data[k] = {}