Updates datasource controller to search recursively.
authordsc <dsc@wikimedia.org>
Wed, 4 Apr 2012 21:01:57 +0000 (14:01 -0700)
committerdsc <dsc@wikimedia.org>
Wed, 4 Apr 2012 21:01:57 +0000 (14:01 -0700)
lib/server/controllers/datasource.co
lib/server/server.co
package.co
package.json

index b77d4e2..c556f23 100644 (file)
@@ -1,5 +1,6 @@
 fs         = require 'fs'
 Seq        = require 'seq'
+findit     = require 'findit'
 Controller = require '../controller'
 
 YAML_EXT_PAT = /\.ya?ml$/i
@@ -11,7 +12,7 @@ YAML_EXT_PAT = /\.ya?ml$/i
  */
 class DataSourceController extends Controller
     name    : 'datasources'
-    dataDir : 'data/graphs'
+    dataDir : 'data/datasources'
     
     mapping :
         all : 'allData'
@@ -22,10 +23,11 @@ class DataSourceController extends Controller
      * Returns a JSON listing of the datasource metadata files.
      */
     index : (req, res, next) ->
-        fs.readdir @dataDir, (err, files) ->
-            res.send do
-                files.filter -> /\.(json|ya?ml)$/i.test it
-                     .map    -> "/#{@dataDir}#it".replace YAML_EXT_PAT, '.json'
+        files = findit.sync @dataDir
+        # fs.readdir @dataDir, (err, files) ->
+        res.send do
+            files.filter -> /\.(json|ya?ml)$/i.test it
+                 .map    -> "#it".replace YAML_EXT_PAT, '.json'
     
     /**
      * Returns the aggregated JSON content of the datasource metadata files.
@@ -33,9 +35,9 @@ class DataSourceController extends Controller
     allData : (req, res, next) ->
         data = {}
         files = []
-        Seq()
-            .seq fs.readdir, @dataDir, Seq
-            .flatten()
+        Seq(findit.sync @dataDir)
+            # .seq ~> @ok findit.sync @dataDir
+            # .flatten()
             .filter -> /\.(json|ya?ml)$/.test it
             .seq ->
                 files := @stack.slice()
@@ -44,7 +46,7 @@ class DataSourceController extends Controller
             .flatten()
             .parMap_ (next, f) ~>
                 # console.log "fs.readFile '#CWD/data/#f'"
-                fs.readFile "#{@dataDir}/#f", 'utf8', next
+                fs.readFile f, 'utf8', next
             .parMap (text, i) ->
                 f = files[i]
                 # console.log "parsing file[#i]: '#f' -> text[#{text.length}]..."
index afd3f66..a8942ac 100755 (executable)
@@ -1,7 +1,8 @@
 #!/usr/bin/env coco
 
-fs       = require 'fs'
-path     = require 'path'
+fs     = require 'fs'
+path   = require 'path'
+findit = require 'findit'
 {existsSync:exists} = path
 {exec, spawn} = require 'child_process'
 {mkdirp, mkdirpAsync} = require './mkdirp'
@@ -146,9 +147,9 @@ YAML_EXT_PAT = /\.ya?ml$/i
 app.get '/datasources/all', (req, res, next) ->
     data = {}
     files = []
-    Seq()
-        .seq fs.readdir, 'data/datasources', Seq
-        .flatten()
+    Seq(findit.sync 'data/datasources')
+        # .seq fs.readdir, 'data/datasources', Seq
+        # .flatten()
         .filter -> /\.(json|ya?ml)$/.test it
         .seq ->
             files := @stack.slice()
@@ -157,7 +158,7 @@ app.get '/datasources/all', (req, res, next) ->
         .flatten()
         .parMap (f) ->
             # console.log "fs.readFile '#CWD/data/#f'"
-            fs.readFile "data/datasources/#f", 'utf8', this
+            fs.readFile f, 'utf8', this
         .parMap (text, i) ->
             f = files[i]
             # console.log "parsing file[#i]: '#f' -> text[#{text.length}]..."
index b7698fb..f98b042 100644 (file)
@@ -25,6 +25,7 @@ dependencies                    :
     'js-yaml'                   : '>= 0.3.5'
     'hashish'                   : '>= 0.0.4'
     'backbone'                  : '>= 0.9.1'
+    'findit'                    : '>= 0.1.2'
 devDependencies                 : 
     'buildtools'                : 'https://github.com/dsc/node-buildtools/tarball/master'
     'expresso'                  : '>= 0.9.2'
index 838f439..35b6ffa 100644 (file)
@@ -28,7 +28,8 @@
     "underscore.string": ">= 2.0.0",
     "js-yaml": ">= 0.3.5",
     "hashish": ">= 0.0.4",
-    "backbone": ">= 0.9.1"
+    "backbone": ">= 0.9.1",
+    "findit": ">= 0.1.2"
   },
   "devDependencies": {
     "buildtools": "https://github.com/dsc/node-buildtools/tarball/master",