From 35a20e256c769f5a6cf39ad593114defe3069a83 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer 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 88be8c84..462a7675 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 00000000..2f98eaec --- /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 00000000..5aa94501 --- /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