Allow `+` for deep customizations on `core:install`
- Dominant language
- PHP
- Stars
- 45
- Forks
- 36
- Avg merge
- 17h 54m
- Merged PRs (30d)
- 3
Description
__Background__: In several commands (`api3`, `api4`, `setting:set`), there are two kinds of options:
* _Control options_: Arguments like `--level`, `--out`, `-T`, `--user`, `--cwd`, `--hostname` influence the way that `cv` works. The naming / formatting / behavior of the options are primarily driven by `cv`.
* _Data model options_: Arguments like `+s field_1,field2` influence the data that `cv` passes through to `civicrm`.The naming / formatting / behavior are primarily driven by CiviCRM's model. The convention here is tuned for "adding data to a request-document". If you need to get really detailed, it allows JSON.
__Problem__: The `core:install` command has a mix of _control options_ and _data model options_. But the data-model options don't follow the `+` convention; they miss a bunch of edge-cases; and they don't allow JSON. The same is true of `core:check-req` and `core:uninstall`.
__Example__: Currently, you can use `cv path -m X=Y`, but there's no way to set a value for `$setup->model['paths']['civicrm.files']`.
__Idea__: In the same vein as `SettingArgParser` or `Api4ArgParser`, add a `SetupModelParser` to allow more inputs. Follow the same `+` conventions as the other commands.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by comparing the existing SettingArgParser and Api4ArgParser conventions, then trace argument handling for core:install, core:check-req, and core:uninstall. Done means these commands accept the same + data-model conventions, including JSON and nested setup-model values such as civicrm.files.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- cli
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100