talimatname-indeksleme
This commit is contained in:
		
							parent
							
								
									f1f81cf5e1
								
							
						
					
					
						commit
						f90832b900
					
				
					 2 changed files with 67 additions and 313 deletions
				
			
		
							
								
								
									
										67
									
								
								bin/talimatname_indeks.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										67
									
								
								bin/talimatname_indeks.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,67 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| if [ -z $1 ];then | ||||
| 	echo "kullanım: $0 > index.html" | ||||
| 	exit 1 | ||||
| fi | ||||
| 
 | ||||
| paketdepo="http://paketler.milislinux.org" | ||||
| dosya=/tmp/paket_konumlar | ||||
| [ -f $dosya ] && rm -rf $dosya | ||||
| find /root/talimatname/temel/* -type d  > $dosya | ||||
| find /root/talimatname/genel/*/* -type d  >> $dosya | ||||
| 
 | ||||
| echo "<html>" | ||||
| echo '<meta http-equiv="content-type" contentType="text/html; charset=UTF-8">' | ||||
| echo '<meta charset="UTF-8">' | ||||
| echo '<link rel="stylesheet" href="bootstrap.min.css" />' | ||||
| echo '<table class="table" border=1>' | ||||
| echo '<thead class="thead-dark">' | ||||
| echo '<tr>' | ||||
| echo '<th scope="col">Grup</th>' | ||||
| echo '<th scope="col">isim</th>' | ||||
| echo '<th scope="col">Sürüm</th>' | ||||
| echo '<th scope="col">Açıklama</th>' | ||||
| echo '<th scope="col">Url</th>' | ||||
| echo '<th scope="col">Paket Adresi</th>' | ||||
| echo '</tr>' | ||||
| echo '</thead>' | ||||
| 
 | ||||
| echo '<tbody>' | ||||
| 	 | ||||
| while IFS='' read -r konum || [[ -n "$konum" ]]; do | ||||
| 	 | ||||
| 	echo "<tr>" | ||||
| 	 | ||||
| 	# Grup | ||||
| 	grup=$(grep -ri "# Grup:" $konum/talimat | cut -d ':' -f2-) | ||||
| 	echo "<td>$grup</td>" | ||||
| 	 | ||||
| 	# İsim | ||||
| 	isim=$(basename $konum) | ||||
| 	echo "<td>$isim</td>" | ||||
| 	 | ||||
| 	# Surum-Devir | ||||
| 	surum=$(grep -ri ^"surum=" $konum/talimat | cut -d '=' -f2-) | ||||
| 	devir=$(grep -ri ^"devir=" $konum/talimat | cut -d '=' -f2-) | ||||
| 	echo "<td>$surum-$devir</td>" | ||||
| 	 | ||||
| 	# Tanım | ||||
| 	tanim=$(grep -ri "# Tanım:" $konum/talimat | cut -d ':' -f2-) | ||||
| 	echo "<td>$tanim</td>" | ||||
| 	 | ||||
| 	# Url | ||||
| 	url=$(grep -ri "# Url:" $konum/talimat | cut -d ':' -f2-) | ||||
| 	echo "<td><a href=$url>$url</a></td>" | ||||
| 	 | ||||
| 	# İndir | ||||
| 	echo "<td><a href=${paketdepo}/${isim}%23${surum}-x86_64.mps.lz>indir</a></td>" | ||||
| 	# %23 = # | ||||
| 	 | ||||
| 	echo "</tr>" | ||||
| done < "$dosya" | ||||
| 
 | ||||
| echo '</tbody>' | ||||
| echo "</table>" | ||||
| echo "</htlm>" | ||||
| 
 | ||||
|  | @ -1,313 +0,0 @@ | |||
| #!/usr/bin/perl -w | ||||
| 
 | ||||
| our $version = "1.0.4"; | ||||
| 
 | ||||
