diff --git a/scripts/gen.py b/scripts/gen.py index 29f6454..399b6ab 100644 --- a/scripts/gen.py +++ b/scripts/gen.py @@ -101,8 +101,15 @@ def copy_mbusb_dir_usb(usb_disk): :param usb_mount_path: Path to USB mount. :return: """ +# from .iso import iso_size + from .usb import details, PartitionNotMounted + + try: + usb_details = details(usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return False - usb_details = config.usb_details usb_mount_path = usb_details['mount_point'] result = '' if not os.path.exists(os.path.join(usb_mount_path, "multibootusb")): @@ -150,7 +157,7 @@ def copy_mbusb_dir_usb(usb_disk): if not os.path.exists(os.path.join(usb_mount_path, 'multibootusb', 'grub', 'core-msdos.img')): shutil.copy(resource_path(os.path.join('data', 'multibootusb', 'grub', 'core-msdos.img')), os.path.join(usb_mount_path, 'multibootusb', 'grub', 'core-msdos.img')) - + if not os.path.exists(os.path.join(usb_mount_path, 'multibootusb', 'grub', 'x86_64-efi')): log("New EFI modules does not exist. Copying now.") shutil.copytree(resource_path(os.path.join('data', 'multibootusb', 'grub', 'x86_64-efi')), @@ -208,8 +215,13 @@ def strings(filename, _min=4): def size_not_enough(iso_link, usb_disk): from .iso import iso_size + from .usb import details, PartitionNotMounted isoSize = iso_size(iso_link) - usb_details = config.usb_details + try: + usb_details = details(usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return False usb_size = usb_details['size_free'] return bool(isoSize > usb_size) @@ -351,7 +363,7 @@ class MemoryCheck(): Cross platform way to checks memory of a given system. Works on Linux and Windows. psutil is a good option to get memory info. But version 5.0 and only will work. Source: https://doeidoei.wordpress.com/2009/03/22/python-tip-3-checking-available-ram-with-python/ - Call this class like this: + Call this class like this: mem_info = memoryCheck() print(mem_info.value) """ @@ -396,8 +408,8 @@ class MemoryCheck(): """ totalMemory = os.popen("free -m").readlines()[1].split()[1] return int(totalMemory) - + if __name__ == '__main__': log(quote("""Test-string""")) log(has_digit("test-string-with-01-digit")) diff --git a/scripts/install.py b/scripts/install.py index 5de34a4..948d73b 100644 --- a/scripts/install.py +++ b/scripts/install.py @@ -159,8 +159,12 @@ def install_progress(): :return: """ from . import progressbar + try: + usb_details = details(config.usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return - usb_details = config.usb_details config.usb_mount = usb_details['mount_point'] usb_size_used = usb_details['size_used'] thrd = threading.Thread(target=install_distro, name="install_progress") diff --git a/scripts/mbusb_cli.py b/scripts/mbusb_cli.py index 7ec2266..4748456 100644 --- a/scripts/mbusb_cli.py +++ b/scripts/mbusb_cli.py @@ -55,7 +55,11 @@ def cli_install_distro(): # log(config.image_path + ' failed to pass integrity check...') # exit(1) else: - usb_details = details(config.usb_disk) + try: + usb_details = details(config.usb_disk) + except PartitionNotMounted as e: + log(str(e)) + exit(1) config.usb_mount = usb_details['mount_point'] config.usb_uuid = usb_details['uuid'] config.usb_label = usb_details['label'] diff --git a/scripts/mbusb_gui.py b/scripts/mbusb_gui.py index af10cd9..ad629f4 100644 --- a/scripts/mbusb_gui.py +++ b/scripts/mbusb_gui.py @@ -160,7 +160,7 @@ class AppGui(qemu.Qemu, Imager, QtWidgets.QMainWindow, Ui_MainWindow): """ self.ui.installed_distros.clear() config.usb_disk = osdriver.listbox_entry_to_device( - self.ui.combo_drives.currentText()) + self.ui.combo_drives.currentText()) if config.usb_disk == 0 or config.usb_disk: # Get the GPT status of the disk and store it on a variable try: diff --git a/scripts/syslinux.py b/scripts/syslinux.py index 78d92c7..f65ca75 100644 --- a/scripts/syslinux.py +++ b/scripts/syslinux.py @@ -135,7 +135,12 @@ def syslinux_default(usb_disk): :version: Default version is 4. Change it if you wish. But necessary files needs to be copied accordingly :return: Bootable USB disk :-) """ - usb_details = usb.details(usb_disk) + try: + usb_details = usb.details(config.usb_disk) + except usb.PartitionNotMounted as e: + log(str(e)) + return False + usb_fs = usb_details['file_system'] usb_mount = usb_details['mount_point'] mbr_bin = get_mbr_bin_path(usb_disk) @@ -276,7 +281,12 @@ def syslinux_distro_dir(usb_disk, iso_link, distro): :param iso_link: Path to ISO file :return: """ - usb_details = usb.details(usb_disk) + try: + usb_details = usb.details(config.usb_disk) + except usb.PartitionNotMounted as e: + log(str(e)) + return + usb_fs = usb_details['file_system'] usb_mount = usb_details['mount_point'] isolinux_bin_dir(iso_link) diff --git a/scripts/uninstall_distro.py b/scripts/uninstall_distro.py index c543790..5f4f99f 100644 --- a/scripts/uninstall_distro.py +++ b/scripts/uninstall_distro.py @@ -21,7 +21,12 @@ def install_distro_list(): List all distro names installed by previous install :return: List of distro names as list """ - usb_details = config.usb_details + try: + usb_details = details(config.usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return + config.usb_mount = usb_details['mount_point'] sys_cfg_file = os.path.join(config.usb_mount, "multibootusb", "syslinux.cfg") @@ -54,7 +59,12 @@ def delete_frm_file_list(iso_file_list, uninstall_distro_dir_name): :param config.uninstall_distro_dir_name: Directory where the distro is installed :return: """ - usb_details = config.usb_details + try: + usb_details = details(config.usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return + usb_mount = usb_details['mount_point'] if iso_file_list is not None: for f in iso_file_list: @@ -100,7 +110,11 @@ def do_uninstall_distro(target_distro, uninstall_distro_dir_name): :param uninstall_distro_dir_name: Directory where the distro is installed :return: """ - usb_details = config.usb_details + try: + usb_details = details(config.usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return usb_mount = usb_details['mount_point'] if platform.system() == 'Linux': @@ -218,7 +232,12 @@ def uninstall_progress(): :return: """ from . import progressbar - usb_details = config.usb_details + try: + usb_details = details(config.usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return + usb_mount = usb_details['mount_point'] uninstall_distro_dir_name = config.uninstall_distro_dir_name \ diff --git a/scripts/update_cfg_file.py b/scripts/update_cfg_file.py index f509146..8aae75f 100644 --- a/scripts/update_cfg_file.py +++ b/scripts/update_cfg_file.py @@ -126,7 +126,12 @@ def update_distro_cfg_files(iso_link, usb_disk, distro, persistence=0): Main function to modify/update distro specific strings on distro config files. :return: """ - usb_details = config.usb_details + try: + usb_details = details(config.usb_disk) + except PartitionNotMounted as e: + log(str(e)) + return + usb_mount = usb_details['mount_point'] usb_uuid = usb_details['uuid'] usb_label = usb_details['label'] diff --git a/scripts/usb.py b/scripts/usb.py index 904ef10..6121f0e 100644 --- a/scripts/usb.py +++ b/scripts/usb.py @@ -30,6 +30,12 @@ if platform.system() == 'Windows': import win32com.client +class PartitionNotMounted(Exception): + + def __init__(self, partition): + self.message = 'Partition is not mounted: {}'.format(partition) + + def is_block(usb_disk): """ Function to detect if the USB is block device @@ -281,7 +287,7 @@ def details_udev(usb_disk_part): fdisk_cmd = 'LANG=C fdisk -l ' + usb_disk_part + \ ' | grep "^Disk /" | sed -re "s/.*\s([0-9]+)\sbytes.*/\\1/"' size_total = subprocess.check_output(fdisk_cmd, shell=True).strip() - size_used = "" + size_used = 0 size_free = 0 mount_point = "" @@ -344,9 +350,7 @@ def details_udisks2(usb_disk_part): size_total, size_used, size_free = \ shutil.disk_usage(mount_point)[:3] else: - size_total = str('No_Mount') - size_used = str('No_Mount') - size_free = 0 + raise PartitionNotMounted(usb_disk_part) return {'uuid': uuid, 'file_system': file_system, 'label': label, 'mount_point': mount_point, 'size_total': size_total, 'size_used': size_used, 'size_free': size_free,