internal static bool ResourceIdComponents()

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