tooling/ActionTypes/ImportRef.xscript.ps1

#:xheader:
#Type=ActionType;
#:xheader:

@{
    Clean = 
    {
        Param([ConfigAutomationContext] $context,[UIAction] $action)
        return $true
    };
    Action = 
    {
        Param([ConfigAutomationContext] $context,[UIAction] $action)
        
        # $extracted = $action.Parameters().Extract(@("RefLoading"))
        # $obj = $context.Ref($extracted.RefLoading)
        # if(-not $obj){
        # $context.Error("Ref '{white}$($extracted.RefLoading){gray}' was not found")
        # return $false
        # }
        
        # $xmlDefinition = $obj.XmlDefinition()
        # $xmlTxt = $xmlDefinition.OuterXml
        # $xmlTxt = $action.ParameterizeString($xmlTxt,$false, "@")
        # [XML]$xmlDefinition = $xmlTxt
        
        # $context.PopulateFromXml($xmlDefinition, $action.ParentScope())
        
        return $true
    };
    CanExecute = 
    {
        Param([ConfigAutomationContext] $context,[UIAction] $action)
        return $true
    };
    Validate = 
    {
        Param([ConfigAutomationContext] $context,[UIAction] $action)

        if(-not $action.Parameters().Validate(@("RefLoading"))){
            return $false
        }
        $obj = $context.Ref($extracted.RefLoading)
        if(-not $obj){
            $context.Error("Ref '{white}$($extracted.RefLoading){gray}' was not found")
            return $false
        }
        
        $xmlDefinition = $obj.XmlDefinition()
        $xmlTxt = $xmlDefinition.OuterXml
        $xmlTxt = $action.ParameterizeString($xmlTxt, $false, "@")
        if(-not $action.ValidateValue($xmlTxt, "XML Content for $($action.FullName())", "@", $true)){
            $context.Error("Validation of the XML Content failed")
            return $false
        }
        
        [XML]$xmlDefinition = $xmlTxt
        $context.PopulateFromXml($xmlDefinition.FirstChild, $action.ParentScope())
        
        return $true
    };
    
}