2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2024-11-22 09:49:50 +00:00

fhem.pl: add lib (Forum 111125)

git-svn-id: https://svn.fhem.de/fhem/trunk@21987 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2020-05-21 10:06:19 +00:00
parent 1cc5eb1364
commit 8ad570316d
4 changed files with 78 additions and 73 deletions

View File

@ -1,22 +1 @@
DIR unused DIR unused
MOV www/pgm2/fhemweb_multiple.js unused
MOV www/pgm2/fhemweb_noArg.js unused
MOV www/pgm2/fhemweb_slider.js unused
MOV www/pgm2/fhemweb_svg.js unused
MOV www/pgm2/fhemweb_textField.js unused
MOV www/pgm2/fhemweb_time.js unused
MOV www/pgm2/darktouchpadsvg_defs.svg unused
MOV www/pgm2/darktouchpadsvg_style.css unused
MOV www/pgm2/ios6touchpadsvg_defs.svg unused
MOV www/pgm2/ios6touchpadsvg_style.css unused
MOV www/pgm2/ios7touchpadsvg_defs.svg unused
MOV www/pgm2/ios7touchpadsvg_style.css unused
MOV www/pgm2/iostouchpadsvg_defs.svg unused
MOV www/pgm2/iostouchpadsvg_style.css unused
MOV www/pgm2/darksmallscreensvg_defs.svg unused
MOV www/pgm2/darksmallscreensvg_style.css unused
MOV www/pgm2/ios7smallscreensvg_defs.svg unused
MOV www/pgm2/ios7smallscreensvg_style.css unused
MOV www/pgm2/iossmallscreensvg_defs.svg unused
MOV www/pgm2/iossmallscreensvg_style.css unused
MOV FHEM/firmware/LaCrosseGateway.bin unused

View File