| ######################################################################## | ||||
| # | ||||
| # portspage (http://www.karsikkopuu.net/crux/scripts/) | ||||
| # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| # | ||||
| # 2017 milis linux talimatnamesine uyarlama - milisarge | ||||
| ######################################################################## | ||||
| 
 | ||||
| use strict; | ||||
| 
 | ||||
| our %options = | ||||
| ( | ||||
| 	title => "Milis Linux Talimatnamesi", | ||||
| 	timestamp_accuracy => 1, | ||||
| 	date_from_file => 0, | ||||
| ); | ||||
| 
 | ||||
| sub print_usage | ||||
| { | ||||
| 	print <<EOT; | ||||
| Usage: talimatname_indeks_yap [paremetre]... [dizin] | ||||
| 
 | ||||
|   --title=TITLE               set the page title | ||||
|   --header=FILE               name of file to insert before port listing | ||||
|   --footer=FILE               name of file to insert after port listing | ||||
|   --timestamp-accuracy=LEVEL  0 = no timestamp, 1 = date only, 2 = date and time | ||||
|                               default is 1 | ||||
|   --date-from-file            take date from newest file instead of directory | ||||
|   --date-from-pkgfile         take date from Pkgfile instead of directory | ||||
|   --version                   output version information and exit | ||||
| 
 | ||||
| EOT | ||||
| } | ||||
| 
 | ||||
