mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
build-aux: rewrite augeas test generator in Python
As part of an goal to eliminate Perl from libvirt build tools, rewrite the augeas-gentest.pl tool in Python. This was a straight conversion, manually going line-by-line to change the syntax from Perl to Python. Thus the overall structure of the file and approach is the same. The use of $(AUG_GENTEST) as a dependancy in the makefiles needed to be fixed, because this was assumed to be the filename of the script, but is in fact a full shell command line. Reviewed-by: Ján Tomko <jtomko@redhat.com> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
b36b20a1b3
commit
17bbdef5cb
@ -45,7 +45,7 @@ EXTRA_DIST = \
|
|||||||
run.in \
|
run.in \
|
||||||
README.md \
|
README.md \
|
||||||
AUTHORS.in \
|
AUTHORS.in \
|
||||||
build-aux/augeas-gentest.pl \
|
scripts/augeas-gentest.py \
|
||||||
build-aux/check-spacing.pl \
|
build-aux/check-spacing.pl \
|
||||||
build-aux/header-ifdef.pl \
|
build-aux/header-ifdef.pl \
|
||||||
build-aux/minimize-po.pl \
|
build-aux/minimize-po.pl \
|
||||||
|
@ -1,60 +0,0 @@
|
|||||||
#!/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;
|
|
67
scripts/augeas-gentest.py
Executable file
67
scripts/augeas-gentest.py
Executable file
@ -0,0 +1,67 @@
|
|||||||
|
#!/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)
|
@ -421,8 +421,8 @@ check-augeas: $(augeas_DATA) $(augeastest_DATA)
|
|||||||
fi
|
fi
|
||||||
.PHONY: check-augeas
|
.PHONY: check-augeas
|
||||||
|
|
||||||
AUG_GENTEST_SCRIPT = $(top_srcdir)/build-aux/augeas-gentest.pl
|
AUG_GENTEST_SCRIPT = $(top_srcdir)/scripts/augeas-gentest.py
|
||||||
AUG_GENTEST = $(PERL) $(AUG_GENTEST_SCRIPT)
|
AUG_GENTEST = $(RUNUTF8) $(PYTHON) $(AUG_GENTEST_SCRIPT)
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
|
Loading…
x
Reference in New Issue
Block a user