|
|
|
#!/bin/echo "This module must be imported by other Python scripts."
|
|
|
|
|
|
|
|
import os, subprocess, colorama
|
|
|
|
|
|
|
|
colorama.init()
|
|
|
|
|
|
|
|
# Text styling and printing utilities.
|
|
|
|
|
|
|
|
class style:
|
|
|
|
heading = '\033[95m'
|
|
|
|
info = '\033[96m'
|
|
|
|
success = '\033[92m'
|
|
|
|
warning = '\033[93m'
|
|
|
|
error = '\033[91m'
|
|
|
|
bold = '\033[1m'
|
|
|
|
underline = '\033[4m'
|
|
|
|
none = '\033[0m'
|
|
|
|
|
|
|
|
def printHeading( *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.heading + " ".join( map( str, args ) ) + style.none, **kwargs )
|
|
|
|
|
|
|
|
def printInfo( *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.info + " ".join( map( str, args ) ) + style.none, **kwargs )
|
|
|
|
|
|
|
|
def printSuccess( *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.success + " ".join( map( str, args ) ) + style.none, **kwargs )
|
|
|
|
|
|
|
|
def printWarning( *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.warning + "warning: " + style.none + " ".join( map( str, args ) ), **kwargs )
|
|
|
|
|
|
|
|
def printError( *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.error + "error: " + style.none + " ".join( map( str, args ) ), **kwargs )
|
|
|
|
|
|
|
|
def printBold( *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.bold + " ".join( map( str, args ) ) + style.none, **kwargs )
|
|
|
|
|
|
|
|
def printUnderline( *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.underline + " ".join( map( str, args ) ) + style.none, **kwargs )
|
|
|
|
|
|
|
|
def printItem( key, *args, **kwargs ):
|
|
|
|
|
|
|
|
print( style.bold + key + style.none + " ".join( map( str, args ) ), **kwargs )
|
|
|
|
|
|
|
|
# Command utilities.
|
|
|
|
|
|
|
|
def runCommand( command ):
|
|
|
|
|
|
|
|
printInfo( command )
|
|
|
|
|
|
|
|
if os.system( command ) != 0:
|
|
|
|
printError( "Command exited with error." )
|
|
|
|
raise SystemExit( 1 )
|
|
|
|
|
|
|
|
def captureCommandOutput( command ):
|
|
|
|
|
|
|
|
printInfo( command )
|
|
|
|
|
|
|
|
try:
|
|
|
|
result = subprocess.check_output( command, shell = True )
|
|
|
|
return result.decode( "utf-8" ).rstrip()
|
|
|
|
except:
|
|
|
|
printError( "Command exited with error." )
|
|
|
|
raise SystemExit( 1 )
|
|
|
|
|
|
|
|
# Path utilities.
|
|
|
|
|
|
|
|
def basePathAtSource( sourceFile ):
|
|
|
|
|
|
|
|
return os.path.dirname( os.path.realpath( sourceFile ) )
|
|
|
|
|
|
|
|
def joinPath( component1, component2, *components ):
|
|
|
|
|
|
|
|
return os.path.normpath( os.path.join( component1, component2, *components ) )
|
|
|
|
|
|
|
|
# String utilities.
|
|
|
|
def splitDelimitedString( string ):
|
|
|
|
|
|
|
|
return filter( None, set( [ s.strip() for s in string.split( ',' ) ] ) )
|
|
|
|
|