| 
					
				 | 
			
			
				@@ -9,7 +9,7 @@ from ..constants import *  # NOQA 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..cache import Cache, assert_secure 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import Error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..helpers import Manifest, AI_HUMAN_SORT_KEYS 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from ..helpers import GlobSpec, SortBySpec, positive_int_validator 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from ..helpers import GlobSpec, SortBySpec, positive_int_validator, location_validator, Location 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..patterns import PatternMatcher 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..remote import RemoteRepository 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from ..repository import Repository 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -424,6 +424,143 @@ def define_archive_filters_group(subparser, *, sort_by=True, first_last=True): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return filters_group 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def define_common_options(add_common_option): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option("-h", "--help", action="help", help="show this help message and exit") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--critical", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="log_level", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_const", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const="critical", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default="warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="work on log level CRITICAL", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--error", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="log_level", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_const", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const="error", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default="warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="work on log level ERROR", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="log_level", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_const", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const="warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default="warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="work on log level WARNING (default)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--info", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "-v", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--verbose", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="log_level", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_const", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const="info", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default="warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="work on log level INFO", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--debug", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="log_level", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_const", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        const="debug", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default="warning", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="enable debug output, work on log level DEBUG", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--debug-topic", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="TOPIC", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="debug_topics", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="append", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default=[], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="enable TOPIC debugging (can be specified multiple times). " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "The logger path is borg.debug.<TOPIC> if TOPIC is not fully qualified.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option("-p", "--progress", dest="progress", action="store_true", help="show progress information") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option("--iec", dest="iec", action="store_true", help="format using IEC units (1KiB = 1024B)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--log-json", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="log_json", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_true", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="Output one JSON object per log line instead of formatted text.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--lock-wait", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="SECONDS", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="lock_wait", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type=int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default=1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="wait at most SECONDS for acquiring a repository/cache lock (default: %(default)d).", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--bypass-lock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="lock", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_false", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default=argparse.SUPPRESS,  # only create args attribute if option is specified 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="Bypass locking mechanism", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option("--show-version", dest="show_version", action="store_true", help="show/log the borg version") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option("--show-rc", dest="show_rc", action="store_true", help="show/log the return code (rc)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--umask", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="M", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="umask", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type=lambda s: int(s, 8), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default=UMASK_DEFAULT, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="set umask to M (local only, default: %(default)04o)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--remote-path", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="PATH", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="remote_path", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help='use PATH as borg executable on the remote (default: "borg")', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--upload-ratelimit", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="RATE", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="upload_ratelimit", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type=int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="set network upload rate limit in kiByte/s (default: 0=unlimited)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--upload-buffer", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="UPLOAD_BUFFER", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="upload_buffer", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type=int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="set network upload buffer size in MiB. (default: 0=no buffer)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--consider-part-files", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="consider_part_files", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        action="store_true", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="treat part files like normal files (e.g. to list/extract them)", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--debug-profile", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="FILE", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="debug_profile", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default=None, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="Write execution profile in Borg format into FILE. For local use a Python-" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        'compatible file can be generated by suffixing FILE with ".pyprof".', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--rsh", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="RSH", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="rsh", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="Use this command to connect to the 'borg serve' process (default: 'ssh')", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    add_common_option( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "-r", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        "--repo", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        metavar="REPO", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        dest="location", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        type=location_validator(other=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        default=Location(other=False), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        help="repository to use", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def build_matcher(inclexcl_patterns, include_paths): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     matcher = PatternMatcher() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     matcher.add_inclexcl(inclexcl_patterns) 
			 |