@ -1,15 +1,15 @@
#!/usr/bin/perl #!/usr/bin/perl
############################### ###############################
# This is quite a big mess here.
use IO::File;
use strict;
use warnings;
# Server-Side script to check out the fhem SVN repository, and upload the # Server-Side script to check out the fhem SVN repository, and upload the
# changed files to the server # changed files to the server
# $Id$
use strict;
use warnings;
my $debug = 0;
print "\n\n"; print "\n\n";
print "fhemupdate.pl START: ".localtime()."\n"; print "fhemupdate.pl START: ".localtime()."\n";
@ -17,13 +17,13 @@ my $homedir="/home/rko/fhemupdate";
my $destdir="/var/www/html/fhem.de"; my $destdir="/var/www/html/fhem.de";
chdir("$homedir/culfw"); chdir("$homedir/culfw");
system("svn update ."); system("svn update .") if(!$debug);
chdir("$homedir/fhem"); chdir("$homedir/fhem");
system("svn update ."); system("svn update .") if(!$debug);
die "SVN failed, exiting\n" if($?); die "SVN failed, exiting\n" if($?);
`../copyfiles.sh`; `../copyfiles.sh` if(!$debug);
################################# #################################
# new Style # new Style
@ -48,7 +48,6 @@ my @filelist2 = (
"FHEM/lib/SWAP/justme/.*", "FHEM/lib/SWAP/justme/.*",
"FHEM/lib/Device/.*.pm", "FHEM/lib/Device/.*.pm",
"FHEM/lib/Device/Firmata/.*.pm", "FHEM/lib/Device/Firmata/.*.pm",
"FHEM/lib/Device/MySensors/.*.pm",
"FHEM/lib/MP3/.*.pm", "FHEM/lib/MP3/.*.pm",
"FHEM/lib/MP3/Tag/.*", "FHEM/lib/MP3/Tag/.*",
"FHEM/lib/UPnP/.*", "FHEM/lib/UPnP/.*",
@ -78,36 +77,45 @@ my @filelist2 = (
); );
# Can't make negative regexp to work, so do it with extra logic # Collect file timestamp and size
my %skiplist2 = (
# "www/pgm2" => ".pm\$",
);
# Read in the file timestamps
my %filetime2; my %filetime2;
my %filesize2; my %filesize2;
my %filedir2; sub
foreach my $fspec (@filelist2) { statDir
{
my ($fspec, $recursive) = @_;
$fspec =~ m,^(.+)/([^/]+)$,; $fspec =~ m,^(.+)/([^/]+)$,;
my ($dir,$pattern) = ($1, $2); my ($dir,$pattern) = ($1, $2);
my $tdir = $dir;
opendir DH, $dir || die("Can't open $dir: $!\n"); opendir DH, $dir || die("Can't open $dir: $!\n");
foreach my $file (grep { /$pattern/ && -f "$dir/$_" } readdir(DH)) { my @files = readdir(DH);
next if($skiplist2{$tdir} && $file =~ m/$skiplist2{$tdir}/);
my @st = stat("$dir/$file");
my @mt = localtime($st[9]);
$filetime2{"$tdir/$file"} = sprintf "%04d-%02d-%02d_%02d:%02d:%02d",
$mt[5]+1900, $mt[4]+1, $mt[3], $mt[2], $mt[1], $mt[0];
$filesize2{"$tdir/$file"} = $st[7];
$filedir2{"$tdir/$file"} = $dir;
}
closedir(DH); closedir(DH);
foreach my $file (@files) {
my $fPath = "$dir/$file";
if(-d $fPath) {
statDir("$fPath/$pattern", 1) if($recursive && $file !~ m/^\./);
} else {
next if($file !~ m/$pattern/);
my @st = stat($fPath);
my @mt = localtime($st[9]);
$filetime2{$fPath} = sprintf "%04d-%02d-%02d_%02d:%02d:%02d",
$mt[5]+1900, $mt[4]+1, $mt[3], $mt[2], $mt[1], $mt[0];
$filesize2{$fPath} = $st[7];
}
}
} }
foreach my $fspec (@filelist2) {
statDir($fspec);
}
statDir("lib/.*.pm",1) if(-d "lib");
#######################
# read in the old times
chdir("$homedir/fhem/fhemupdate"); chdir("$homedir/fhem/fhemupdate");
my %oldtime; my %oldtime;
my $fname = "controls_fhem.txt"; my $fname = "controls_fhem.txt";
if(open FH, $fname) { if(open FH, $fname) {
while(my $l = <FH>) { while(my $l = <FH>) {
chomp($l); chomp($l);
@ -120,30 +128,33 @@ if(open FH, $fname) {
} }
my $cfh = new IO::File ">$fname" || die "Can't open $fname: $!\n"; # Create the new controls_fhem.txt and copy the changed files
open(FH, ">$fname") || die "Can't open $fname: $!\n";
`svn info ..` =~ m/Revision: (\d+)/m; `svn info ..` =~ m/Revision: (\d+)/m;
print $cfh "REV $1\n"; print FH "REV $1\n";
if(open(ADD, "../../fhemupdate.control.fhem")) { if(open(ADD, "../../fhemupdate.control.fhem")) {
print $cfh join("",<ADD>); print FH join("",<ADD>);
close ADD; close ADD;
} }
my $cnt; my $cnt;
foreach my $f (sort keys %filetime2) { foreach my $f (sort keys %filetime2) {
my $fn = $f; my $fn = $f;
$fn =~ s/.txt$// if($fn =~ m/.pl.txt$/); $fn =~ s/.txt$// if($fn =~ m/.pl.txt$/);
print $cfh "UPD $filetime2{$f} $filesize2{$f} $fn\n"; print FH "UPD $filetime2{$f} $filesize2{$f} $fn\n";
my $newfname = $f; my $newfname = $f;
if(!$oldtime{$f} || $oldtime{$f} ne $filetime2{$f}) { if(!$oldtime{$f} || $oldtime{$f} ne $filetime2{$f}) {
$f =~ m,^(.*)/([^/]*)$,; $f =~ m,^(.*)/([^/]*)$,;
my ($tdir, $file) = ($1, $2); my ($dir, $file) = ($1, $2);
system("mkdir -p $tdir") unless(-d $tdir); system("mkdir -p $dir") unless(-d $dir);
system("cp ../$filedir2{$f}/$file $tdir/$file"); system("cp ../$dir/$file $dir/$file");
$cnt++; $cnt++;
} }
} }
close $cfh; close(FH);
exit(0) if($debug);
# copy and check in the controls file if it was changed.
chdir("$homedir/fhem"); chdir("$homedir/fhem");
my $diff=`diff -I '^REV' fhemupdate/$fname $fname`; my $diff=`diff -I '^REV' fhemupdate/$fname $fname`;
if($diff) { if($diff) {
@ -156,21 +167,20 @@ system("cp -p ../culfw/Devices/CUL/*.hex fhemupdate/FHEM/firmware");
system("cp -p FHEM/firmware/*.hex fhemupdate/FHEM/firmware"); system("cp -p FHEM/firmware/*.hex fhemupdate/FHEM/firmware");
# copy the stuff to the external dir
my $rsyncopts="-a --delete --verbose"; my $rsyncopts="-a --delete --verbose";
print "rsync $rsyncopts fhemupdate/. $destdir/fhemupdate/.\n"; print "rsync $rsyncopts fhemupdate/. $destdir/fhemupdate/.\n";
system("rsync $rsyncopts fhemupdate/. $destdir/fhemupdate/."); system("rsync $rsyncopts fhemupdate/. $destdir/fhemupdate/.");
if(-f "commandref_changed") { if(-f "commandref_changed") {
system("cp docs/commandref.html docs/commandref_DE.html $destdir"); system("cp docs/commandref.html docs/commandref_DE.html $destdir");
system("cp docs/commandref_modular*.html $destdir");
} }
system("cp CHANGED MAINTAINER.txt $destdir"); system("cp CHANGED MAINTAINER.txt $destdir");
system("cp $destdir/stats/data/fhem_statistics_db.sqlite .."); system("cp $destdir/stats/data/fhem_statistics_db.sqlite ..");
chdir("$homedir"); chdir("$homedir");
system("grep -v '^REV' fhem/fhemupdate/controls_fhem.txt > controls_fhem_5.5.txt");
system("cp controls_fhem_5.5.txt $destdir/fhemupdate4/svn/controls_fhem.txt");
#system("sh stats/dostats.sh"); disabled due to new reworked statistics2.cgi
print "generating SVNLOG\n"; print "generating SVNLOG\n";
system("sh mksvnlog.sh > SVNLOG"); system("sh mksvnlog.sh > SVNLOG");
system("cp SVNLOG $destdir"); system("cp SVNLOG $destdir");

View File

@ -1,5 +1,8 @@
#!/usr/bin/perl #!/usr/bin/perl
# $Id: commandref_join.pl 5361 2014-03-29 06:24:20Z rudolfkoenig $
# Install this file into fhem_svn:/var/svn/fhem/hooks/ manually
# $Id$
use strict; use strict;
use warnings; use warnings;
@ -34,6 +37,7 @@ foreach my $row (split("\n", $fList)) {
my $pl = `svnlook pl $arg $repos $fName`; my $pl = `svnlook pl $arg $repos $fName`;
die ("Setting svn:externals is prohibited") if($pl =~ m/svn:externals/); die ("Setting svn:externals is prohibited") if($pl =~ m/svn:externals/);
################################
# check for 80 chars per line conformity # check for 80 chars per line conformity
if($fName =~ m/CHANGED/) { if($fName =~ m/CHANGED/) {
my ($cCount, $cLineNo, $tLineNo, $lineNo) = (0,0,0,0,0); my ($cCount, $cLineNo, $tLineNo, $lineNo) = (0,0,0,0,0);
@ -55,13 +59,15 @@ foreach my $row (split("\n", $fList)) {
next; next;
} }
err $fName, "filename ($fName) contains strange characters (not A-Za-z0-9_.-%)" err $fName, "the filename ($fName) contains forbidden characters ".
"(A-Za-z0-9_.-% is allowed)"
if($fName =~ m/[^A-Za-z0-9_.%-\/]/); if($fName =~ m/[^A-Za-z0-9_.%-\/]/);
next unless($fName =~ /\.pm$/); next unless($fName =~ /\.pm$/);
# check for SVN Id ################################
if($fName =~ m,trunk/fhem/FHEM/[^/]+\.pm$,) { # look for SVN Id
if($fName =~ m,trunk/fhem/(FHEM|lib)/[^/]+\.pm$,) {
my $hasId = 0; my $hasId = 0;
open(FILE, "$svnlook $arg cat $repos $fName|") || open(FILE, "$svnlook $arg cat $repos $fName|") ||
die("Cant svnlook cat $fName:$!\n"); die("Cant svnlook cat $fName:$!\n");
@ -81,6 +87,9 @@ foreach my $row (split("\n", $fList)) {
unless($props =~ /Id/); unless($props =~ /Id/);
} }
################################
# check the documentation
next if($fName !~ m+FHEM/(\d\d)_(.*).pm$+); next if($fName !~ m+FHEM/(\d\d)_(.*).pm$+);
my ($modNum, $modName) = ($1, $2); my ($modNum, $modName) = ($1, $2);
my %ninetyniners = ("SUNRISE_EL"=>1, "Utils"=>1); my %ninetyniners = ("SUNRISE_EL"=>1, "Utils"=>1);
@ -153,11 +162,13 @@ foreach my $row (split("\n", $fList)) {
if(!$suffix && $docCount && !$hasLink); if(!$suffix && $docCount && !$hasLink);
err $fName, "$lang: No summary description found" err $fName, "$lang: No summary description found"
if(!$suffix && $docCount && !$hasSummary); if(!$suffix && $docCount && !$hasSummary);
err $fName, "$lang: =end html$suffix: ".($nrEnd>0 ? "missing":"there are too many")."\n" err $fName, "$lang: =end html$suffix: ".
($nrEnd>0 ? "missing":"there are too many")."\n"
if($nrEnd); if($nrEnd);
foreach $tag (TAGS) { foreach $tag (TAGS) {
err $fName, "$lang: Unbalanced $tag ($tagcount{$tag}, last line ok: $llwct{$tag})" err $fName, "$lang: Unbalanced $tag ($tagcount{$tag}, ".
"last line ok: $llwct{$tag})"
if($tagcount{$tag}); if($tagcount{$tag});
} }
} }

View File

@ -2798,16 +2798,21 @@ GlobalAttr($$$$)
elsif($name eq "modpath") { elsif($name eq "modpath") {
return "modpath must point to a directory where the FHEM subdir is" return "modpath must point to a directory where the FHEM subdir is"
if(! -d "$val/FHEM"); if(! -d "$val/FHEM");
my $modpath = "$val/FHEM"; my $modpath = $val;
my $modpath_FHEM = "$modpath/FHEM";
my $modpath_lib = "$modpath/lib";
opendir(DH, $modpath_FHEM) || return "Can't read $modpath_FHEM: $!";
unshift @INC, $modpath_FHEM if(!grep(/^\Q$modpath_FHEM\E$/,@INC));
unshift @INC, $modpath_lib if(!grep(/^\Q$modpath_lib\E$/, @INC));
unshift @INC, $modpath if(!grep(/^\Q$modpath\E$/, @INC)); #configDb
opendir(DH, $modpath) || return "Can't read $modpath: $!";
push @INC, $modpath if(!grep(/^\Q$modpath\E$/, @INC));
push @INC, $val if(!grep(/^\Q$val\E$/, @INC));
$cvsid =~ m/(fhem.pl) (\d+) (\d+-\d+-\d+)/; $cvsid =~ m/(fhem.pl) (\d+) (\d+-\d+-\d+)/;
$attr{global}{version} = "$1:$2/$3"; $attr{global}{version} = "$1:$2/$3";
my $counter = 0; my $counter = 0;
my $oldVal = $attr{global}{modpath}; my $oldVal = $attr{global}{modpath};
$attr{global}{modpath} = $val; $attr{global}{modpath} = $modpath;
if(configDBUsed()) { if(configDBUsed()) {
my $list = cfgDB_Read99(); # retrieve filelist from configDB my $list = cfgDB_Read99(); # retrieve filelist from configDB