mirror of
https://github.com/fhem/fhem-mirror.git
synced 2024-11-22 09:49:50 +00:00
f70d517bdd
git-svn-id: https://svn.fhem.de/fhem/trunk@28079 2b470e98-0d58-463d-a4d8-8e2adae1ed80
79 lines
2.2 KiB
Perl
79 lines
2.2 KiB
Perl
#!/usr/bin/perl
|
|
|
|
# Details in Forum #35416
|
|
|
|
if(@ARGV == 0 || ($ARGV[0] =~ m/^-/ && $ARGV[0] ne "-d")) {
|
|
print "Usage:\n".
|
|
" cd open-zwave\n".
|
|
" perl .../contrib/zwave_configconvert.pl config |\n".
|
|
" gzip > .../FHEM/lib/openzwave_deviceconfig.xml.gz\n".
|
|
"or\n".
|
|
" cd open-zwave\n".
|
|
" gzip -d < .../FHEM/lib/openzwave_deviceconfig.xml.gz |\n".
|
|
" perl .../contrib/zwave_configconvert.pl -d\n";
|
|
exit 1;
|
|
}
|
|
|
|
if($ARGV[0] eq "-d") {
|
|
while(my $l = <STDIN>) {
|
|
next if($l !~ m/<Product sourceFile="([^"]*)"/);
|
|
my $f = $1;
|
|
next if(-f "config/$f");
|
|
print("Creating: config/$f\n");
|
|
my $dir = $f;
|
|
$dir =~ s,/[^/]*$,,;
|
|
`mkdir -p config/$dir`;
|
|
open(FH, ">config/$f") || die("open config/$f: $!\n");
|
|
print FH $l;
|
|
while($l = <STDIN>) {
|
|
print FH $l;
|
|
last if($l =~ m,</Product>,);
|
|
}
|
|
close(FH);
|
|
}
|
|
exit(0);
|
|
}
|
|
|
|
print '<?xml version="1.0" encoding="utf-8"?>', "\n";
|
|
print "<ProductList>\n";
|
|
foreach my $file (`find $ARGV[0] -name \\*.xml`) {
|
|
chomp($file);
|
|
my $name = $file;
|
|
$name =~ s+.*config/++;
|
|
next if($name !~ m+/+); # Only files from subdirs
|
|
open(FH, $file) || die("$file:$!\n");
|
|
my $buffer="";
|
|
while(my $l = <FH>) {
|
|
next if($l =~ m/^<\?xml/);
|
|
chomp($l);
|
|
if($l =~ m/<Product.*/ && $l !~ m/xmlns/ && $l !~ m/sourceFile/) { #128444
|
|
$l .= <FH>;
|
|
chomp($l);
|
|
}
|
|
$l =~ s/<!--.*-->//g;
|
|
$l =~ s/^(.*)<Product.*xmlns.*/$1<Product sourceFile="$name">/;
|
|
$l =~ s/\r//g;
|
|
$l =~ s/\t/ /g;
|
|
#$l =~ s/^ *//g;
|
|
$l =~ s/ *$//g;
|
|
next if($l eq "");
|
|
if($l !~ m/>$/ || $l =~ m/^\s*<Help>\s*$/) { $buffer .= " ".$l; next; }
|
|
if($buffer && $l =~ m/>$/) { $l = "$buffer $l"; $buffer=""; }
|
|
$l =~ s/<!--.*-->//g;
|
|
# $l =~ s/<MetaData.*<\/MetaData>//g;
|
|
# $l =~ s/<MetaDataItem.*<\/MetaDataItem>//g;
|
|
# $l =~ s/<Entry.author.*<\/Entry>//g;
|
|
# $l =~ s/<ChangeLog.*<\/ChangeLog>//g;
|
|
# $l =~ s/<MetaData>//g;
|
|
# $l =~ s/<\/MetaData>//g;
|
|
# $l =~ s/<ChangeLog>//g;
|
|
# $l =~ s/<\/ChangeLog>//g;
|
|
$l =~ s/ *$//g;
|
|
print $l,"\n" if($l);
|
|
}
|
|
close(FH);
|
|
print $buffer if($buffer);
|
|
print "\n"; # One empty line between products
|
|
}
|
|
print "</ProductList>\n";
|