civicrm / civicrm/cv

Allow `+` for deep customizations on `core:install`

Open
#183 3 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.