@@ -16,14 +16,20 @@ def __print_help():
1616 click .echo (bak .get_help (ctx ))
1717
1818
19- def check_file_reference (args_key : str = 'filename' ):
19+ def normalize_path (args_key : str = 'filename' ):
2020 def on_decorator (func ):
2121 @functools .wraps (func )
2222 def on_call (* args , ** kwargs ):
2323 try :
24- if Path (kwargs [args_key ]).expanduser ().resolve ().is_dir ():
25- raise IsADirectoryError ('{} is a directory' .format (kwargs [args_key ]))
26- except IndexError :
24+ # expand path
25+ arg = Path (kwargs [args_key ]).expanduser ().resolve ()
26+ if arg .is_dir ():
27+ click .echo (f"Error: bak cannot operate on directories ({ arg } )" )
28+ return
29+ else :
30+ kwargs [args_key ] = arg
31+ # Account for optional params and params that default to None or False
32+ except (IndexError , KeyError , TypeError ):
2733 pass
2834 return func (* args , ** kwargs )
2935 return on_call
@@ -40,7 +46,7 @@ def bak():
4046
4147
4248@bak .command ("\0 " , hidden = True )
43- @check_file_reference ()
49+ @normalize_path ()
4450@click .option ("--version" , required = False , is_flag = True )
4551@click .argument ("filename" , required = False , type = click .Path (exists = True ))
4652# Ensures that 'bak --help' is printed if it doesn't get a filename
@@ -55,7 +61,7 @@ def create(filename, version):
5561
5662
5763@bak .command ("up" , help = "Replace a .bakfile with a fresh copy of the parent file" )
58- @check_file_reference ()
64+ @normalize_path ()
5965@click .argument ("filename" , required = True , type = click .Path (exists = True ))
6066def bak_up (filename ):
6167 if not filename :
@@ -102,7 +108,7 @@ def bak_off(filename, quietly):
102108@click .option ("--using" , "--in" , "--with" ,
103109 help = "Program to open (default: $PAGER or less)" ,
104110 required = False , hidden = True )
105- @check_file_reference ()
111+ @normalize_path ()
106112@click .argument ("filename" , required = True , type = click .Path (exists = True ))
107113def bak_print (filename , using ):
108114 filename = Path (filename ).expanduser ().resolve ()
@@ -116,7 +122,7 @@ def bak_print(filename, using):
116122@click .argument ("to_where_you_once_belonged" ,
117123 required = True ,
118124 type = click .Path (exists = True ))
119- @check_file_reference ()
125+ @normalize_path ()
120126def bak_get (to_where_you_once_belonged ):
121127 to_where_you_once_belonged = Path (to_where_you_once_belonged ).expanduser ().resolve ()
122128 commands .bak_getfile_cmd (to_where_you_once_belonged )
@@ -127,7 +133,7 @@ def bak_get(to_where_you_once_belonged):
127133@click .option ("--using" , "--with" ,
128134 help = "Program to use instead of system diff" ,
129135 required = False )
130- @check_file_reference ()
136+ @normalize_path ()
131137@click .argument ("filename" , required = True , type = click .Path (exists = True ))
132138def bak_diff (filename , using ):
133139 filename = Path (filename ).expanduser ().resolve ()
@@ -145,15 +151,12 @@ def bak_diff(filename, using):
145151 # help="List a particular file's .bakfiles",
146152 required = False ,
147153 type = click .Path (exists = True ))
148- @check_file_reference ()
154+ @normalize_path ()
149155def bak_list (relpaths , filename ):
150156 if filename :
151157 filename = Path (filename ).expanduser ().resolve ()
152158 commands .show_bak_list (filename = filename or None , relative_paths = relpaths )
153159
154160
155161if __name__ == "__main__" :
156- try :
157- bak ()
158- except IsADirectoryError as e :
159- print ('Must pass a file, not a directory to bak: {}' .format (e ))
162+ bak ()
0 commit comments