示例#1
0
文件: main.py 项目: vanship82/boxwrap
 def __init__(self, working_dir, cloud_dir, tmp_dir, file_info_csv_file,
              reinit=False, password=None,
              compression_level=compression.COMPRESSION_LEVEL_NORMAL,
              encryption_method=compression.ENCRYPTION_ZIP_CRYPTO):
   self.working_dir = working_dir
   self.cloud_dir = cloud_dir
   self.tmp_dir = tmp_dir
   self.file_info_csv_file = file_info_csv_file
   self.password = password
   self.encryption_method = encryption_method
   self.compression_level = compression_level
   self.compression_key = lambda x: util.path_for_sorting(
       compression.get_original_filename(x.path))
示例#2
0
def merge(dir_changes1, dir_changes2,
          parent_dir_changes_new1=None,
          parent_dir_changes_old1=None,
          parent_dir_changes_new2=None,
          parent_dir_changes_old2=None,
          parent_dir_changes_conflict=None):
  base_dir = (
      dir_changes1.base_dir() if dir_changes1 else dir_changes2.base_dir())
  dc_new1 = change_entry.DirChanges(base_dir,
                                    change_entry.CONTENT_STATUS_UNSPECIFIED,
                                    parent_dir_changes=parent_dir_changes_new1)
  dc_old1 = change_entry.DirChanges(base_dir,
                                    change_entry.CONTENT_STATUS_UNSPECIFIED,
                                    parent_dir_changes=parent_dir_changes_old1)
  dc_new2 = change_entry.DirChanges(base_dir,
                                    change_entry.CONTENT_STATUS_UNSPECIFIED,
                                    parent_dir_changes=parent_dir_changes_new2)
  dc_old2 = change_entry.DirChanges(base_dir,
                                    change_entry.CONTENT_STATUS_UNSPECIFIED,
                                    parent_dir_changes=parent_dir_changes_old2)
  dc_conflict = change_entry.DirChanges(
      base_dir, change_entry.CONTENT_STATUS_UNSPECIFIED,
      parent_dir_changes=parent_dir_changes_conflict)
  for c1, c2 in util.merge_two_iterators(
      iter(dir_changes1.changes() if dir_changes1 else []),
      iter(dir_changes2.changes() if dir_changes2 else []),
      key_func=lambda x: util.path_for_sorting(x.path)):
    if _is_file_change(c1) and _is_file_change(c2):
      _merge_both_files(c1, c2, dc_new1, dc_old1, dc_new2, dc_old2,
                        dc_conflict)
    else:
      _merge_both_dirs(c1, c2,
                       dir_changes1.dir_changes(c1.path) if c1 else None,
                       dir_changes2.dir_changes(c2.path) if c2 else None,
                       dc_new1, dc_old1, dc_new2, dc_old2,
                       dc_conflict)

  return dc_new1, dc_old1, dc_new2, dc_old2, dc_conflict
示例#3
0
 def path_for_sorting(self):
   return util.path_for_sorting(self.path)