civicrm / cv
CiviCRM 的命令行工具
Requires
- php: >=7.3.0
- ext-json: *
- cweagans/composer-patches: ~1.0
- lesser-evil/shell-verbosity-is-evil: ~1.0
- psr/log: ~1.1 || ~2.0 || ~3.0
- psy/psysh: @stable
- stecman/symfony-console-completion: ^0.11.0
- symfony/console: ~5.4
- symfony/process: ~5.4
Replaces
- civicrm/cv-lib: v0.3.55
- dev-master
- v0.3.55
- v0.3.54
- v0.3.53
- v0.3.52
- v0.3.51
- v0.3.50
- v0.3.49
- v0.3.48
- v0.3.47
- v0.3.46
- v0.3.45
- v0.3.44
- v0.3.43
- v0.3.42
- v0.3.41
- v0.3.40
- v0.3.39
- v0.3.38
- v0.3.37
- v0.3.36
- v0.3.35
- v0.3.34
- v0.3.33
- v0.3.32
- v0.3.31
- v0.3.30
- v0.3.29
- v0.3.28
- v0.3.27
- v0.3.26
- v0.3.25
- v0.3.24
- v0.3.23
- v0.3.22
- v0.3.21
- v0.3.20
- v0.3.19
- v0.3.18
- v0.3.17
- v0.3.16
- v0.3.15
- v0.3.14
- v0.3.13
- v0.3.12
- v0.3.11
- v0.3.10
- v0.3.9
- v0.3.8
- v0.3.7
- v0.3.6
- v0.3.5
- v0.3.4
- v0.3.3
- v0.3.2
- v0.3.1
- v0.3.0
- v0.2.22
- v0.2.21
- v0.2.20
- v0.2.19
- v0.2.18
- v0.2.17
- v0.2.16
- v0.2.15
- v0.2.14
- v0.2.13
- v0.2.12
- v0.2.11
- v0.2.10
- v0.2.9
- v0.2.8
- v0.2.7
- v0.2.6
- v0.2.5
- v0.2.4
- v0.2.3
- v0.2.2
- v0.2.1
- v0.2.0
- v0.1.32
- v0.1.31
- v0.1.30
- v0.1.29
- v0.1.28
- v0.1.27
- v0.1.26
- v0.1.25
- v0.1.24
- v0.1.23
- v0.1.22
- v0.1.21
- v0.1.20
- v0.1.19
- v0.1.18
- v0.1.17
- v0.1.16
- v0.1.15
- v0.1.14
- v0.1.13
- v0.1.12
- v0.1.11
- v0.1.10
- v0.1.9
- v0.1.8
- v0.1.7
- v0.1.6
- v0.1.5
- v0.1.4
- v0.1.3
- v0.1.2
- v0.1.1
- v0.1.0
- dev-colemanw-patch-1
This package is auto-updated.
Last update: 2024-09-20 14:40:04 UTC
README
cv
命令是用于与 CiviCRM 安装交互的实用程序。它执行自动扫描以定位和启动 CiviCRM 安装。它提供对辅助函数和配置数据的命令行访问,例如 APIv3 和网站 URL。
要求
- PHP v7.3+。
- 本地 CiviCRM 安装。
- 具有特殊文件布局的系统可能需要配置引导。
下载
cv
以 PHAR 格式分发,这是一种便携式可执行文件(用于 PHP)。它应该在大多数已安装 PHP 的类 Unix 系统上运行。以下是三种快速下载方法
-
下载
cv.phar
的最新版本(SHA256,GPG)并将其放入 PATH 中。例如sudo curl -LsS https://download.civicrm.org/cv/cv.phar -o /usr/local/bin/cv sudo chmod +x /usr/local/bin/cv
(了解更多信息: 将
cv.phar
安装为系统级工具(Linux/BSD/macOS)) -
或者...将
cv
和其他 CiviCRM 工具添加到 composer 项目中(Drupal 9/10/11)composer require civicrm/cli-tools
(了解更多信息: 将
cv.phar
安装为项目工具(composer)) -
或者...使用 phar.io 的
phive
安装程序下载、验证和缓存cv.phar
文件。phive install civicrm/cv
(了解更多信息: 将
cv.phar
安装为项目工具(phive))
还有其他几种下载 cv
的方法。另请参阅
- 不同版本的下载 URL
- 安装选项比较
- 将
cv
安装为系统级/独立工具 - 将
cv
安装为另一个项目中的工具
文档
cv
提供了许多子命令。要查看列表,请在没有任何参数的情况下运行 cv
。
要获取特定子命令的详细帮助,请使用 -h
,例如 cv api -h
。
有一些通用约定
- 许多子命令支持常见的引导选项,例如
--user
、--level
和--test
。 - 许多子命令支持使用
--out
的多种输出格式。您可以使用环境变量设置一个一般的首选项,例如export CV_OUTPUT=json-pretty
或export CV_OUTPUT=php
。
示例:CLI
me@localhost$ cd /var/www/my/web/site ## Clear caches me@localhost$ cv flush ## Manage extensions me@localhost$ cv ext -Li me@localhost$ cv dl cividiscount me@localhost$ cv en cividiscount me@localhost$ cv dis cividiscount me@localhost$ cv path -x cividiscount me@localhost$ cv url -x cividiscount ## Manage settings me@localhost$ cv vget me@localhost$ cv vget /mail/ me@localhost$ cv vset mailerBatchLimit=100 ## Call APIs me@localhost$ cv api3 contact.get last_name=Smith me@localhost$ cv api4 Contact.get +w last_name=Smith ## Improvise PHP me@localhost$ cv ev 'echo Civi::paths()->getPath("[civicrm.root]/.");' me@localhost$ cv scr /path/to/my-script.php me@localhost$ cv cli ## Improvise web requests me@localhost$ cv url civicrm/dashboard --open me@localhost$ cv url civicrm/dashboard --open -LU admin me@localhost$ cv http civicrm/dashboard me@localhost$ cv http civicrm/dashboard -LU admin ## Inspect events and services me@localhost$ cv event me@localhost$ cv event /flexmailer/ me@localhost$ cv service me@localhost$ cv service /flexmailer/
如果您打算运行单元测试,并且如果您不使用 civibuild
,那么您可能需要提供一些额外的网站信息(例如测试用户的名称)。为此,请运行
me@localhost$ cd /var/www/my/web/site me@localhost$ cv vars:show me@localhost$ cv vars:fill me@localhost$ vi ~/.cv.json me@localhost$ cv vars:show
示例:PHP
假设您有一个独立的脚本或测试运行器,需要在 CiviCRM 网站上下文中执行。您不想将其硬编码到特定路径、创建特殊用途的配置文件或需要特定的目录结构。相反,调用 cv php:boot
和 eval()
。最简单的方法
eval(`cv php:boot`)
然而,创建一个小的包装函数来提高错误处理和输出解析会更好。
/** * Call the "cv" command. * * @param string $cmd * The rest of the command to send. * @param string $decode * Ex: 'json' or 'phpcode'. * @return string * Response output (if the command executed normally). * @throws \RuntimeException * If the command terminates abnormally. */ function cv($cmd, $decode = 'json') { $cmd = 'cv ' . $cmd; $descriptorSpec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => STDERR); $env = (!empty($_ENV) ? $_ENV : getenv()) + array('CV_OUTPUT' => 'json'); $process = proc_open($cmd, $descriptorSpec, $pipes, __DIR__, $env); fclose($pipes[0]); $result = stream_get_contents($pipes[1]); fclose($pipes[1]); if (proc_close($process) !== 0) { throw new RuntimeException("Command failed ($cmd):\n$result"); } switch ($decode) { case 'raw': return $result; case 'phpcode': // If the last output is /*PHPCODE*/, then we managed to complete execution. if (substr(trim($result), 0, 12) !== "/*BEGINPHP*/" || substr(trim($result), -10) !== "/*ENDPHP*/") { throw new \RuntimeException("Command failed ($cmd):\n$result"); } return $result; case 'json': return json_decode($result, 1); default: throw new RuntimeException("Bad decoder format ($decode)"); } } eval(cv('php:boot', 'phpcode')); $config = cv('vars:show'); printf("We should navigate to the dashboard: %s\n\n", cv('url civicrm/dashboard'));
示例:NodeJS
查看 https://github.com/civicrm/cv-nodejs
Bootstrap
cv
必须找到并引导本地实例的CiviCRM、Drupal、WordPress或类似的。这可能以几种方式工作
-
自动:默认情况下,
cv
会检查当前目录和每个父目录,以查找已知环境的证据(如Drupal或WordPress)。自动搜索旨在与默认站点布局一起工作——就像从
drupal.org
、wordpress.org
或类似的典型“zip”或“tar”文件中看到的那样。一些部署添加了更多高级选项——例如配置“多站点”,添加定制的“符号链接”或移动wp-admin
文件夹。对于高级布局,您可能需要设置环境变量。 -
CIVICRM_BOOT
(新协议):首先引导CMS(然后要求它引导CiviCRM)。这更符合典型的HTTP页面浏览,并且与core:install
等命令兼容。设置此环境变量以指定CMS类型和基本目录。比较export CIVICRM_BOOT="Drupal://var/www/public" export CIVICRM_BOOT="Drupal8://admin@/var/www/public" export CIVICRM_BOOT="WordPress:/$HOME/sites/my-wp-site/web/" export CIVICRM_BOOT="Auto://."
-
CIVICRM_SETTINGS
(旧协议):首先引导CiviCRM(然后要求它引导CMS)。设置此环境变量以指定civicrm.settings.php
的位置。比较export CIVICRM_SETTINGS="/var/www/sites/default/files/civicrm.settings.php" export CIVICRM_SETTINGS="Auto"
(注意:在旧协议中,
cv
先加载CiviCRM,然后要求CiviCRM引导CMS。然而,这不太符合典型的HTTP页面浏览,并且与core:install
等命令不兼容。您可能用于无头测试或作为在标准协议中发现任何错误时的备用/解决方案。)
注意:在没有配置变量的情况下,自动模式的行为类似于
CIVICRM_SETTINGS="Auto"
(在v0.3.x中)。这计划在v0.4.x中更改,其中它将类似于CIVICRM_BOOT="Auto://."
此外,一些部署处理多个站点(“多站点”/“多域名”)。您应使用--hostname
或HTTP_HOST
指定特定站点。
以下是一些将这些放在一起的一些示例
## Use --hostname for a domain export CIVICRM_BOOT="WordPress:/$HOME/public_html/" cv --hostname='www.example.org' ext:list -L
## Use HTTP_HOST for a domain export CIVICRM_BOOT="WordPress:/$HOME/public_html/" export HTTP_HOST=www.example.org cv ext:list -L
## Use --hostname for a subfolder export CIVICRM_BOOT="WordPress:/$HOME/public_html/" cv --hostname='www.example.org/nyc' ext:list -L
自动完成
基于stecman/symfony-console-completion的shell自动完成有限/实验性支持。要启用它
# BASH ~4.x, ZSH source <(cv _completion --generate-hook) # BASH ~3.x, ZSH cv _completion --generate-hook | source /dev/stdin # BASH (any version) eval $(cv _completion --generate-hook)
开发
有关更多信息,请参阅doc/develop.md。