From b66a7afd407bea45c2a94c944274a44f7b295702 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sun, 26 Jun 2011 11:20:14 +0000 Subject: [PATCH] fhemupdate git-svn-id: https://svn.fhem.de/fhem/trunk@922 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/fhemupdate.pl | 76 ++++++++++++++++++++++++++++++++++++++ fhem/docs/commandref.html | 8 ++-- 2 files changed, 80 insertions(+), 4 deletions(-) create mode 100755 fhem/contrib/fhemupdate.pl diff --git a/fhem/contrib/fhemupdate.pl b/fhem/contrib/fhemupdate.pl new file mode 100755 index 000000000..28c77c121 --- /dev/null +++ b/fhem/contrib/fhemupdate.pl @@ -0,0 +1,76 @@ +#!/usr/bin/perl + +# Server-Side script to check out the fhem CVS repository, and upload the +# changed files to the server + +print localtime() . "\n"; + +chdir("/home/rudi/fhemupdate/fhem"); +system("mkdir -p UPLOAD"); +system("cvs update . > /dev/null 2>&1"); +die "CVS failed, exiting\n" if($?); + +my @filelist = ( + "./fhem.pl", + "FHEM/.*.pm", + "webfrontend/pgm2/.*", + "docs/commandref.html", + "docs/faq.html", + "docs/HOWTO.html", + "docs/fhem.*.png", + "docs/.*.jpg", +); + +# Read in the file timestamps +my %filetime; +my %filesize; +my %filedir; +foreach my $fspec (@filelist) { + $fspec =~ m,^(.+)/([^/]+)$,; + my ($dir,$pattern) = ($1, $2); + opendir DH, $dir || die("Can't open $dir: $!\n"); + foreach my $file (grep { /$pattern/ && -f "$dir/$_" } readdir(DH)) { + my @st = stat("$dir/$file"); + my @mt = localtime($st[9]); + $filetime{$file} = sprintf "%04d-%02d-%02d_%02d:%02d:%02d", + $mt[5]+1900, $mt[4]+1, $mt[3], $mt[2], $mt[1], $mt[0]; + $filesize{$file} = $st[7]; + $filedir{$file} = $dir; + } + closedir(DH); +} + +my %oldtime; +if(open FH, "UPLOAD/filetimes.txt") { + while(my $l = ) { + chomp($l); + my ($ts, $fs, $file) = split(" ", $l, 3); + $oldtime{$file} = $ts; + } + close(FH); +} + +chdir("UPLOAD"); +open FH, ">filetimes.txt" || die "Can't open filetimes.txt: $!\n"; +open FTP, ">script.txt" || die "Can't open script.txt: $!\n"; +print FTP "cd fhem.de/fhemupdate\n"; +print FTP "put filetimes.txt\n"; +print FTP "pas\n"; # Without passive only 28 files can be transferred +my $cnt; +foreach my $f (sort keys %filetime) { + print FH "$filetime{$f} $filesize{$f} $f\n"; + my $newfname = $f; + $newfname .= ".txt" if($newfname =~ m/.pl$/); # Cant download .pl files + if(!$oldtime{$f} || $oldtime{$f} ne $filetime{$f}) { + print FTP "put $newfname\n"; + system("cp ../$filedir{$f}/$f $newfname"); + $cnt++; + } +} +close FH; +close FTP; + +if($cnt) { + print "FTP Upload needed for $cnt files\n"; + system("ftp -e fhem.de < script.txt"); +} diff --git a/fhem/docs/commandref.html b/fhem/docs/commandref.html index 9a12543b3..64210b330 100644 --- a/fhem/docs/commandref.html +++ b/fhem/docs/commandref.html @@ -46,7 +46,6 @@ ?,help   include   inform   - fhemupdate   list   modify   quit   @@ -60,6 +59,7 @@ shutdown   sleep   trigger   + updatefhem   xmllist   @@ -528,10 +528,10 @@ A line ending with \ will be concatenated with the next one, so long lines
- -

fhemupdate

+ +

updatefhem