functions/format.ps1


# Format work items to make them easily display
# But we still persist the raw field data in the Fields property
function formatWorkItems($workItems) {
    $workItems = $workItems.fields | 
        ForEach-Object { 
                [PSCustomObject]@{
                    Id=$_.'System.Id'
                    Title=$_.'System.Title'
                    WorkItemType=$_.'System.WorkItemType'
                    AssignedTo=$_.'System.AssignedTo'
                    CreatedBy=$_.'System.CreatedBy'
                    CreatedDate=$_.'System.CreatedDate'
                    ChangedDate=$_.'System.ChangedDate'
                    State=$_.'System.State'
                    Fields=$_
                } 
            }


    # Add type name
    $workItems | ForEach-Object { $_.PSObject.TypeNames.Insert(0,'WorkItem') }
    
    return $workItems
}

function formatBuilds($builds) {
    
    # Add type name
    $builds | ForEach-Object { $_.PSObject.TypeNames.Insert(0,'Build') }
    
    return $builds
}

function formatCoverage($coverage) {

     $coverage = $coverage | 
        ForEach-Object { 
                [PSCustomObject]@{
                    Label=$_.'label'
                    Build=$_.'build'
                    Coverage="$($_.'coverage') %"
                } 
            }

    # Add type name
    $coverage | ForEach-Object { $_.PSObject.TypeNames.Insert(0,'Coverage') }
    
    return $coverage
}

function formatArtifact($artifactData, $artifactName) {

     $artifact = $artifactData | 
        ForEach-Object { 
                [PSCustomObject]@{
                    Artifact=$artifactName
                    Type=$_.'type'
                    Data=$_.'data'
                    DownloadURL="$($_.'downloadurl') %"
                } 
            }

    # Add type name
    $artifact | ForEach-Object { $_.PSObject.TypeNames.Insert(0,'Artifact') }
    
    return $artifact
}