Mike Gerwitz

Activist for User Freedom

aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Gerwitz <mike.gerwitz@rtspecialty.com>2018-02-16 12:39:51 -0500
committerMike Gerwitz <mike.gerwitz@rtspecialty.com>2018-02-19 15:21:14 -0500
commit253f8458039f1331a6b62f3a8a6d3510ae49868b (patch)
treeaec69a5b7dc91f85e7cfd13d3f28f41fce633fca /progtest/build-aux/gen-index
parent47f0f4039b9c6d4a9898714dcca4692fd8af154a (diff)
downloadtame-253f8458039f1331a6b62f3a8a6d3510ae49868b.tar.gz
tame-253f8458039f1331a6b62f3a8a6d3510ae49868b.tar.bz2
tame-253f8458039f1331a6b62f3a8a6d3510ae49868b.zip
progtest: Generate index.js files
Diffstat (limited to 'progtest/build-aux/gen-index')
-rwxr-xr-xprogtest/build-aux/gen-index58
1 files changed, 58 insertions, 0 deletions
diff --git a/progtest/build-aux/gen-index b/progtest/build-aux/gen-index
new file mode 100755
index 0000000..5cdb350
--- /dev/null
+++ b/progtest/build-aux/gen-index
@@ -0,0 +1,58 @@
+#!/bin/bash
+# Generates index.js from sources in destination directory
+#
+# Copyright (C) 2014 R-T Specialty, LLC.
+#
+# This file is part of liza.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+##
+
+shopt -s extglob nullglob
+
+destpath="${1?Destination path required}"
+
+cat <<EOH
+/*** GENERATED BY gen-index; DO NOT MODIFY ***/
+
+module.exports = {
+EOH
+
+declare -i i
+
+# generate require for each module
+for module in "$destpath"/!(index).js; do
+ modname="$( basename "$module" .js )"
+
+ # humor ECMAScript 3 for now
+ if ((i++)); then
+ echo ,
+ fi
+
+ echo -n " get '$modname'() { return require( './$modname' ); }"
+done
+
+# include index.js for any sub-directories (namespace)
+for dir in $( find "$destpath" -maxdepth 1 -mindepth 1 -type d ); do
+ ns=$( basename "$dir" )
+
+ # humor ECMAScript 3 for now
+ if ((i++)); then
+ echo ,
+ fi
+
+ echo -n " get '$ns'() { return require('./$ns'); }"
+done
+
+echo -e "\n};"