From 963cb5c4aaa23faf970bf9e6e96a4a10acc8d63b Mon Sep 17 00:00:00 2001
From: Felipe Duerno <felipeduernoal@gmail.com>
Date: Fri, 23 Mar 2018 12:08:25 -0300
Subject: [PATCH] fix error when trying to put folders inside the training data
 folder

---
 Dockerfile                |  1 +
 docker-compose.yml        |  1 +
 scripts/lib/common.coffee | 18 ++++++++++++------
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index ed7f306..5a33825 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,6 +4,7 @@ LABEL mantainer "Diego Dorgam <diego.dorgam@rocket.chat>"
 
 ENV HUBOT_LANG='en'                                                  \
     HUBOT_CORPUS='training_data/corpus.yml'                          \
+    HUBOT_RECURSIVE_TRAINING=false                                   \
     HUBOT_ADAPTER=rocketchat                                         \
     HUBOT_OWNER=RocketChat                                           \
     HUBOT_NAME=HubotNatural                                          \
diff --git a/docker-compose.yml b/docker-compose.yml
index afaa03e..6989eaf 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -51,6 +51,7 @@ services:
       - HUBOT_DESCRIPTION='Hubot natural language processing'
       - HUBOT_LOG_LEVEL=debug
       - HUBOT_CORPUS=training_data/corpus.yml
+      - HUBOT_RECURSIVE_TRAINING=false
       - HUBOT_LANG=pt
       - RESPOND_TO_DM=true
       - RESPOND_TO_LIVECHAT=true
diff --git a/scripts/lib/common.coffee b/scripts/lib/common.coffee
index 1305123..f2b6ebb 100644
--- a/scripts/lib/common.coffee
+++ b/scripts/lib/common.coffee
@@ -25,13 +25,18 @@ common.stringElseRandomKey = (variable) ->
   if variable instanceof Array
     variable[Math.floor(Math.random() * variable.length)]
 
-getYAMLFiles = (filepath) ->
+getYAMLFiles = (filepath, recursive = false) ->
   listFile = fs.readdirSync filepath
+
   dataFiles = []
-  if listFile.length > 0
-    dataFiles = listFile.map (filename) ->
-      return yaml.safeLoad fs.readFileSync filepath + '/' + filename, 'utf8'
-  else
+  for filename in listFile
+    file = filepath + '/' + filename
+    if fs.lstatSync(file).isFile()
+      dataFiles.push(yaml.safeLoad fs.readFileSync file, 'utf8')
+    else if recursive
+      dataFiles = dataFiles.concat(getYAMLFiles file, recursive)
+
+  if dataFiles.lenght is 0
     console.error('The directory: ' + filepath + ' is empty.')
   return dataFiles
 
@@ -61,7 +66,8 @@ common.loadConfigfile = (filepath) ->
       return yaml.safeLoad fs.readFileSync filepath, 'utf8'
 
     else if fs.lstatSync(filepath).isDirectory()
-      yamlFiles = getYAMLFiles(filepath)
+      recursiveTraining = process.env.HUBOT_RECURSIVE_TRAINING || false
+      yamlFiles = getYAMLFiles(filepath, recursiveTraining)
       return concatYAMLFiles(yamlFiles)
 
   catch err
-- 
GitLab