mirror of
				https://github.com/xcat2/xcat-core.git
				synced 2025-11-03 21:02:34 +00:00 
			
		
		
		
	git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@15490 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			164 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			164 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/perl
 | 
						|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
 | 
						|
 | 
						|
# Runs each of the tools in the share/xcat/tools dir with the --help option
 | 
						|
# and compiles the output into a tools readme file (both text version and
 | 
						|
# html version).
 | 
						|
 | 
						|
use strict;
 | 
						|
#use lib '.';
 | 
						|
 | 
						|
my $toolsdir = 'share/xcat/tools';
 | 
						|
my $textreadme = "$toolsdir/README.txt";
 | 
						|
my $htmlreadme = "$toolsdir/README.html";
 | 
						|
#my $cachedir = '/tmp';
 | 
						|
 | 
						|
my @tools = getToolList($toolsdir);
 | 
						|
#foreach (@tools) { print "$_\n"; }
 | 
						|
 | 
						|
# Put the intro text in the readme files
 | 
						|
print "Building tools README files...\n";
 | 
						|
open(TXT, ">$textreadme") or die "Error: could not open $textreadme for writing.\n";
 | 
						|
open(HTML, ">$htmlreadme") or die "Error: could not open $htmlreadme for writing.\n";
 | 
						|
writeintro(\*TXT, \*HTML, @tools);
 | 
						|
 | 
						|
# Run each tool with --help flag
 | 
						|
foreach my $toolfile (@tools) {
 | 
						|
    my $cmd = "./$toolsdir/$toolfile --help";
 | 
						|
    my $output = `$cmd`;
 | 
						|
	if ($?) {
 | 
						|
		my $err = "Error: execution of '$cmd' failed with rc=" . ($?>>8) . ".\n";
 | 
						|
		print $err;
 | 
						|
		$output .= $err;
 | 
						|
	}
 | 
						|
	writetoolhelp(\*TXT, \*HTML, $toolfile, $output);
 | 
						|
}
 | 
						|
 | 
						|
# close files
 | 
						|
writeending(\*HTML);
 | 
						|
close TXT;
 | 
						|
close HTML;
 | 
						|
 | 
						|
exit;
 | 
						|
 | 
						|
 | 
						|
# get the list of tool script files.
 | 
						|
sub getToolList {
 | 
						|
	my $toolsdir = shift;
 | 
						|
 | 
						|
	# 1st get toplevel dir listing
 | 
						|
	opendir(DIR, $toolsdir) or die "Error: could not read $toolsdir.\n";
 | 
						|
	my @files = grep !/^\./, readdir(DIR);		# /
 | 
						|
	close(DIR);
 | 
						|
 | 
						|
	# remove files that are not regular files (not dirs) and executable
 | 
						|
	my @newlist;
 | 
						|
	foreach my $f (@files) {
 | 
						|
		my $file = "$toolsdir/$f";
 | 
						|
		if ((-f $file) && (-x $file)) { push @newlist, $f; }
 | 
						|
	}
 | 
						|
	#foreach (@files) { print "$_\n"; }
 | 
						|
	#foreach (@newlist) { print "$_\n"; }
 | 
						|
 | 
						|
	return sort @newlist;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
# print some text to both readmes
 | 
						|
sub printtoboth {
 | 
						|
	my $txt = shift;
 | 
						|
	my $html = shift;
 | 
						|
	my $str = shift;
 | 
						|
	print $txt $str;
 | 
						|
	print $html $str;
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
# write the up front stuff of the readme
 | 
						|
sub writeintro {
 | 
						|
	my $txt = shift;       # the file handle to the txt readme file
 | 
						|
	my $html = shift;       # the file handle to the html readme file
 | 
						|
	# the rest of @_ contains the tool files in the dir
 | 
						|
 | 
						|
	# write title part of readmes
 | 
						|
	print $txt <<'TXTEOS1';
 | 
						|
xCAT TOOL DESCRIPTIONS
 | 
						|
----------------------
 | 
						|
 | 
						|
TXTEOS1
 | 
						|
 | 
						|
	print $html <<'HTMLEOS1';
 | 
						|
<html>
 | 
						|
<head>
 | 
						|
  <title>xCAT Tool Descriptions</title>
 | 
						|
</head>
 | 
						|
<body>
 | 
						|
<h1 align="center">xCAT Tool Descriptions</h1>
 | 
						|
HTMLEOS1
 | 
						|
 | 
						|
	# write the table of contents for the html readme
 | 
						|
	print $html "<ul><li><a href='#Introduction'>Introduction</a>\n";
 | 
						|
	foreach my $tool (@_) {
 | 
						|
		print $html "<li><a href='#$tool'>$tool</a>\n";
 | 
						|
	}
 | 
						|
	print $html "</ul>\n";
 | 
						|
 | 
						|
	# write the intro
 | 
						|
	print $html "<a id='Introduction'></a><h2>Introduction</h2><p>\n";
 | 
						|
 | 
						|
	printtoboth $txt, $html, <<'EOS1';
 | 
						|
This is a list of additional tools that are provided by xCAT.  They are located
 | 
						|
in /opt/xcat/share/xcat/tools/, but should also be in your path.  Many of these
 | 
						|
tools have been contributed by xCAT users that are not part of the core xCAT
 | 
						|
development team.  That means they might not be supported as well as the main
 | 
						|
xCAT code.  Read the help here, take a look at the code, and use at your own
 | 
						|
risk.  If you have problems with a tool, post to the xCAT mailing list and
 | 
						|
the author will try to help you.
 | 
						|
EOS1
 | 
						|
 | 
						|
	print $html "</p>\n";
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
# write the help for one tool
 | 
						|
sub writetoolhelp {
 | 
						|
	my $txt = shift;       # the file handle to the txt readme file
 | 
						|
	my $html = shift;       # the file handle to the html readme file
 | 
						|
	my $toolname = shift;	# the script name of the tool
 | 
						|
	my $toolhelp = shift;	# the --help output from the tool
 | 
						|
 | 
						|
	# write the heading for this tool
 | 
						|
	print $txt <<"TXTEOS2";
 | 
						|
 | 
						|
 | 
						|
$toolname
 | 
						|
--------------------
 | 
						|
 | 
						|
TXTEOS2
 | 
						|
 | 
						|
	print $html <<"HTMLEOS2";
 | 
						|
<hr>
 | 
						|
<a id='$toolname'></a>
 | 
						|
<h2>$toolname</h2>
 | 
						|
<pre>
 | 
						|
HTMLEOS2
 | 
						|
 | 
						|
	# write the actual contents of the tool help
 | 
						|
	printtoboth $txt, $html, $toolhelp;
 | 
						|
 | 
						|
	# finish up
 | 
						|
	print $html <<"HTMLEOS3";
 | 
						|
</pre>
 | 
						|
HTMLEOS3
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
sub writeending {
 | 
						|
	my $html = shift;
 | 
						|
	# finish up the html readme
 | 
						|
	print $html <<'HTMLEOS4';
 | 
						|
</body>
 | 
						|
</html>
 | 
						|
HTMLEOS4
 | 
						|
} |