'use strict'

const coffeelint = require('coffeelint')
const expandGlobPaths = require('./expand-glob-paths')
const path = require('path')
const readFiles = require('./read-files')

const CONFIG = require('../config')

module.exports = function () {
  const globPathsToLint = [
    path.join(CONFIG.repositoryRootPath, 'dot-atom/**/*.coffee'),
    path.join(CONFIG.repositoryRootPath, 'src/**/*.coffee'),
    path.join(CONFIG.repositoryRootPath, 'spec/*.coffee')
  ]
  return expandGlobPaths(globPathsToLint).then(readFiles).then((files) => {
    const errors = []
    const lintConfiguration = require(path.join(CONFIG.repositoryRootPath, 'coffeelint.json'))
    for (let file of files) {
      const lintErrors = coffeelint.lint(file.content, lintConfiguration, false)
      for (let error of lintErrors) {
        errors.push({path: file.path, lineNumber: error.lineNumber, message: error.message, rule: error.rule})
      }
    }
    return errors
  })
}
