Good catch @l0rinc, I didn’t test this in my review, and you’re right, it doesn’t work (AttributeError: 'Namespace' object has no attribute 'out_sdkt_path') on master nor in the current HEAD. I also agree with removing nargs=1:
0diff --git a/contrib/macdeploy/gen-sdk.py b/contrib/macdeploy/gen-sdk.py
1index e9221cf60d..bfac1542a2 100755
2--- a/contrib/macdeploy/gen-sdk.py
3+++ b/contrib/macdeploy/gen-sdk.py
4@@ -21,7 +21,7 @@ def run():
5 description=__doc__, formatter_class=argparse.RawTextHelpFormatter)
6
7 parser.add_argument('xcode_app', metavar='XCODEAPP', nargs=1)
8- parser.add_argument("-o", metavar='OUTSDKTAR', nargs=1, dest='out_sdkt', required=False)
9+ parser.add_argument("-o", metavar='OUTSDKTAR', dest='out_sdkt', required=False)
10
11 args = parser.parse_args()
12
13@@ -46,7 +46,7 @@ def run():
14 out_name = "Xcode-{xcode_version}-{xcode_build_id}-extracted-SDK-with-libcxx-headers".format(xcode_version=xcode_version, xcode_build_id=xcode_build_id)
15
16 if args.out_sdkt:
17- out_sdkt_path = pathlib.Path(args.out_sdkt_path)
18+ out_sdkt_path = pathlib.Path(args.out_sdkt)
19 else:
20 # Construct our own out_sdkt if not specified on the command line
21 out_sdkt_path = pathlib.Path("./{}.tar".format(out_name))
Or, preferably, the relevant logic can be simplified even more:
0diff --git a/contrib/macdeploy/gen-sdk.py b/contrib/macdeploy/gen-sdk.py
1index e9221cf60d..cf37929287 100755
2--- a/contrib/macdeploy/gen-sdk.py
3+++ b/contrib/macdeploy/gen-sdk.py
4@@ -20,12 +20,12 @@ def run():
5 parser = argparse.ArgumentParser(
6 description=__doc__, formatter_class=argparse.RawTextHelpFormatter)
7
8- parser.add_argument('xcode_app', metavar='XCODEAPP', nargs=1)
9- parser.add_argument("-o", metavar='OUTSDKTAR', nargs=1, dest='out_sdkt', required=False)
10+ parser.add_argument('xcode_app', metavar='XCODEAPP', type=pathlib.Path)
11+ parser.add_argument("-o", metavar='OUTSDKTAR', dest='out_sdkt', type=pathlib.Path, required=False)
12
13 args = parser.parse_args()
14
15- xcode_app = pathlib.Path(args.xcode_app[0]).resolve()
16+ xcode_app = args.xcode_app.resolve()
17 assert xcode_app.is_dir(), "The supplied Xcode.app path '{}' either does not exist or is not a directory".format(xcode_app)
18
19 xcode_app_plist = xcode_app.joinpath("Contents/version.plist")
20@@ -45,11 +45,7 @@ def run():
21
22 out_name = "Xcode-{xcode_version}-{xcode_build_id}-extracted-SDK-with-libcxx-headers".format(xcode_version=xcode_version, xcode_build_id=xcode_build_id)
23
24- if args.out_sdkt:
25- out_sdkt_path = pathlib.Path(args.out_sdkt_path)
26- else:
27- # Construct our own out_sdkt if not specified on the command line
28- out_sdkt_path = pathlib.Path("./{}.tar".format(out_name))
29+ out_sdkt_path = args.out_sdkt or pathlib.Path("./{}.tar".format(out_name))
30
31 def tarfp_add_with_base_change(tarfp, dir_to_add, alt_base_dir):
32 """Add all files in dir_to_add to tarfp, but prepend alt_base_dir to the files'