in src/PSRule.Rules.Azure/Common/ResourceHelper.cs [428:464]
internal static bool ResourceIdComponents(string? resourceId, out string? tenant, out string? managementGroup, out string? subscriptionId, out string? resourceGroup, out string[]? resourceType, out string[]? resourceName)
{
tenant = null;
managementGroup = null;
subscriptionId = null;
resourceGroup = null;
resourceType = null;
resourceName = null;
if (string.IsNullOrEmpty(resourceId))
return false;
var idParts = resourceId!.Split(SLASH_C);
var i = 0;
if (TryConsumeSubscriptionIdPart(idParts, ref i, out subscriptionId))
{
if (TryConsumeResourceGroupPart(idParts, ref i, out resourceGroup))
{
_ = TryConsumeProviderPart(idParts, ref i, out _, out resourceType, out resourceName);
}
return true;
}
if (TryConsumeManagementGroupPart(idParts, ref i, out managementGroup))
{
_ = TryConsumeProviderPart(idParts, ref i, out _, out resourceType, out resourceName);
return true;
}
if (TryConsumeTenantPart(idParts, ref i, out tenant))
{
_ = TryConsumeProviderPart(idParts, ref i, out _, out resourceType, out resourceName);
return true;
}
return TryConsumeProviderPart(idParts, ref i, out _, out resourceType, out resourceName);
}