← Back to team overview

spv-dev team mailing list archive

lp:~jmartel/slidepresenterview/fix-ui-files-generation-return-code into lp:slidepresenterview

 

John Martel has proposed merging lp:~jmartel/slidepresenterview/fix-ui-files-generation-return-code into lp:slidepresenterview.

Requested reviews:
  SlidePresenterView Development Team (spv-dev)


Make sure that a non-zero return code is returned by gen_ui.py if the command that generates the .py files from .ui and .qrc fails.
-- 
https://code.launchpad.net/~jmartel/slidepresenterview/fix-ui-files-generation-return-code/+merge/27392
Your team SlidePresenterView Development Team is requested to review the proposed merge of lp:~jmartel/slidepresenterview/fix-ui-files-generation-return-code into lp:slidepresenterview.
=== modified file 'tools/gen_ui.py'
--- tools/gen_ui.py	2010-05-02 22:18:27 +0000
+++ tools/gen_ui.py	2010-06-11 18:43:29 +0000
@@ -54,10 +54,10 @@
     except ImportError:
         print >> sys.stderr, "ERROR: PyQt4 not found."
         sys.exit(1)
-        
+
 pyqtcfg = get_pyqt4_config() # pylint: disable-msg=C0103
 pyqt_bin_dir = pyqtcfg.pyqt_bin_dir
-        
+
 
 def _list_files(extension, dir_):
     """
@@ -65,55 +65,55 @@
     @param dir: where to find files (relative to BASE_DIR and not recursive)
     @return: list of files names
     """
-    
+
     full_path = os.path.join(_base_path, dir_)
-    
+
     if not os.path.isdir(full_path):
         print >> sys.stderr, "WARN: Path %s is not a directory." % full_path
         return []
-        
+
     files = [os.path.join(full_path, file_)
                    for file_ in os.listdir(full_path)
                    if file_.endswith('.%s' % extension)]
-        
+
     return files
 
-    
+
 def _get_output_dir():
     dir_rel = OUT_PACKAGE.replace('.', os.path.sep)
     return os.path.join(_src_path, dir_rel)
-    
-            
+
+
 def generate_ui_and_qrc():
+    out_dir = _get_output_dir()
+
+    _generate_ui(out_dir)
+    _generate_qrc(out_dir)
+
+
+def _generate_py_files(src_files, forge_py_method, command, out_dir):
+    for src_file in src_files:
+        py_file = forge_py_method(src_file, out_dir)
+        vars_ = {'SRC': unicode(src_file),
+                 'DEST': py_file,
+                 'CMD': unicode(os.path.join(pyqt_bin_dir, command))}
+        cmd = '%(CMD)s -o "%(DEST)s" "%(SRC)s"' % vars_
+        print 'building: %s' % cmd
+        return_code = os.system(cmd)
+        if return_code != 0:
+            print >> sys.stderr, "Command failed: %s" % cmd
+            sys.exit(return_code)
+
+
+def _generate_ui(out_dir):
     ui_files = _list_files('ui', UI_DIR)
+    _generate_py_files(ui_files, _forge_py_file_from_ui, PYUIC4_CMD, out_dir)
+
+
+def _generate_qrc(out_dir):
     qrc_files = _list_files('qrc', QRC_DIR)
-    out_dir = _get_output_dir()
-    
-    _generate_ui(ui_files, out_dir)
-    _generate_qrc(qrc_files, out_dir)
-
-def _generate_ui(ui_files, out_dir):
-    for ui_file in ui_files:
-        py_file = _forge_py_file_from_ui(ui_file, out_dir)
-        vars_ = {'SRC': ui_file, 
-                'DEST': py_file,
-                'CMD': os.path.join(pyqt_bin_dir, PYUIC4_CMD)}
-        cmd = '%(CMD)s -o "%(DEST)s" "%(SRC)s"' % vars_
-        
-        print 'building: %s' % cmd
-        os.system(cmd)
-
-def _generate_qrc(qrc_files, out_dir):
-    for qrc_file in qrc_files:
-        py_file = _forge_py_file_from_qrc(qrc_file, out_dir)
-        vars_ = {'SRC': unicode(qrc_file), 
-                'DEST': py_file,
-                'CMD': unicode(os.path.join(pyqt_bin_dir, PYRCC4_CMD))}
-        cmd = '%(CMD)s -o "%(DEST)s" "%(SRC)s"' % vars_
-        
-        print 'building: %s' % cmd
-        os.system(cmd)
-        
+    _generate_py_files(qrc_files, _forge_py_file_from_qrc, PYRCC4_CMD, out_dir)
+
 
 def clean_ui_and_qrc():
     ui_files = _list_files('ui', UI_DIR)
@@ -121,32 +121,32 @@
     out_dir = _get_output_dir()
 
     py_files = []
-    
+
     for ui_file in ui_files:
         py_file = _forge_py_file_from_ui(ui_file, out_dir)
         py_files.append(py_file)
-    
+
     for qrc_file in qrc_files:
         py_file = _forge_py_file_from_qrc(qrc_file, out_dir)
         py_files.append(py_file)
-        
+
     for py_file in py_files:
         if os.path.isfile(py_file):
             print 'removing: %s' % py_file
             os.remove(py_file)
 
-        
+
 def _forge_py_file_from_ui(ui_file, out_dir):
     file_name = os.path.basename(ui_file[:-3])
     file_name = "%s%s.py" % (UI_OUTPUT_PREFIX, file_name)
     file_path = os.path.join(out_dir, file_name)
     return file_path
-        
+
 def _forge_py_file_from_qrc(qrc_file, out_dir):
     file_name = os.path.basename(qrc_file[:-4])
     file_name = "%s%s.py" % (file_name, QRC_OUTPUT_POSTFIX)
     file_path = unicode(os.path.join(out_dir, file_name))
-    return file_path     
+    return file_path
 
 
 if __name__ == '__main__':


Follow ups