๐ I'm curious to know if the community has come with different approaches (or the core team can share its views) on the pain of functions with many flags.
We need to onboard hundreds of engineers into dagger and in order to make it as frictionless as possible, we've pre-built modules that account for building specific project types. Modules that are somewhat complex and will take a bunch of inputs.
Ideally, we're looking into something like:
# initialize the project with a config file with default values
$> dagger call -m gh.com/daggerverse/go-project init --output go-project.yaml
# user to modify go-project.yaml to accommodate the project needs
# call the main entrypoint to the module to test/build/publish/deploy
$> dagger call -m gh.com/daggerverse/go-project run --src . --config go-project.yaml
(We're eagerly waiting for this PR which will simplify even further the calls
Onboarding into the functionality that we've provided for the rest of the engineering team is then as simple as those 2 commands and adding a dagger call into your .github/workflows/workflow.yaml
Rationale is, if users need to fiddle with dagger calls to understand what they need to call and what not, what inputs to pass and which don't, we assume resistance in migrating into it.
We understand that with this approach, we're removing capabilities from end-users at first.
TLDR; We're abstracting the inputs into a yaml file, generated and validated through our module which is focused for developers and abstracts the core modules logic into a simple interface.
Are we crazy? ๐
Is there any functionality we've missed or is in the works for the short term that can alleviate the above?