lilalo

diff lm @ 3:6c1d2b9f45e7

Добавил команду lm report.

Строит html-представление журналов
для заданного класса.
Нужно сделать поддержку опций GetOpt::Long
и тогда эту же команду можно будет использовать
для построения всех журналов в репозитории.
author devi
date Tue May 24 13:00:28 2005 +0300 (2005-05-24)
parents 18b21f6918f0
children 774de5c1ad00
line diff
     1.1 --- a/lm	Sun May 22 16:29:55 2005 +0300
     1.2 +++ b/lm	Tue May 24 13:00:28 2005 +0300
     1.3 @@ -19,12 +19,17 @@
     1.4  our %Config = (
     1.5  	"show_host" 	=> "no",
     1.6  
     1.7 +	# Вспомогательные программы
     1.8 +	"l3-report"	=> "./lm-report",
     1.9 +
    1.10  	# Каталоги
    1.11  	"path_labmaker" => "/var/labmaker/",
    1.12  	"path_classes"	=> "/var/labmaker/classes/",
    1.13 -	"lablogs_path"	=> "/var/labmaker/lablogs/",
    1.14 +	"path_lablogs"	=> "/var/labmaker/lablogs/",
    1.15  	"courses_path"	=> "/var/labmaker/courses/",
    1.16  	"outpath"	=> "/var/labmaker/out/",
    1.17 +	"path_web"	=> "/var/www/l3",		# Путь к web-отчётам
    1.18 +	"path_share"	=> "./share/",		# Путь к web-отчётам
    1.19  
    1.20  	# Файлы
    1.21  	"runfile"	=> "lm.run", 
    1.22 @@ -263,7 +268,7 @@
    1.23  			my %myenv = ( %Config, 
    1.24  				host 	=>	$m,
    1.25  				dirs	=>	"/root /home/".$Machines{$m}->{"user"},
    1.26 -				lablogs =>	$Config{"lablogs_path"}."/".
    1.27 +				lablogs =>	$Config{"path_lablogs"}."/".
    1.28  						$XMLClass->{"course"}."/".
    1.29  						$XMLClass->{"date"}."/".
    1.30  						"$m",
    1.31 @@ -300,83 +305,47 @@
    1.32  }
    1.33  
    1.34  
    1.35 +
    1.36 +=cut comment
    1.37 +
    1.38 +lm report
    1.39 +
    1.40 +Построить html представление для журналов текущего класса.
    1.41 +Для построения используется скрипт l3-report.
    1.42 +
    1.43 +=cut
    1.44 +
    1.45  sub lm_report
    1.46  {
    1.47  
    1.48 -	print "Not implemented yet\n";
    1.49 -	exit(1);
    1.50 +	my $webdir = $Config{"path_web"};
    1.51 +	my $course=$XMLClass->{"course"};
    1.52 +	my $date=$XMLClass->{"date"};
    1.53 +	my $encoding=$XMLClass->{"charset"};
    1.54  
    1.55 -=cut comment
    1.56 +	print "date=$date\n";
    1.57  
    1.58 -Дальше идут скрипты, код которых нужно реализовать здесь.
    1.59 -Как минимум.
    1.60 +	for my $student (@{$XMLClass->{"student"}}) {
    1.61 +		my $user = $student->{"user"};
    1.62 +		my $hostname = $student->{"host"};
    1.63 +		my $encoding = $student->{"encoding"};
    1.64  
    1.65 -=cut 
    1.66 -
    1.67 -	my $lm_script_make_report_web = <<'SCRIPT';
    1.68 -
    1.69 -#!/bin/sh
    1.70 -
    1.71 -####cd /home/devi/lm
    1.72 -./lm do copy-lablogs
    1.73 -##./lm-report --input /home/murk/.labmaker --output /var/www/lm/murk.html
    1.74 -##exit
    1.75 -
    1.76 -COURSE=ug-h
    1.77 -DATE=2005-04-25
    1.78 -SUFF=".linux.nt"
    1.79 -#MACHINES="m01 m02 m03 m04 m05 m06 m07 m08 m09 m10 m11 m12 m13 m14 m15"
    1.80 -#MACHINES="m1 m2 m3 m4 m5 m6 m7 f1 f2 f3 f4 f5"
    1.81 -MACHINES="m01 m02 m03 m04 m05 m06 m07 m08"
    1.82 -#MACHINES="m1"
    1.83 -USERS="user root"
    1.84 -WEBDIR=/var/www/lm
    1.85 -
    1.86 -for u in $USERS
    1.87 -	do
    1.88 -		for m in $MACHINES
    1.89 -			do
    1.90 -				e=utf-8
    1.91 -				[ "${m##f}" = "$m" ] || e=koi8-r
    1.92 -				#e=koi8-r
    1.93 -				mkdir -p $WEBDIR/$DATE/$m
    1.94 -				cp share/*.ico share/*.css $WEBDIR/$m
    1.95 -				#echo Processing Lablogs/$COURSE/$DATE/$m$SUFF/$u/
    1.96 -				./lm-report\
    1.97 -					--input	Lablogs/$COURSE/$DATE/$m$SUFF/$u/ \
    1.98 -					--diffs "Lablogs/$COURSE/$DATE/$m$SUFF/$u/ Lablogs/$COURSE/$DATE/$m$SUFF/root/"\
    1.99 -					--output /var/www/lm/$DATE/$m/$u.html \
   1.100 -					--encoding $e
   1.101 -			done
   1.102 -	done
   1.103 -					
   1.104 -
   1.105 -SCRIPT
   1.106 -
   1.107 -	my $lm_script_make_report_all = <<'SCRIPT';
   1.108 -
   1.109 -#!/bin/sh
   1.110 -WEBDIR=/var/www/lm
   1.111 -
   1.112 -find . -type d -maxdepth 5 -mindepth 5 |\
   1.113 -	while read dir
   1.114 -	do
   1.115 -		subdir=${dir##Lablogs/}
   1.116 -		e=utf-8
   1.117 -		echo $dir | grep -qi bsd && e=koi8-r
   1.118 -		echo $dir | grep -qi /f && e=koi8-r
   1.119 -
   1.120 -		mkdir -p $WEBDIR/${subdir%/*}
   1.121 -		cp share/*.ico share/*.css $WEBDIR/${subdir%/*}
   1.122 -		#echo Processing Lablogs/$COURSE/$DATE/$m$SUFF/$u/
   1.123 -		./lm-report\
   1.124 -			--input $dir	 \
   1.125 -			--diffs "${dir%/user}/root $dir"\
   1.126 -			--output $WEBDIR/$subdir.html \
   1.127 -			--encoding $e
   1.128 -	done
   1.129 -
   1.130 -SCRIPT
   1.131 +		system("mkdir -p $webdir/$date/$hostname");
   1.132 +		system("cp ".$Config{"path_share"}."/*.{ico,css} $webdir/$date/$hostname");
   1.133 +		system($Config{"l3-report"}.
   1.134 +			" --input ".$Config{"path_lablogs"}."/$course/$date/$hostname/$user".
   1.135 +			" --diffs ".$Config{"path_lablogs"}."/$course/$date/$hostname/$user ".
   1.136 +				   $Config{"path_lablogs"}."/$course/$date/$hostname/root".
   1.137 +			" --output $webdir/$date/$hostname/$user.html".
   1.138 +			" --encoding $encoding"
   1.139 +		);
   1.140 +		system($Config{"l3-report"}.
   1.141 +			" --input ".$Config{"path_lablogs"}."/$course/$date/$hostname/root".
   1.142 +			" --diffs ".$Config{"path_lablogs"}."/$course/$date/$hostname/root ".
   1.143 +			" --output $webdir/$date/$hostname/root.html".
   1.144 +			" --encoding $encoding"
   1.145 +		);
   1.146 +	}
   1.147  }
   1.148  
   1.149  sub load_run