diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2019-05-06 23:19:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2019-05-06 23:19:52 -0400 |
commit | 502bb16cab44aed9e36b6052f725a994b1ffab16 (patch) | |
tree | 2ba02459edf27102eb58af3c85ec2c29b41d4224 /delivery_merge/cli/merge.py | |
download | delivery_merge-502bb16cab44aed9e36b6052f725a994b1ffab16.tar.gz |
Initial commit
Diffstat (limited to 'delivery_merge/cli/merge.py')
-rw-r--r-- | delivery_merge/cli/merge.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/delivery_merge/cli/merge.py b/delivery_merge/cli/merge.py new file mode 100644 index 0000000..b0f581d --- /dev/null +++ b/delivery_merge/cli/merge.py @@ -0,0 +1,56 @@ +import os +from ..conda import conda, conda_installer, conda_init_path +from ..merge import env_combine, testable_packages, integration_test +from argparse import ArgumentParser + + +def main(): + parser = ArgumentParser() + parser.add_argument('--env-name', default='delivery', + help='name of environment') + parser.add_argument('--installer-version', required=True, + help='miniconda3 installer version') + parser.add_argument('--run-tests', action='store_true') + parser.add_argument('--dmfile', required=True) + parser.add_argument('base_spec') + args = parser.parse_args() + + name = args.env_name + base_spec = args.base_spec + dmfile = args.dmfile + channels = ['https://astroconda.org/channel/main', + 'defaults', + 'http://ssb.stsci.edu/conda-dev'] + delivery_root = 'delivery' + yamlfile = os.path.join(delivery_root, name + '.yml') + specfile = os.path.join(delivery_root, name + '.txt') + + if not os.path.exists(delivery_root): + os.mkdir(delivery_root, 0o755) + + prefix = conda_installer(args.installer_version) + conda_init_path(prefix) + + if not os.path.exists(os.path.join(prefix, 'envs', name)): + print(f"Creating environment {name}...") + proc = conda('create', '-q', '-y', '-n', name, '--file', base_spec) + if proc.stderr: + print(proc.stderr.decode()) + + print(f"Merging requested packages into environment: {name}") + env_combine(dmfile, name, channels) + + print("Exporting yaml configuration...") + conda('env', 'export', '-n', name, '--file', yamlfile) + + print("Exporting explicit dump...") + with open(specfile, 'w+') as spec: + proc = conda('list', '--explicit', '-n', name) + spec.write(proc.stdout.decode()) + + if args.run_tests: + for package in testable_packages(args.dmfile, prefix): + print(f"Running tests: {package}") + integration_test(package, name) + + print("Done!") |