summaryrefslogtreecommitdiff
path: root/tools/release/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/release/utils.py')
-rw-r--r--tools/release/utils.py52
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
+
+