建站教程

建站教程

Products

当前位置:首页 > 建站教程 >

Phabricator 的自定义配置

GG网络技术分享 2025-03-18 16:08 0


Phabricator 是 Facebook 和其他受人尊敬的软件工程组织使用的优秀代码审查工具。 用户界面很漂亮,工作流程和工具简洁而全面,它是一个涵盖大多数用例的实用程序,包括 Web 和命令行。 我编写了许多 Phabricator 扩展,我发现创建一个供其他扩展使用的单个配置扩展非常有用。 让我们看看创建自己的自定义配置以在整个扩展中使用是多么容易!

创建配置扩展

首先创建一个扩展的新类 PhabricatorApplicationConfigOptions

final class PhabricatorBugzillaConfigOptions

extends PhabricatorApplicationConfigOptions {

// ....

}

填写几个样板方法:

public function getName() {

return pht('Bugzilla');

}

public function getDescription() {

return pht('Configure Bugzilla Settings.');

}

public function getIcon() {

return 'fa-cog';

}

public function getGroup() {

return 'apps';

}

getOptions 方法是定义各个设置的地方; 让我们创建一些示例设置:

public function getOptions() {

return array(

$this->newOption(

'bugzilla.url',

'string',

'https://bugzilla.mozilla.org')

->setDescription(pht('Full URL for the Bugzilla server.')),

$this->newOption(

'bugzilla.automation_user',

'string',

'phab-bot@bmo.tld')

->setDescription(pht('Automation Username on Bugzilla.')),

$this->newOption(

'bugzilla.timeout',

'int',

15)

->setDescription(pht('Bugzilla timeout in seconds.')),

$this->newOption(

'bugzilla.require_bugs',

'bool',

false)

->setDescription(pht('Require existing Bugzilla bug numbers for revisions.')),

);

}

这些设置以这种方式转换为 UI:

Phabricator 配置

配置值类型很重要,因为 Phabricator 读取它并呈现与类型相关的字段; 例如, bool 类型提供真/假下拉菜单。

使用配置值

当你想在其他扩展中使用配置值时,你可以通过 key 引用这些配置值 PhabricatorEnv::getEnvConfig 调用:

// Use PhabricatorEnv::getEnvConfig() to get config values

if(PhabricatorEnv::getEnvConfig('bugzilla.require_bugs') === true) {

// ...

}

返回的值 getEnvConfig 是配置扩展中定义的类型。

我非常喜欢使用通过用户界面定义的配置值; 替代方案通常需要重新部署,在紧急情况下,这是最坏的情况。 当价值观很容易定义、改变和使用时,你就会发现自己处于双赢/双赢的局面,这就是它应该永远的样子!

标签:

提交需求或反馈

Demand feedback