| sub parse_args | ||||
| { | ||||
| 	foreach my $arg (@ARGV) | ||||
| 	{ | ||||
| 		if ($arg =~ /^--header=(.*)$/) | ||||
| 		{ | ||||
| 			$options{header} = $1; | ||||
| 		} | ||||
| 		elsif ($arg =~ /^--footer=(.*)$/) | ||||
| 		{ | ||||
| 			$options{footer} = $1; | ||||
| 		} | ||||
| 		elsif ($arg =~ /^--title=(.*)$/) | ||||
| 		{ | ||||
| 			$options{title} = $1; | ||||
| 		} | ||||
| 		elsif ($arg =~ /^--timestamp-accuracy=(0|1|2)$/) | ||||
| 		{ | ||||
| 			$options{timestamp_accuracy} = $1; | ||||
| 		} | ||||
| 		elsif ($arg =~ /^--date-from-file$/) | ||||
| 		{ | ||||
| 			$options{date_from_file} = 1; | ||||
| 		} | ||||
| 		elsif ($arg =~ /^--date-from-pkgfile$/) | ||||
| 		{ | ||||
| 			$options{date_from_pkgfile} = 1; | ||||
| 		} | ||||
| 		elsif ($arg =~ /^--version$/) | ||||
| 		{ | ||||
| 			print "$version\n"; | ||||
| 			exit 0; | ||||
| 		} | ||||
| 		elsif ($arg =~ /^--help$/) | ||||
| 		{ | ||||
| 			print_usage(); | ||||
| 			exit 0; | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			$options{directory} = $arg; | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| sub recurse_tree | ||||
| { | ||||
| 	my $path = shift; | ||||
| 	my @list; | ||||
| 
 | ||||
| 	while ($path =~ s/\/\//\//g) {} | ||||
| 	$path =~ s/\/$//; | ||||
| 
 | ||||
| 	opendir(DIR, $path) or return; | ||||
| 	ENTRY: | ||||
| 	foreach my $entry(sort(readdir(DIR))) | ||||
| 	{ | ||||
| 		next ENTRY if $entry eq "."; | ||||
| 		next ENTRY if $entry eq ".."; | ||||
| 		push (@list, "$path/$entry") if -f "$path/$entry"; | ||||
| 		push (@list, recurse_tree("$path/$entry")) if -d "$path/$entry"; | ||||
| 	} | ||||
| 
 | ||||
| 	return @list; | ||||
| } | ||||
| 
 | ||||
| sub parse_pkgfile | ||||
| { | ||||
| 	my %parsed; | ||||
| 	my $pkgfile = shift; | ||||
| 
 | ||||
| 	if (open (FILE, $pkgfile)) | ||||
| 	{ | ||||
| 		while (<FILE>) | ||||
| 		{ | ||||
| 			if ($_ =~ /^#\s*(.*?):\s*(.*)$/) | ||||
| 			{ | ||||
| 				my $key = $1; | ||||
| 				my $value = $2; | ||||
| 				$value =~ s/</</g; | ||||
| 				$value =~ s/>/>/g; | ||||
| 				$value =~ s/&/&/g; | ||||
| 				$parsed{$key} = $value; | ||||
| 			} | ||||
| 			elsif ($_ =~ /^version=(.*)$/) | ||||
| 			{ | ||||
| 				$parsed{version} = $1; | ||||
| 			} | ||||
| 			elsif ($_ =~ /^release=(.*)$/) | ||||
| 			{ | ||||
| 				$parsed{release} = $1; | ||||
| 			} | ||||
| 		} | ||||
| 		close (FILE); | ||||
| 	} | ||||
| 
 | ||||
| 	return { %parsed }; | ||||
| } | ||||
| 
 | ||||
| sub main | ||||
| { | ||||
| 	my %db; | ||||
| 
 | ||||
| 	parse_args(); | ||||
| 
 | ||||
| 	if (!$options{directory}) | ||||
| 	{ | ||||
| 		print_usage(); | ||||
| 		return 0; | ||||
| 	} | ||||
| 
 | ||||
| 	foreach my $file (recurse_tree($options{directory})) | ||||
| 	{ | ||||
| 		if ($file =~ q:.*/(.*)/talimat$:) | ||||
| 		{ | ||||
| 			$db{$1} = parse_pkgfile("$file"); | ||||
| 		} | ||||
| 	} | ||||
| 
 | ||||
| 	print <<EOH; | ||||
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" | ||||
|     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> | ||||
| 
 | ||||
| <html xml:lang="tr" lang="tr" xmlns="http://www.w3.org/1999/xhtml"> | ||||
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||||
| <head> | ||||
| <meta http-equiv="content-type" contentType="text/html;"> | ||||
| 
 | ||||
| EOH | ||||
| 
 | ||||
| 	print "  <title>$options{title}</title>\n"; | ||||
| 
 | ||||
| 	print <<EOH; | ||||
|   <style type="text/css"> | ||||
|    body | ||||
|    { | ||||
|     font-family: Verdana, sans-serif; | ||||
|     font-size: 85%; | ||||
|     padding: 2em; | ||||
|    } | ||||
|    a | ||||
|    { | ||||
|     color: black; | ||||
|    } | ||||
|    table | ||||
|    { | ||||
|     border: solid #CAD4E9 1px; | ||||
|     font-size: 85%; | ||||
|    } | ||||
|    td | ||||
|    { | ||||
|     padding: 6px; | ||||
|    } | ||||
|    tr.header | ||||
|    { | ||||
|     background-color: #CAD4E9; | ||||
|    } | ||||
|    tr.odd | ||||
|    { | ||||
|     background-color: #ECF0F7; | ||||
|    } | ||||
|    tr.even | ||||
|    { | ||||
|     background-color: #F7F9FC; | ||||
|    } | ||||
|   </style> | ||||
|    | ||||
|  </head> | ||||
|  <body> | ||||
| EOH | ||||
| 
 | ||||
| 	print "  <h2>$options{title}</h2>\n"; | ||||
| 
 | ||||
| 	if ($options{header}) | ||||
| 	{ | ||||
| 		open(FILE, $options{header}) or die "Couldn't open header file"; | ||||
| 		while (<FILE>) | ||||
| 		{ | ||||
| 			print "  " . $_; | ||||
| 		} | ||||
| 		close(FILE); | ||||
| 	} | ||||
| 
 | ||||
| 	print "  <table width=\"100%\" cellspacing=\"0\">\n"; | ||||
| 	print "   <tr class=\"header\"><td><b>Talimat</b></td><td><b>Sürüm</b></td><td><b>Açıklama</b></td>"; | ||||
| 	if ($options{timestamp_accuracy} > 0) | ||||
| 	{ | ||||
| 		print "<td><b>Son değişiklik</b></td>"; | ||||
| 	} | ||||
| 	print "</tr>\n"; | ||||
| 	our $odd = "odd"; | ||||
| 	my $count = 0; | ||||
| 	foreach my $port (sort keys %db) | ||||
| 	{ | ||||
| 		$count++; | ||||
| 		print "   <tr class=\"$odd\"><td>"; | ||||
| 		$db{$port}{URL} ? print "<a href=\"$db{$port}{URL}\">$port</a>" : print "$port"; | ||||
| 		print "</td><td><a href=\"$options{directory}/$port/\">$db{$port}{version}-$db{$port}{release}</a></td><td>"; | ||||
| 		print $db{$port}{Description} if $db{$port}{Description}; | ||||
| 		print "</td>"; | ||||
| 
 | ||||
| 		if ($options{timestamp_accuracy} > 0) | ||||
| 		{ | ||||
| 			my $date; | ||||
| 
 | ||||
| 			if ($options{date_from_file}) | ||||
| 			{ | ||||
| 				my @files = recurse_tree("$options{directory}/$port"); | ||||
| 				my @dates; | ||||
| 				foreach my $file (@files) | ||||
| 				{ | ||||
| 					push (@dates, (stat($file))[9]); | ||||
| 				} | ||||
| 				@dates = sort @dates; | ||||
| 				$date = $dates[$#dates]; | ||||
| 
 | ||||
| 			} | ||||
| 			elsif ($options{date_from_pkgfile}) | ||||
| 			{ | ||||
| 				$date = (stat("$options{directory}/$port/talimat"))[9]; | ||||
| 			} | ||||
| 			else | ||||
| 			{ | ||||
| 				$date = (stat("$options{directory}/$port"))[9]; | ||||
| 			} | ||||
| 
 | ||||
| 			print "<td>" . isotime($date, $options{timestamp_accuracy}) . "</td>"; | ||||
| 		} | ||||
| 
 | ||||
| 		print "</tr>\n"; | ||||
| 
 | ||||
| 		if ($odd eq "odd") { $odd = "even"; } | ||||
| 		else { $odd = "odd"; } | ||||
| 	} | ||||
| 	print "  </table>\n"; | ||||
| 	print "  <p><b>$count talimat</b></p>\n"; | ||||
| 
 | ||||
| 	if ($options{footer}) | ||||
| 	{ | ||||
| 		open(FILE, $options{footer}) or die "Couldn't open footer file"; | ||||
| 		while (<FILE>) | ||||
| 		{ | ||||
| 			print "  " . $_; | ||||
| 		} | ||||
| 		close(FILE); | ||||
| 	} | ||||
| 
 | ||||
| 	print <<EOH; | ||||
|  </body> | ||||
| </html> | ||||
| EOH | ||||
| 
 | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| sub isotime | ||||
| { | ||||
| 	my $time = (shift or time); | ||||
| 	my $accuracy = (shift or 2); | ||||
| 	my @t = gmtime ($time); | ||||
| 	my $year = $t[5] + 1900; | ||||
| 	my $month = sprintf("%02d", $t[4] + 1); | ||||
| 	my $day = sprintf("%02d", $t[3]); | ||||
| 
 | ||||
| 	if ($accuracy == 1) | ||||
| 	{ | ||||
| 		return "$year-$month-$day"; | ||||
| 	} | ||||
| 
 | ||||
| 	return "$year-$month-$day " . sprintf("%02d:%02d:%02d UTC", $t[2], $t[1], $t[0]); | ||||
| } | ||||
| 
 | ||||
| exit(main()); | ||||
| 
 | ||||
| # End of file | ||||
		Loading…
	
	Add table
		
		Reference in a new issue