c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer################################################################################
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Creates MiniMods xml descriptions for HetsLiveCD.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# MiniMods are used to extend a MainMod. In this case they are used to map
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# complete directories to the root filesystem.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Author: Thiemo Wiedemeyer
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# E-Mail: raider@informatik.uni-bremen.de
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer################################################################################
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyerfrom colorprint import printStart, printInfo, printExit
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# creates a MiniMod xml description with the givin name. All files and
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# directories from source are mapped through the base directory dest on the
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param name Name of the MiniMod.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param source Source directory that should be mapped.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param dest Base directory on the LiveCD where the source directory should
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer printStart("Creating mini mod xml file...")
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer printInfo("opening file '%sMini.xml'..." % (name))
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer addFiles(xml, os.path.abspath(source), dest)
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer printExit("...mini mod xml file created!",0)
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Adds all content from source directory to the dest directory on the LiveCD.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param xml Opened fileobject of the xml file.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param source Source directory that should be mapped.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param dest Base directory on the LiveCD where the source directory should
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer printInfo("adding content from '%s'..." % (source))
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer if os.path.isfile(file) or os.path.islink(file):
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer xml.write(addFile(file, os.path.join(dest, item)))
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer addFiles(xml, file, os.path.join(dest, item))
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Return the xml string for a file mapping from source to dest.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param source Source path of a file that should be mapped.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param dest Destination path of the mapping.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @return The xml string for the mapping.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <local>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <from>%s</from>\n" % (convertStr(source)) +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Return the head of the MiniMod xml file.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param name Name of the MiniMod.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @return A xml string containing the header.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer "<comps>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <group>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <minimod>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <version>0.0.1</version>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <description>Created for HetsLiveCD</description>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <maintag>ALL</maintag>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <bootoption>ALL</bootoption>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " <root>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Return the tail of the MiniMod xml file.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @return A xml string containing the footer.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " </files>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " </root>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " </minimod>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer " </group>\n" +\
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Converts some character to the xml representation.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @param str Sting to convert.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# @return Converted string.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer# Prints a usage message to the console.
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print "Usage:"
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print " %s name source dest" % os.path.split(sys.argv[0])[1]
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print "Options: Description:"
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print " name name of the mini mod."
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print " source directory containing the files that should be stored in the mini mod."
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print " dest destination on the live cd filesystem, where the files should appear."
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer # Check argument count
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print "Wrong parameter count."
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer # Check if second argument is a valid directory
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer print "Parameter is no existing directory."
c68f68e340b20c00117a171804c9ed93c6306ac9Thiemo Wiedemeyer # Start xml creation