static void Main()

in src/DWScripter/Program.cs [18:220]


        static void Main(string[] args)
        {
            string server = "";
            string sourceDb = "";
            string userName = "";
            string pwd = "";
            string wrkMode = "ALL";
            string filterSpec = "%";
            string outFile = "";
            string system = "PDW";
            string authentication = "SQL";
            string encriptSQLConneciton = "false";
            string trustServerCertificate = "true";
            string mode = "";
            string ExcludeObjectSuffixList = " "; //"_old|_new|_test|_dba";  // used to exclude test or non-user objects;
            string serverTarget = "";
            string strportTarget = "";
            string TargetDb = "";
            string userNameTarget = "";
            string pwdTarget = "";
            string featureToScript = "";
            string FiltersFilePath ="" ;
            string CommandTimeout ="";

            Dictionary<String, String> parameters = new Dictionary<string, string>();
            parameters = GetParametersFromArguments(args);

            foreach (string pKey in parameters.Keys)
            {
                switch (pKey)
                {
                    case "-S":
                        server = parameters[pKey];
                        break;
                    case "-D":
                        sourceDb = parameters[pKey];
                        break;
                    case "-E":
                        authentication = "WINDOWS";
                        break;
                    case "-U":
                        userName = parameters[pKey];
                        break;
                    case "-P":
                        pwd = parameters[pKey];
                        break;
                    case "-W":
                        wrkMode = parameters[pKey];
                        break;
                    case "-M":
                        mode = parameters[pKey].ToUpper();
                        break;
                    case "-St":
                        serverTarget = parameters[pKey];
                        break;
                    case "-Dt":
                        TargetDb = parameters[pKey];
                        break;
                    case "-Ut":
                        userNameTarget = parameters[pKey];
                        break;
                    case "-Pt":
                        pwdTarget = parameters[pKey];
                        break;
                    case "-O":
                        outFile = parameters[pKey];
                        break;
                    case "-F":
                        featureToScript = parameters[pKey].ToUpper();
                        break;
                    case "-Fp":
                        FiltersFilePath = parameters[pKey];
                        break;
                    case "-X":
                        ExcludeObjectSuffixList = parameters[pKey];
                        break;
                    case "-t":
                        CommandTimeout = parameters[pKey];
                        break;
                    default:
                        break;
                }
            }

            if (wrkMode != "ALL" & wrkMode != "DDL" & wrkMode != "DML")
            {
                Console.WriteLine("Uknown mode. USE: DML|DDL|ALL");
                return;
            }

            if (mode == "COMPARE" & (String.IsNullOrEmpty(serverTarget) || String.IsNullOrEmpty(TargetDb)))
            {
                Console.WriteLine("Target Database elements must be completed ...");
                return;
            }

            PDWscripter c = null;
            PDWscripter cTarget = null;
            Boolean SourceFromFile = false;

            int? commandTimeout = GetCommandTimeout(CommandTimeout);

            try
            {
                if (mode == "FULL" || mode == "DELTA" || mode == "COMPARE" || mode == "PERSISTSTRUCTURE")
                {
                    if (mode == "FULL" && featureToScript != "ALL")
                    {
                        filterSpec = featureToScript;
                    }
                    c = new PDWscripter(system, server, sourceDb, authentication, userName, pwd, wrkMode, ExcludeObjectSuffixList, filterSpec, mode, commandTimeout);
                    if (mode == "PERSISTSTRUCTURE")
                        // populate dbstruct class
                        c.getDbstructure(outFile, wrkMode, true);
                    if (mode == "COMPARE")
                        c.getDbstructure(outFile, wrkMode, false);
                }
                else
                    c = new PDWscripter();

                // generate full database script
                if (mode == "FULL" || mode == "DELTA")
                {
                    c.getDbTables(false);
                    c.IterateScriptAllTables(c, outFile);
                }
                if (mode == "COMPARE" || mode == "COMPAREFROMFILE")
                {
                    SourceFromFile = false;

                    if (wrkMode == "ALL" || wrkMode == "DDL")
                    {
                        if (mode == "COMPAREFROMFILE")
                        {
                            // retrieve database structure from JSON DDL file
                            SourceFromFile = true;
                            // intialize from Json file
                            outFile = outFile.Replace(TargetDb, sourceDb);
                            string outDBJsonStructureFile = outFile + "_STRUCT_DDL.json";
                            c.GetDDLstructureFromJSONfile(outDBJsonStructureFile);
                        }
                        else
                            c.getDbTables(false);
                    }

                    if (mode == "COMPAREFROMFILE")
                    {
                        if (wrkMode == "ALL" || wrkMode == "DML")
                        {
                            // retrieve database structure from JSON DML file
                            SourceFromFile = true;
                            // intialize from Json file
                            outFile = outFile.Replace(TargetDb, sourceDb);
                            string outDBJsonStructureFile = outFile + "_STRUCT_DML.json";
                            c.GetDMLstructureFromJSONfile(outDBJsonStructureFile);
                         }
                    }

                   
                    FilterSettings Filters = new FilterSettings();
                    if (featureToScript != "ALL")
                    {
                        // retrieve filter settings from file
                        Console.WriteLine("Retrieving filter settings file : " + FiltersFilePath + "- Feature : " + featureToScript + " - Database : ...");
                        GlobalFilterSettings gFilter = new GlobalFilterSettings();
                        Filters = gFilter.GetObjectsFromFile(FiltersFilePath, featureToScript, sourceDb);

                        if (Filters == null)
                        {
                            throw new System.ArgumentException("Filter settings parameter can not be null - initialization from file : " + FiltersFilePath + "- Feature : " + featureToScript + " - Database : ...");
                        }

                        Console.WriteLine("Filter settings OK");
                    }

                        cTarget = new PDWscripter(system, serverTarget, TargetDb, authentication, userNameTarget, pwdTarget, wrkMode, "%", filterSpec, mode, commandTimeout);
                        Console.WriteLine("Target Connection Opened");
                        cTarget.getDbstructure(outFile, wrkMode, false);
                        if (mode != "COMPAREFROMFILE")
                            cTarget.getDbTables(false);

                        cTarget.CompIterateScriptAllTables(c, cTarget, outFile, SourceFromFile, Filters);
                    } 
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
                throw ex;
            }

            if (c.conn != null)
            {
                c.conn.Close();
            }

            if (cTarget != null)
            {
                cTarget.conn.Close();
            }

            Console.Write("Done !!! ");
            Environment.Exit(0);
        }