Fix syntax errors
[snf-image-creator] / image_creator / dialog_main.py
index 16282c2..9f4d7e8 100644 (file)
@@ -36,6 +36,7 @@
 import dialog
 import sys
 import os
+import stat
 import textwrap
 import signal
 import optparse
@@ -54,13 +55,13 @@ from image_creator.dialog_util import SMALL_WIDTH, WIDTH, confirm_exit, \
     Reset, update_background_title
 
 
-def image_creator(d, media, out):
+def image_creator(d, media, out, tmp):
 
     d.setBackgroundTitle('snf-image-creator')
 
     gauge = GaugeOutput(d, "Initialization", "Initializing...")
     out.add(gauge)
-    disk = Disk(media, out)
+    disk = Disk(media, out, tmp)
 
     def signal_handler(signum, frame):
         gauge.cleanup()
@@ -132,18 +133,25 @@ def image_creator(d, media, out):
 
 
 def select_file(d, media):
-    root = os.sep
+
+    if media == '/':
+        return '/'
+
+    default = os.getcwd() + os.sep
     while 1:
         if media is not None:
             if not os.path.exists(media):
                 d.msgbox("The file `%s' you choose does not exist." % media,
                          width=SMALL_WIDTH)
             else:
-                break
+                mode = os.stat(media).st_mode
+                if not stat.S_ISDIR(mode):
+                    break
+                default = media
 
-        (code, media) = d.fselect(root, 10, 60, extra_button=1,
+        (code, media) = d.fselect(default, 10, 60, extra_button=1,
                                   title="Please select an input media.",
-                                  extra_label="Running System")
+                                  extra_label="Bundle Host")
         if code in (d.DIALOG_CANCEL, d.DIALOG_ESC):
             if confirm_exit(d, "You canceled the media selection dialog box."):
                 sys.exit(0)
@@ -151,7 +159,7 @@ def select_file(d, media):
                 media = None
                 continue
         elif code == d.DIALOG_EXTRA:
-            media = '/'
+            return '/'
 
     return media
 
@@ -179,6 +187,9 @@ def main():
     parser.add_option("-l", "--logfile", type="string", dest="logfile",
                       default=None, help="log all messages to FILE",
                       metavar="FILE")
+    parser.add_option("--tmpdir", type="string", dest="tmp", default=None,
+                      help="create large temporary image files under DIR",
+                      metavar="DIR")
 
     options, args = parser.parse_args(sys.argv[1:])
 
@@ -192,7 +203,9 @@ def main():
             raise FatalError("You must run %s as root" %
                              parser.get_prog_name())
 
-        media = select_file(d, args[0] if len(args) == 1 else None)
+        if options.tmp is not None and not os.path.isdir(options.tmp):
+            raise FatalError("The directory `%s' specified with --tmpdir is "
+                             "not valid" % options.tmp)
 
         logfile = None
         if options.logfile is not None:
@@ -202,6 +215,9 @@ def main():
                 raise FatalError(
                     "Unable to open logfile `%s' for writing. Reason: %s" %
                     (options.logfile, e.strerror))
+
+        media = select_file(d, args[0] if len(args) == 1 else None)
+
         try:
             log = SimpleOutput(False, logfile) if logfile is not None \
                 else Output()
@@ -210,7 +226,7 @@ def main():
                     out = CompositeOutput([log])
                     out.output("Starting %s v%s..." %
                                (parser.get_prog_name(), version))
-                    ret = image_creator(d, media, out)
+                    ret = image_creator(d, media, out, options.tmp)
                     sys.exit(ret)
                 except Reset:
                     log.output("Resetting everything...")