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