private static TResult ResolveSerializerAndRun <TResult>(string secretsJson, Type secretsType, Func <IScriptSecretSerializer, JObject, TResult> func)
        {
            JObject secrets = JObject.Parse(secretsJson);

            IScriptSecretSerializer serializer = GetSerializer(secrets, secretsType);

            return(func(serializer, secrets));
        }
        private static IScriptSecretSerializer GetSerializer(JObject secrets, Type secretType)
        {
            IScriptSecretSerializer serializer = _secretFormatters.FirstOrDefault(s => s.CanSerialize(secrets, secretType));

            if (serializer == null)
            {
                throw new FormatException("Invalid secrets file format.");
            }

            return(serializer);
        }