
import fs from 'fs'
import path from 'path'

const config = {
   pages:'./src/pages',
   pagesInclude:['ycnc']
}
const { pages, pagesInclude } = config

const getPages = () => {
  const srcPath = path.resolve(__dirname, pages)
  //所有的模块
  const allModule = fs.readdirSync(srcPath);
  //指定的完整模块
  const completeModule = pagesInclude.filter(item => item.indexOf('.vue') === -1)
  //需要排除的整个模块
  const excludeModule = allModule.filter(item => !completeModule.includes(item))
  //指定特定页面的模块
  const targetpageModule = pagesInclude.filter(item => item.indexOf('.vue') >= 0)
  const targetModule = targetpageModule.reduce((acc,cur) => {
    const [dir,file] = cur.split('/');
    if(Array.isArray(acc[dir])){
      acc[dir].push(file)
    }else{
      acc[dir] = [file]
    }
    return acc
  },{})
  //需要排除的特定的页面
  const excludePages = [];
  Object.keys(targetModule).forEach((ele,index) => {
    if(excludeModule.includes(ele)){
      excludeModule.splice(excludeModule.indexOf(ele),1)
    }
    const targetPages = fs.readdirSync(path.resolve(__dirname,pages,ele)).filter(element => element.indexOf('.vue') >= 0)
    const targetExclude = targetPages.filter(elem => !targetModule[ele].includes(elem)).map(current => `${ele}/${current}`)
    excludePages.push(...targetExclude)
  })
  console.log('打包的模块以及页面',[...config.pagesInclude]);
  console.error('排除的模块以及页面',[...excludeModule,...excludePages]);
  return {
    exclude:[...excludeModule,...excludePages],
  }
}

export default getPages
