mirror of
https://github.com/xcat2/xcat-core.git
synced 2025-05-21 19:22:05 +00:00
of prebuilt and custom kits. - prebuilt kits are HPC software kits , complete kits, that are ready to use - custom kits will describe the kit framework and have instructions to help users create their own software kits
141 lines
4.5 KiB
Python
Executable File
141 lines
4.5 KiB
Python
Executable File
#!/usr/bin/env python
|
|
#TODO: Delete the old files to support removing a man page
|
|
|
|
import glob
|
|
import os
|
|
import sys
|
|
import subprocess
|
|
from glob import glob
|
|
import shutil
|
|
|
|
from optparse import OptionParser
|
|
|
|
usage = "usage: %prog [options]"
|
|
|
|
parser = OptionParser(usage=usage)
|
|
parser.add_option("--prefix", dest="PREFIX", help="Specify the location of the Perl modules")
|
|
|
|
(options, args) = parser.parse_args()
|
|
|
|
POD2RST="pod2rst"
|
|
|
|
def cmd_exists(cmd):
|
|
return subprocess.call("type " + cmd, shell=True,
|
|
stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0
|
|
|
|
prefix_path = None
|
|
prefix_lib_path = None
|
|
|
|
if options.PREFIX:
|
|
if '~' in options.PREFIX:
|
|
# else assume full path is provided
|
|
prefix_path = os.path.expanduser(options.PREFIX)
|
|
else:
|
|
prefix_path = options.PREFIX
|
|
|
|
if not cmd_exists("%s/bin/pod2rst" %(prefix_path)):
|
|
print "ERROR, %s requires pod2rst, not found in %s/bin/" %(os.path.basename(__file__), prefix_path)
|
|
parser.print_help()
|
|
sys.exit(1)
|
|
|
|
prefix_lib_path = "%s/lib" %(prefix_path)
|
|
if not os.path.isdir(prefix_lib_path):
|
|
prefix_lib_path = "%s/lib64" %(prefix_path)
|
|
if not os.path.isdir(prefix_lib_path):
|
|
print "ERROR, Cannot find the Perl lib directory in %s/lib or %s/lib64" %(prefix_path, prefix_path)
|
|
sys.exit(1)
|
|
|
|
else:
|
|
if not cmd_exists(POD2RST):
|
|
print "ERROR, %s requires pod2rst to continue!" %(os.path.basename(__file__))
|
|
parser.print_help()
|
|
sys.exit(1)
|
|
|
|
|
|
# the location relativate to xcat-core where the man pages will go
|
|
MANPAGE_DEST="./docs/source/guides/admin-guides/references/man"
|
|
|
|
#
|
|
# add the following to delete the generate files before creating them
|
|
# essentially this allows us to remove man pages and they will be
|
|
# removed in the generation
|
|
print "Cleaning up the generated man pages in %s" %(MANPAGE_DEST)
|
|
allfiles = glob("%s*/*.rst" %(MANPAGE_DEST))
|
|
for d in allfiles:
|
|
# Skip over the index.rst file
|
|
if not "index.rst" in d:
|
|
print "Removing file %s" %(d)
|
|
os.remove(d)
|
|
|
|
# The database man pages are created in the perl-xCAT subdirectory
|
|
# using the db2man script
|
|
def build_db_man_pages():
|
|
thepwd = os.getcwd()
|
|
os.chdir("perl-xCAT")
|
|
cmd = "./db2man"
|
|
os.system(cmd)
|
|
os.chdir(thepwd)
|
|
|
|
def cleanup_db_man_pages_dir():
|
|
shutil.rmtree("perl-xCAT/pods")
|
|
shutil.rmtree("perl-xCAT/share")
|
|
|
|
def fix_vertical_bar(rst_file):
|
|
# Verical bar can not appear with spaces around it, otherwise
|
|
# it gets displayed as a link in .html
|
|
sed_cmd = "sed 's/\*\*\\\ |\\\ \*\*/ | /g' %s > %s.sed1" %(rst_file, rst_file)
|
|
os.system(sed_cmd)
|
|
|
|
def fix_double_dash(rst_file):
|
|
# -- gets displayed in .html as a sinle long dash, need to insert
|
|
# a non bold space between 2 dashes
|
|
sed_cmd = "sed '/\*\*/s/--/-\*\*\\\ \*\*-/g' %s.sed1 > %s" %(rst_file, rst_file)
|
|
os.system(sed_cmd)
|
|
#remove intermediate .sed1 file
|
|
rm_sed1file_cmd = "rm %s.sed1" %(rst_file)
|
|
os.system(rm_sed1file_cmd)
|
|
|
|
build_db_man_pages()
|
|
|
|
# List the xCAT component directory which contain pod pages
|
|
COMPONENTS = ['xCAT-SoftLayer', 'xCAT-test', 'xCAT-client', 'xCAT-vlan', 'perl-xCAT', 'xCAT-buildkit']
|
|
|
|
for component in COMPONENTS:
|
|
for root,dirs,files in os.walk("%s" %(component)):
|
|
|
|
for file in files:
|
|
# only interested in .pod files
|
|
if file.endswith(".pod"):
|
|
pod_input = os.path.join(root,file)
|
|
|
|
filename = os.path.basename(pod_input)
|
|
# get the man version (1,3,5,8,etc)
|
|
man_ver = filename.split('.')[1]
|
|
# title is needed to pass to pod2rst
|
|
title = filename.split('.')[0]
|
|
|
|
DESTINATION = "%s%s" %(MANPAGE_DEST, man_ver)
|
|
try:
|
|
os.stat(DESTINATION)
|
|
except:
|
|
# Create the directory if it does not exist
|
|
os.mkdir(DESTINATION)
|
|
|
|
outputFile = filename.replace("pod", "rst")
|
|
rst_output = "%s/%s" %(DESTINATION, outputFile)
|
|
|
|
# generate the pod2rst command
|
|
cmd = "%s" %(POD2RST)
|
|
if options.PREFIX:
|
|
cmd = "perl -I %s/share/perl5 %s/bin/%s " %(prefix_path, prefix_path, POD2RST)
|
|
|
|
cmd += " --infile=%s --outfile=%s --title=%s.%s" %(pod_input, rst_output, title, man_ver)
|
|
print cmd
|
|
os.system(cmd)
|
|
if man_ver == '1' or man_ver == '8':
|
|
fix_vertical_bar(rst_output)
|
|
fix_double_dash(rst_output)
|
|
|
|
cleanup_db_man_pages_dir()
|
|
|