Beispiel #1
0
def backup_with_prompt_on_done(path):
    global prompt_parameters

    if os.path.exists(path) == True:

        if sublime.version()[0] == "2":
            if sublime.ok_cancel_dialog(
                    "Backup already exists @ %s \nReplace it?" % path, "Continue") == True:
                prompt_parameters["operation_to_perform"](path)

            else:
                tools.packagesync_cancelled()
        else:
            confirm_override = sublime.yes_no_cancel_dialog(
                "Backup already exists @ %s \nReplace it?" % path, "Continue")

            if confirm_override == sublime.DIALOG_YES:
                prompt_parameters["operation_to_perform"](path)
            elif sublime.version()[0] == "3" and confirm_override == sublime.DIALOG_NO:
                prompt_parameters["initial_text"] = path
                prompt_for_location()
            else:
                tools.packagesync_cancelled()

    elif os.path.isabs(os.path.dirname(path)) == True:
        prompt_parameters["operation_to_perform"](path)

    else:
        sublime.error_message("Please provide a valid path for backup.")
        prompt_parameters["initial_text"] = path
        prompt_for_location()
Beispiel #2
0
    def backup_pkg_list(self, backup_path):
        if backup_path is not None:
            try:
                package_control_settings = sublime.load_settings(
                    "Package Control.sublime-settings")
                installed_packages = package_control_settings.get(
                    "installed_packages") or []

                if os.path.isfile(backup_path):
                    os.remove(backup_path)
                elif not os.path.exists(os.path.dirname(backup_path)):
                    os.makedirs(os.path.dirname(backup_path))

                with open(backup_path, "w") as _backupFile:
                    json.dump({"installed_packages": installed_packages},
                              _backupFile,
                              indent=4)

                tools.log(
                    "PackageSync: Backup of installed packages list created at %s"
                    % backup_path)
            except Exception as e:
                tools.log(
                    "PackageSync: Error while backing up installed packages list",
                    force=True)
                tools.log("PackageSync: Error message: %s" % str(e),
                          force=True)
        else:
            tools.packagesync_cancelled()
Beispiel #3
0
def backup_with_prompt_on_done(path):
    global prompt_parameters

    if os.path.exists(path) == True:

        if sublime.version()[0] == "2":
            if sublime.ok_cancel_dialog(
                    "Backup already exists @ %s \nReplace it?" % path,
                    "Continue") == True:
                prompt_parameters["operation_to_perform"](path)

            else:
                tools.packagesync_cancelled()
        else:
            confirm_override = sublime.yes_no_cancel_dialog(
                "Backup already exists @ %s \nReplace it?" % path, "Continue")

            if confirm_override == sublime.DIALOG_YES:
                prompt_parameters["operation_to_perform"](path)
            elif sublime.version(
            )[0] == "3" and confirm_override == sublime.DIALOG_NO:
                prompt_parameters["initial_text"] = path
                prompt_for_location()
            else:
                tools.packagesync_cancelled()

    elif os.path.isabs(os.path.dirname(path)) == True:
        prompt_parameters["operation_to_perform"](path)

    else:
        sublime.error_message("Please provide a valid path for backup.")
        prompt_parameters["initial_text"] = path
        prompt_for_location()
Beispiel #4
0
    def restore_zip(self, backup_path):
        if backup_path is not None:
            try:
                tools.log(
                    "PackageSync: Restoring package list & user settings from %s"
                    % backup_path,
                    force=True)
                # Backup PackageSync user settings before restore operation
                packagesync_settings_backup = os.path.join(
                    tempfile.gettempdir(), str(time.time()))
                packagesync_settings_original = os.path.join(
                    tools.user_settings_folder, "PackageSync.sublime-settings")
                # Verify that user setting are present before backing up
                if os.path.exists(packagesync_settings_original):
                    shutil.copy2(packagesync_settings_original,
                                 packagesync_settings_backup)
                    tools.log(
                        "PackageSync: PackageSync.sublime-settings backed up to %s"
                        % packagesync_settings_backup,
                        force=True)

                if os.path.exists(tools.temp_restore_folder):
                    shutil.rmtree(tools.temp_restore_folder, True)

                # Extract to temp restore folder & then perform restore operation
                # as per the preserve setting
                #
                # Sublime 2 has Python 2.6.9 as interpreter. So using with zipfile.ZipFile would not work
                # Therefore explicitly open & close the zip file for operation
                z = zipfile.ZipFile(backup_path, "r")
                z.extractall(tools.temp_restore_folder)
                z.close()

                offline.restore_from_temp()

                # Restore PackageSync user settings if they were backed up
                if os.path.exists(
                        packagesync_settings_backup
                ) and not os.path.exists(packagesync_settings_original):
                    shutil.copy2(packagesync_settings_backup,
                                 packagesync_settings_original)
                    tools.log(
                        "PackageSync: PackageSync.sublime-settings restored from %s"
                        % packagesync_settings_backup,
                        force=True)

                tools.install_new_packages()

            except Exception as e:
                tools.log(
                    "PackageSync: Error while restoring packages from zip file",
                    force=True)
                tools.log("PackageSync: Error message: %s" % str(e),
                          force=True)
        else:
            tools.packagesync_cancelled()
