diff options
Diffstat (limited to 'tools/release/utils.py')
-rw-r--r-- | tools/release/utils.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tools/release/utils.py b/tools/release/utils.py new file mode 100644 index 0000000000..c72ab2d91f --- /dev/null +++ b/tools/release/utils.py @@ -0,0 +1,52 @@ +import string + +import os + +class failure_exception: + def __init__( self, rc ): + self.rc_ = rc + + def __str__( self ): + return "rc: %d" % self.rc_ + +def system( commands ): + if os.path.exists( "tmp.cmd" ): + os.chmod( "tmp.cmd", 0777 ) + os.unlink( "tmp.cmd" ) + + f = open( "tmp.cmd", "w" ) + f.write( string.join( commands, "\n" ) ) + f.close() + rc = os.system( "tmp.cmd" ) + os.chmod( "tmp.cmd", 0777 ) + os.unlink( "tmp.cmd" ) + return rc + +def checked_system( commands, valid_return_codes = [ 0 ] ): + rc = system( commands ) + if rc not in [ 0 ] + valid_return_codes: raise failure_exception( rc ) + return rc + +class step_controller: + def __init__( self, start_step ): + self.current_step_ = None; + self.skip_to_step_ = start_step + + def start_step( self, step_name, start_message ): + self.current_step_ = step_name + if self.is_skipping( step_name ): + print "[%s] Skipping." % step_name + return 0 + else: + self.skip_to_step_ = "" + print "[%s] %s" % ( step_name, start_message ) + return 1 + + def finish_step( self, step_name ): + print "[%s] Finished" % step_name + + def is_skipping( self, step_name = None ): + if step_name is None: step_name = self.current_step_ + return self.skip_to_step_ != "" and self.skip_to_step_ != step_name + + |