+++ /dev/null
-#!/usr/bin/env perl
-#
-# augeas-gentest.pl: Generate an augeas test file, from an
-# example config file + test file template
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library. If not, see
-# <http://www.gnu.org/licenses/>.
-
-use strict;
-use warnings;
-
-die "syntax: $0 CONFIG TEMPLATE\n" unless @ARGV == 2;
-
-my $config = shift @ARGV;
-my $template = shift @ARGV;
-
-open CONFIG, "<", $config or die "cannot read $config: $!";
-open TEMPLATE, "<", $template or die "cannot read $template: $!";
-
-my $group = 0;
-while (<TEMPLATE>) {
- if (/\@CONFIG\@/) {
- my $group = 0;
- print " let conf = \"";
- while (<CONFIG>) {
- if (/^#\w/) {
- s/^#//;
- s/\"/\\\"/g;
- print $_;
- $group = /\[\s$/;
- } elsif ($group) {
- s/\"/\\\"/g;
- if (/#\s*\]/) {
- $group = 0;
- }
- if (/^#/) {
- s/^#//;
- print $_;
- }
- }
- }
- print "\"\n";
- } else {
- print $_;
- }
-}
-
-close TEMPLATE;
-close CONFIG;
--- /dev/null
+#!/usr/bin/env python
+#
+# Copyright (C) 2012-2019 Red Hat, Inc.
+#
+# augeas-gentest.py: Generate an augeas test file, from an
+# example config file + test file template
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library 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
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library. If not, see
+# <http://www.gnu.org/licenses/>.
+
+from __future__ import print_function
+
+import re
+import sys
+
+if len(sys.argv) != 3:
+ print("syntax: %s CONFIG TEMPLATE" % sys.argv[0], file=sys.stderr)
+ sys.exit(1)
+
+config = sys.argv[1]
+template = sys.argv[2]
+
+
+def expand_config(config):
+ with open(config) as fh:
+ group = False
+ for line in fh:
+ if re.search(r'''^#\w''', line) is not None:
+ line = line[1:]
+ line = line.replace('"', '\\"')
+ print(line, end='')
+ if re.search(r'''\[\s$''', line):
+ group = True
+ elif group:
+ line = line.replace('"', '\\"')
+
+ if re.search(r'''#\s*\]''', line):
+ group = False
+
+ if line[0] == '#':
+ line = line[1:]
+ print(line, end='')
+
+
+def expand_template(template, config):
+ with open(template) as fh:
+ for line in fh:
+ if '@CONFIG@' in line:
+ print(' let conf = "', end='')
+ expand_config(config)
+ print('"')
+ else:
+ print(line, end='')
+
+
+expand_template(template, config)