Beispiel #5
0
    def restore_folder(self, backup_path):
        if backup_path is not None:
            try:
                tools.log(
                    "PackageSync: Restoring package list & user settings from %s"
                    % backup_path,
                    force=True)
                # Backup PackageSync user settings before restore operation
                packagesync_settings_backup = os.path.join(
                    tempfile.gettempdir(), str(time.time()))
                packagesync_settings_original = os.path.join(
                    tools.user_settings_folder, "PackageSync.sublime-settings")
                # Verify that user setting are present before backing up
                if os.path.exists(packagesync_settings_original):
                    shutil.copy2(packagesync_settings_original,
                                 packagesync_settings_backup)
                    tools.log(
                        "PackageSync: PackageSync.sublime-settings backed up to %s"
                        % packagesync_settings_backup,
                        force=True)

                if os.path.exists(tools.temp_restore_folder):
                    shutil.rmtree(tools.temp_restore_folder, True)
                # Copy to temp restore folder & restore as per the preserve
                # setting
                shutil.copytree(backup_path, tools.temp_restore_folder)
                offline.restore_from_temp()

                # Restore PackageSync user settings if they were backed up
                if os.path.exists(
                        packagesync_settings_backup
                ) and not os.path.exists(packagesync_settings_original):
                    shutil.copy2(packagesync_settings_backup,
                                 packagesync_settings_original)
                    tools.log(
                        "PackageSync: PackageSync.sublime-settings restored from %s"
                        % packagesync_settings_backup,
                        force=True)

                tools.install_new_packages()

            except Exception as e:
                tools.log(
                    "PackageSync: Error while restoring packages from folder",
                    force=True)
                tools.log("PackageSync: Error message: %s" % str(e),
                          force=True)
        else:
            tools.packagesync_cancelled()
Beispiel #6
0
    def backup_folder(self, backup_path):
        if backup_path is not None:
            try:
                offline.create_temp_backup()

                if os.path.isdir(backup_path):
                    shutil.rmtree(backup_path, True)
                shutil.copytree(tools.temp_backup_folder, backup_path)

                tools.log(
                    "PackageSync: Backup of packages & settings created at %s"
                    % backup_path)
            except Exception as e:
                tools.log(
                    "PackageSync: Error while backing up packages to folder",
                    force=True)
                tools.log("PackageSync: Error message: %s" % str(e),
                          force=True)
        else:
            tools.packagesync_cancelled()
Beispiel #7
0
    def backup_zip(self, backup_path):
        if backup_path is not None:
            try:
                offline.create_temp_backup()

                temp_zip_file_path = os.path.join(tempfile.gettempdir(),
                                                  str(time.time())) + ".zip"

                # create temp backup zip from the temp backup
                z = zipfile.ZipFile(temp_zip_file_path, 'w')
                basePath = tools.temp_backup_folder.rstrip("\\/") + ""
                basePath = basePath.rstrip("\\/")

                for root, dirs, files in os.walk(tools.temp_backup_folder):
                    for item in (files + dirs):
                        itemPath = os.path.join(root, item)
                        inZipPath = itemPath.replace(basePath, "",
                                                     1).lstrip("\\/")
                        z.write(itemPath, inZipPath)

                # close the temp backup file
                z.close()

                if os.path.isfile(backup_path):
                    os.remove(backup_path)
                elif not os.path.exists(os.path.dirname(backup_path)):
                    os.makedirs(os.path.dirname(backup_path))
                shutil.move(temp_zip_file_path, backup_path)

                tools.log(
                    "PackageSync: Zip backup of packages & settings created at %s"
                    % backup_path)
            except Exception as e:
                tools.log(
                    "PackageSync: Error while backing up packages to zip file",
                    force=True)
                tools.log("PackageSync: Error message: %s" % str(e),
                          force=True)
        else:
            tools.packagesync_cancelled()
Beispiel #8
0
    def restore_pkg_list(self, backup_path):
        if backup_path is not None:
            try:
                tools.log("PackageSync: Restoring package list from %s" %
                          backup_path)
                with open(backup_path, "r") as f:
                    _installed_packages = json.load(f)["installed_packages"]

                    _package_control_settings = sublime.load_settings(
                        "Package Control.sublime-settings")
                    _package_control_settings.set("installed_packages",
                                                  _installed_packages)
                    sublime.save_settings("Package Control.sublime-settings")

                tools.install_new_packages()

            except Exception as e:
                tools.log(
                    "PackageSync: Error while restoring packages from package list",
                    force=True)
                tools.log("PackageSync: Error message: %s" % str(e),
                          force=True)
        else:
            tools.packagesync_cancelled()