diff --git a/CI/install/osx/build_app.py b/CI/install/osx/build_app.py index 58a0178f3..907e11300 100644 --- a/CI/install/osx/build_app.py +++ b/CI/install/osx/build_app.py @@ -26,6 +26,20 @@ from os import makedirs, rename, walk, path as ospath import plistlib import argparse + +def _str_to_bool(s): + """Convert string to bool (in argparse context).""" + if s.lower() not in ['true', 'false']: + raise ValueError('Need bool; got %r' % s) + return {'true': True, 'false': False}[s.lower()] + +def add_boolean_argument(parser, name, default=False): + """Add a boolean argument to an ArgumentParser instance.""" + group = parser.add_mutually_exclusive_group() + group.add_argument( + '--' + name, nargs='?', default=default, const=True, type=_str_to_bool) + group.add_argument('--no' + name, dest=name, action='store_false') + parser = argparse.ArgumentParser(description='obs-studio package util') parser.add_argument('-d', '--base-dir', dest='dir', default='rundir/RelWithDebInfo') parser.add_argument('-n', '--build-number', dest='build_number', default='0') @@ -34,7 +48,7 @@ parser.add_argument('-f', '--sparkle-framework', dest='sparkle', default=None) parser.add_argument('-b', '--base-url', dest='base_url', default='https://builds.catchexception.org/obs-studio') parser.add_argument('-u', '--user', dest='user', default='jp9000') parser.add_argument('-c', '--channel', dest='channel', default='master') -parser.add_argument('-s', '--stable', dest='stable', required=False, action='store_true', default=False) +add_boolean_argument(parser, 'stable', default=False) parser.add_argument('-p', '--prefix', dest='prefix', default='') args = parser.parse_args() @@ -208,4 +222,4 @@ try: rename("tmp", app_name) except: print("App already exists") - rmtree("tmp") \ No newline at end of file + rmtree("tmp")