diff options
author | Alexander Early <alexander.early@gmail.com> | 2018-04-14 20:10:29 -0700 |
---|---|---|
committer | Alexander Early <alexander.early@gmail.com> | 2018-04-14 20:10:29 -0700 |
commit | 45e2938cfa536fe27898c60a4e0fe37080c880bb (patch) | |
tree | c0cb0776b596908d1a79f77c1a30a138dcba6a00 /support/generate-index.js | |
parent | 2030f5f1bd01a141ac4c85d3deab927f49e255fc (diff) | |
parent | 3235c8f5f67ff38b85ce6f9664053d0b1897ff3b (diff) | |
download | async-45e2938cfa536fe27898c60a4e0fe37080c880bb.tar.gz |
Merge branch 'master' into DELETE_THIS_BRANCHDELETE_THIS_BRANCH
Diffstat (limited to 'support/generate-index.js')
-rw-r--r-- | support/generate-index.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/support/generate-index.js b/support/generate-index.js new file mode 100644 index 0000000..4154d03 --- /dev/null +++ b/support/generate-index.js @@ -0,0 +1,66 @@ +#!/usr/bin/env node +'use strict' + +const fs = require('fs') +const path = require('path') +require('babel-core/register') +const autoInject = require('../lib/autoInject').default + +generateIndex(err => { + if (err) throw err +}) + +function generateIndex(cb) { + autoInject({ + entries: cb => readEntries(cb), + aliases: cb => cb(null, require('./aliases')), + template: cb => fs.readFile(path.join(__dirname, './index-template.js'), 'utf8', cb), + generated: (entries, aliases, template, cb) => { + cb(null, renderTemplate(entries, aliases, template)) + } + }, (err, results) => { + if (err) return cb(err) + console.log(results.generated) + }) +} + +function readEntries (cb) { + const libDir = path.join(__dirname, '../lib') + fs.readdir(libDir, (err, files) => { + if (err) return cb(err) + cb(null, files + .map(file => path.basename(file, '.js')) + .filter(file => !file.match(/(^(index|internal)$)/))) + }) +} + +function renderTemplate(entries, aliases, template) { + return template + .replace( + `/*__imports__*/`, + entries + .map(entry => `import ${entry} from './${entry}'`) + .join('\n')) + .replace( + `/*__default_object__*/`, + entries + .map(entry => ` ${entry}: ${entry}`) + .join(',\n') + ',') + + .replace( + `/*__default_aliases__*/`, + Object.keys(aliases) + .map(alias => ` ${alias}: ${aliases[alias]}`) + .join(',\n')) + .replace( + `/*__exports__*/`, + entries + .map(entry => ` ${entry} as ${entry}`) + .join(',\n') + ',') + + .replace( + `/*__alias_exports__*/`, + Object.keys(aliases) + .map(alias => ` ${aliases[alias]} as ${alias}`) + .join(',\n')) +} |