summaryrefslogtreecommitdiff
path: root/support/generate-index.js
diff options
context:
space:
mode:
authorAlexander Early <alexander.early@gmail.com>2018-04-14 20:10:29 -0700
committerAlexander Early <alexander.early@gmail.com>2018-04-14 20:10:29 -0700
commit45e2938cfa536fe27898c60a4e0fe37080c880bb (patch)
treec0cb0776b596908d1a79f77c1a30a138dcba6a00 /support/generate-index.js
parent2030f5f1bd01a141ac4c85d3deab927f49e255fc (diff)
parent3235c8f5f67ff38b85ce6f9664053d0b1897ff3b (diff)
downloadasync-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.js66
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'))
+}