diff --git a/.github/workflows/dist-test.yml b/.github/workflows/dist-test.yml index b9eaac9..d182efc 100644 --- a/.github/workflows/dist-test.yml +++ b/.github/workflows/dist-test.yml @@ -52,7 +52,9 @@ jobs: name: 'dists' path: dist - name: Install pip extras - run: pip install -r vidhubcontrol/kivyui/requirements.txt + run: | + KV_DEPS=$(./tools/get_setup_requires.py -e kivy) + pip install "$KV_DEPS" - name: Delete source directory run: rm -Rf vidhubcontrol - name: Install wheel diff --git a/tools/get_setup_requires.py b/tools/get_setup_requires.py new file mode 100755 index 0000000..f9be84b --- /dev/null +++ b/tools/get_setup_requires.py @@ -0,0 +1,39 @@ +#! /usr/bin/env python + +import argparse +from pathlib import Path +from setuptools.config import read_configuration + + +def parse_args(): + p = argparse.ArgumentParser() + p.add_argument( + '-c', '--conf-file', dest='conf_file', default='setup.cfg', + help='Path to the setup.cfg file to read. Default is "%(default)s"', + ) + p.add_argument( + '-e', '--extras', dest='extras', + help='Only show "extra" dependencies with the given name', + ) + p.add_argument( + '-d', '--delimiter', dest='delimiter', default=' ', + help='Character(s) to separate the results. Default is "%(default)s"', + ) + args = p.parse_args() + args.conf_file = Path(args.conf_file) + return args + +def main(): + args = parse_args() + conf = read_configuration(args.conf_file) + if args.extras: + try: + deps = conf['options']['extras_require'][args.extras] + except KeyError: + return + else: + deps = conf['options']['install_requires'] + print(args.delimiter.join(deps)) + +if __name__ == '__main__': + main()