constructor
constructor copied to clipboard
Add more output formats (Docker, conda-pack)
Checklist
- [X] I added a descriptive title
- [X] I searched open requests and couldn't find a duplicate
What is the idea?
constructor
is able to generate installers for Linux, macOS, and Windows, using an array of formats (SH, PKG, EXE, respectively). However, there's nothing special about these "installers" they are just "artifacts" that "pack" a number of conda packages.
The idea here would be to teach constructor how to generate additional artifact formats, like:
- Docker containers via
conda-docker
- Tarballs via
conda-pack
Why is this needed?
constructor
would slowly become an interface for packaging and distributing conda environments. There is plenty of duplicated logic across this projects and we would benefit from a single maintenance hub for all of them. There are bits of conda-pack
internals that would be lovely to have in constructor
's code (like the Environment abstraction).
What should happen?
Users could just have a construct.yml
like this:
name: Scripts
version: X
# installer_type: all
artifacts:
- container # via conda-docker
- conda-pack
channels:
- http://repo.anaconda.com/pkgs/main/
specs:
- python
Additional Context
This is the other side of https://github.com/conda/conda-pack/issues/294.
We could take a look and see how feasible this is. constructor
was always built with the "installer" idea in mind, so some concepts in the config file and code base might be too coupled. In that case, a separate tool that encompasses all these usages with their nuances could be better welcome (e.g. conda-bundle
).