1
0
Fork 0
Teamcity-Phabricator-Plugin/Harbormaster-Teamcity-Plugin/TeamCityXmlBuildBuilder.php
Steven Cooney 265318a9ce Rename Phabricator Variables Injected to TC builds
To make sure there are no naming conflicts with teamcity environment variable we are renaming the vars injected to the build via the harbormaster trigger.
2019-05-31 12:37:30 +01:00

80 lines
No EOL
2.1 KiB
PHP

<?php
final class TeamCityXmlBuildBuilder {
private $xml;
private $root;
function __construct(){
$this->xml = new DOMDocument('1.0', 'UTF-8');
$this->root = $this->xml->createElement('build');
}
function addBuildId($buildId){
$buildIdElement =
$this->
xml->
createElement('buildType');
$buildIdElement->setAttribute('id', $buildId);
$this->root->appendChild($buildIdElement);
return $this;
}
function addPhabBuildId($buildId){
$this->addProperty("env.PHAB_BUILD_ID", $buildId);
return $this;
}
function addRevisionId($revisionId){
$this->addProperty("env.PHAB_REVISION_ID", $revisionId);
return $this;
}
function addBranchName($branchName){
// $this->
// root->
// setAttribute('branchName', $branchName);
$this->addProperty("env.PHAB_BRANCH_NAME", $branchName);
return $this;
}
function addHarbormasterPHID($phid){
$this->addProperty('env.PHAB_HARBORMASTER_TARGET_PHID', $phid);
return $this;
}
function addDiffId($diffId){
$this->addProperty('env.PHAB_DIFF_ID', $diffId);
return $this;
}
function build(){
$this->xml->appendChild($this->root);
return $this->xml->saveXML();
}
private function addProperty($name, $value){
$this->verifyPropertiesExist();
$property = $this->xml->createElement('property');
$property->setAttribute('name', $name);
$property->setAttribute('value', $value);
$this->
root->
getElementsByTagName('properties')->
item(0)->
appendChild($property);
}
private function verifyPropertiesExist(){
if($this->root->getElementsByTagName('properties')->length == 0){
$propertiesElement = $this->xml->createElement('properties');
$this->root->appendChild($propertiesElement);
}
}
}