private KustoConnectionStringBuilder CreateKcsbFromArgs()

in src/Program.cs [535:572]


        private KustoConnectionStringBuilder CreateKcsbFromArgs(string connectionString = null)
        {
            var kcsb = new KustoConnectionStringBuilder(connectionString ?? m_args.ConnectionString);
            if (string.IsNullOrWhiteSpace(m_args.DatabaseName))
            {
                m_args.DatabaseName = kcsb.InitialCatalog;
            }
            else
            {
                kcsb.InitialCatalog = m_args.DatabaseName;
            }

            // Add a touch for managed identities:
            if (!string.IsNullOrWhiteSpace(m_args.ConnectWithManagedIdentity))
            {
                if (m_args.ConnectWithAzCli)
                {
                    throw new UtilsArgumentException("Invalid combination of command line arguments. Cannot connect to Kusto using both Managed-Identity and AzCli.", null);
                }

                if (kcsb.FederatedSecurity || kcsb.DstsFederatedSecurity)
                {
                    kcsb.EmbeddedManagedIdentity = m_args.ConnectWithManagedIdentity;
                }
                else
                {
                    throw new UtilsArgumentException($"Command line arguments error. 'ManagedIdentity' can only be used with federated authentication.", null);
                }
            }
            else if (m_args.ConnectWithAzCli)
            {
                kcsb = kcsb.WithAadAzCliAuthentication();
            }

            kcsb.SetConnectorDetails("LightIngest", Assembly.GetExecutingAssembly().GetProductVersionString() , sendUser: true);
            
            return kcsb;
        }