1
0
Fork 0
Teamcity-Phabricator-Plugin/Harbormaster-Teamcity-Plugin/TeamCityXmlBuildBuilder.php

80 lines
2.1 KiB
PHP
Raw Normal View History

<?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);
}
}
}