import sys\r
import traceback\r
\r
+__author__ = 'ACES Developers'\r
+__copyright__ = 'Copyright (C) 2014 - 2015 - ACES Developers'\r
+__license__ = ''\r
+__maintainer__ = 'ACES Developers'\r
+__email__ = 'aces@oscars.org'\r
+__status__ = 'Production'\r
+\r
+__all__ = ['readText',\r
+ 'writeText',\r
+ 'Process',\r
+ 'ProcessList',\r
+ 'main']\r
+\r
\r
def readText(textFile):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
if (textFile != ""):\r
fp = open(textFile, 'rb')\r
# Create a text/plain message\r
return text\r
\r
\r
-# readText\r
-\r
def writeText(text, textFile):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
if (textFile != ""):\r
fp = open(textFile, 'wb')\r
# Create a text/plain message\r
return text\r
\r
\r
-# readText\r
-\r
class Process:\r
"""\r
- A process with logged output\r
+ A process with logged output.\r
"""\r
\r
def __init__(self,\r
cwd=None,\r
env=None,\r
batchWrapper=False):\r
- """Initialize the standard class variables"""\r
+ """\r
+ Initialize the standard class variables.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
self.cmd = cmd\r
if not description:\r
self.description = cmd\r
self.batchWrapper = batchWrapper\r
self.processKeys = []\r
\r
- # __init__\r
-\r
def getElapsedSeconds(self):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
import math\r
\r
if self.end and self.start:\r
formatted = None\r
return formatted\r
\r
- # getElapsedtime\r
-\r
def writeKey(self, writeDict, key=None, value=None, startStop=None):\r
- "Write a key, value pair in a supported format"\r
+ """\r
+ Writes a key / value pair in a supported format.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
if key != None and (value != None or startStop != None):\r
indent = '\t' * writeDict['indentationLevel']\r
if writeDict['format'] == 'xml':\r
"%s%40s : %s\n" % (indent, key, value))\r
\r
def writeLogHeader(self, writeDict):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
import platform\r
\r
# Retrieve operating environment information\r
\r
self.writeKey(writeDict, 'description', self.description)\r
self.writeKey(writeDict, 'cmd', self.cmd)\r
- if self.args: self.writeKey(writeDict, 'args', ' '.join(self.args))\r
+ if self.args:\r
+ self.writeKey(writeDict, 'args', ' '.join(self.args))\r
self.writeKey(writeDict, 'start', self.start)\r
self.writeKey(writeDict, 'end', self.end)\r
self.writeKey(writeDict, 'elapsed', self.getElapsedSeconds())\r
\r
self.writeKey(writeDict, 'status', self.status)\r
\r
- # writeLogHeader\r
-\r
def writeLogFooter(self, writeDict):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
writeDict['indentationLevel'] -= 1\r
self.writeKey(writeDict, 'process', None, 'stop')\r
\r
- # writeLogFooter\r
-\r
def writeLog(self, logHandle=sys.stdout, indentationLevel=0, format='xml'):\r
"""\r
- Write logging information to the specified handle\r
+ Writes logging information to the specified handle.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
"""\r
\r
writeDict = {}\r
\r
self.writeLogFooter(writeDict)\r
\r
- # writeLog\r
-\r
def writeLogToDisk(self, logFilename=None, format='xml', header=None):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
if logFilename:\r
try:\r
# This also doesn't seem like the best structure...\r
self.writeLog(logHandle)\r
logHandle.close()\r
\r
- # writeLogToDisk\r
-\r
def logLine(self, line):\r
- "Add a line of text to the log"\r
+ """\r
+ Adds a line of text to the log.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
self.log.append(line.rstrip())\r
if self.echo:\r
print("%s" % line.rstrip())\r
\r
- # logLine\r
-\r
def execute(self):\r
"""\r
- Execute this process\r
+ Executes the current process.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
"""\r
- import re\r
+\r
import datetime\r
import traceback\r
\r
self.status = exitCode\r
\r
self.end = datetime.datetime.now()\r
- # execute\r
-\r
\r
-# Process\r
\r
class ProcessList(Process):\r
"""\r
- A list of processes with logged output\r
+ A list of processes with logged output.\r
"""\r
\r
def __init__(self, description, blocking=True, cwd=None, env=None):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
Process.__init__(self, description, None, None, cwd, env)\r
"Initialize the standard class variables"\r
self.processes = []\r
self.blocking = blocking\r
\r
- # __init__\r
-\r
def generateReport(self, writeDict):\r
"""\r
- Generate a log based on the success of the child processes\r
+ Generates a log based on the success of the child processes.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
"""\r
+\r
if self.processes:\r
_status = True\r
indent = '\t' * (writeDict['indentationLevel'] + 1)\r
self.status = -1\r
\r
def writeLogHeader(self, writeDict):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
self.writeKey(writeDict, 'processList', None, 'start')\r
writeDict['indentationLevel'] += 1\r
\r
\r
self.writeKey(writeDict, 'status', self.status)\r
\r
- # writeLogHeader\r
-\r
def writeLogFooter(self, writeDict):\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
writeDict['indentationLevel'] -= 1\r
self.writeKey(writeDict, 'processList', None, 'stop')\r
\r
- # writeLogFooter\r
-\r
def writeLog(self, logHandle=sys.stdout, indentationLevel=0, format='xml'):\r
"""\r
- Write logging information to the specified handle\r
+ Writes logging information to the specified handle.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
"""\r
\r
writeDict = {}\r
\r
self.writeLogFooter(writeDict)\r
\r
- # writeLog\r
-\r
def execute(self):\r
"""\r
- Execute this list of processes\r
+ Executes the list of processes.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
"""\r
+\r
import datetime\r
\r
self.start = datetime.datetime.now()\r
break\r
\r
self.end = datetime.datetime.now()\r
- # execute\r
-\r
\r
-# ProcessList\r
\r
def main():\r
+ """\r
+ Object description.\r
+\r
+ Parameters\r
+ ----------\r
+ parameter : type\r
+ Parameter description.\r
+\r
+ Returns\r
+ -------\r
+ type\r
+ Return value description.\r
+ """\r
+\r
import optparse\r
\r
p = optparse.OptionParser(description='A process logging script',\r