From 35a20e256c769f5a6cf39ad593114defe3069a83 Mon Sep 17 00:00:00 2001
From: Matthias Schiffer <mschiffer@universe-factory.net>
Date: Sat, 28 Sep 2013 18:39:32 +0200
Subject: [PATCH] Add config generator scripts

---
 Makefile             |  4 ++++
 scripts/configure.pl | 40 ++++++++++++++++++++++++++++++++++++++++
 scripts/generate.sh  | 28 ++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+)
 create mode 100755 scripts/configure.pl
 create mode 100755 scripts/generate.sh

diff --git a/Makefile b/Makefile
index 88be8c84d..462a7675c 100644
--- a/Makefile
+++ b/Makefile
@@ -115,6 +115,10 @@ src-link luci ../../packages_luci
 endef
 export FEEDS
 
+
+export GLUON_GENERATE := $(GLUONDIR)/scripts/generate.sh
+
+
 feeds: FORCE
 	rm -f feeds.conf
 	echo "$$FEEDS" > feeds.conf
diff --git a/scripts/configure.pl b/scripts/configure.pl
new file mode 100755
index 000000000..2f98eaecd
--- /dev/null
+++ b/scripts/configure.pl
@@ -0,0 +1,40 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+
+my %config;
+
+sub add_config {
+    my ($prefix, $c) = @_;
+
+    foreach my $key (keys $c) {
+	my $val = $c->{$key};
+
+	if (ref($val)) {
+	    add_config($key . '.', $val);
+	}
+	else {
+	    $config{'@' . $prefix . $key . '@'} = $val;
+	}
+    }
+}
+
+sub read_config {
+    my $input = shift;
+    my $CONFIG = do $input;
+    add_config('', $CONFIG);
+}
+
+
+read_config 'site/site.pl';
+
+
+my $regex = join '|', map {quotemeta} keys %config;
+
+
+for (<>) {
+    s/($regex)/${config{$1}}/g;
+    print;
+}
diff --git a/scripts/generate.sh b/scripts/generate.sh
new file mode 100755
index 000000000..5aa945016
--- /dev/null
+++ b/scripts/generate.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+declare -a IN
+
+
+GLUONDIR="$(dirname "$0")/.."
+
+
+for ((i = 1; i < $#; i++)); do
+	IN[$i]="${!i}"
+done
+
+OUT="$(readlink -f "${!#}")"
+
+for S in "${IN[@]}"; do (
+	cd "$(dirname "$S")"
+	NAME="$(basename "$S")"
+	IFS='
+'
+
+	for FILE in $(find "$NAME" -type f); do
+		D="$(dirname "$FILE")"
+
+		mkdir -p "$OUT/$D"
+		(cd "$GLUONDIR"; scripts/configure.pl) < "$FILE" > "$OUT/$FILE"
+		chmod --reference="$FILE" "$OUT/$FILE"
+	done
+); done
-- 
GitLab