mirror of
				https://github.com/wting/autojump
				synced 2025-06-13 12:54:07 +00:00 
			
		
		
		
	Migration code for the new database format
This commit is contained in:
		
							parent
							
								
									0b07cf030e
								
							
						
					
					
						commit
						0298ef5484
					
				
							
								
								
									
										28
									
								
								autojump
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								autojump
									
									
									
									
									
								
							| @ -76,9 +76,8 @@ def open_dic(dic_file, error_recovery=False): | ||||
|     """Try hard to open the database file, recovering | ||||
|        from backup if needed. """ | ||||
|     try: | ||||
|         aj_file = open(dic_file, 'r') | ||||
|         path_dict = {} | ||||
|         with aj_file: | ||||
|         with open(dic_file, 'r') as aj_file: | ||||
|             for l in aj_file.readlines(): | ||||
|                 weight,path = l[:-1].split("\t",1) | ||||
|                 path_dict[path] = float(weight) | ||||
| @ -90,7 +89,27 @@ def open_dic(dic_file, error_recovery=False): | ||||
|             import shutil | ||||
|             shutil.copy(dic_file+".bak", dic_file) | ||||
|             return open_dic(dic_file, True) | ||||
|         else: return {} #if everything fails, return an empty file | ||||
|         else: | ||||
|             # Temporary migration code | ||||
|             old_dic_file = get_dic_file("autojump_py") | ||||
|             if os.path.exists(old_dic_file): | ||||
|                 try: # fix to get optimised pickle in python < 3 | ||||
|                     import cPickle as pickle | ||||
|                 except ImportError: | ||||
|                     import pickle | ||||
|                 try: | ||||
|                     with open(old_dic_file, 'rb') as aj_file: | ||||
|                         if version_info[0] > 2: | ||||
|                             #encoding is only specified for python2.x compatibility | ||||
|                             path_dict = pickle.load(aj_file, encoding="utf-8") | ||||
|                         else: | ||||
|                             path_dict = pickle.load(aj_file) | ||||
|                         aj_file.close() | ||||
|                         return path_dict | ||||
|                 except (IOError, EOFError, pickle.UnpicklingError): | ||||
|                     pass | ||||
|             return {} #if everything fails, return an empty file | ||||
| 
 | ||||
| 
 | ||||
| def forget(path_dict, dic_file): | ||||
|     """Gradually forget about directories. Only call | ||||
| @ -156,8 +175,7 @@ def find_matches(dirs, patterns, result_list, ignore_case, max_matches): | ||||
|             if len(result_list) >= max_matches : | ||||
|                 break | ||||
| 
 | ||||
| def get_dic_file(): | ||||
|     filename = "autojump.txt" | ||||
| def get_dic_file(filename="autojump.txt"): | ||||
|     if CONFIG_DIR == os.path.expanduser("~"): | ||||
|         dic_file = CONFIG_DIR+"/." + filename | ||||
|     else: | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user