static void Main(string[] args)
        {
            const string usage = @"Fluent Migrator Schema Dumper
  Usage:
    SchemaDumper.exe --connection CONNECTION [--file FILE] [--verbose] [--show] [--open]
    SchemaDumper.exe --version
    SchemaDumper.exe --help

  Options:
    --connection CONNECTION -c CONNECTION    The connection string. Required.
    --file FILE -f FILE                      File to output. Optional. [default: schemaDump.cs]
    --show -s                                Show output. Optional.
    --open -o                                Open file. Optional.
    --verbose                                Verbose. Optional.
    --help -h                                Show this screen.
    --version -v                             Show version.
";

            var arguments = new Docopt().Apply(usage, args, version: Assembly.GetExecutingAssembly().GetName().Version, exit: true);
            var file = arguments["--file"].ToString();
            var verbose = arguments["--verbose"].IsTrue;
            var open = arguments["--open"].IsTrue;
            var show = arguments["--show"].IsTrue;
            if (!Path.IsPathRooted(file)) file = Path.Combine(Environment.CurrentDirectory, file);
            var connectionString = arguments["--connection"].ToString();
            if (verbose) WriteLine($"Saving to {file}.");
            try { var builder = new SqlConnectionStringBuilder(connectionString); }
            catch (ArgumentException)
            {
                WriteLine("Connection string is in incorrect format.");
                return;
            }
            using (var connection = new SqlConnection(connectionString))
            {
                try { connection.Open(); }
                catch (SqlException ex)
                {
                    WriteLine($"Connection couldn't be established:\n{ex.Message}");
                    return;
                }
                var consoleAnnouncer = new ConsoleAnnouncer();
                var dumper = new SqlServerSchemaDumper(new SqlServerProcessor(connection, new SqlServer2000Generator(), consoleAnnouncer, new ProcessorOptions(), new SqlServerDbFactory()), consoleAnnouncer);
                var tables = dumper.ReadDbSchema();
                var writer = new RCDumpWriter();
                writer.WriteToFile(tables, file);
            }
            if (show) WriteLine(File.ReadAllText(file));
            if (open) try { Process.Start(file); } catch { }
            if (verbose) WriteLine("Done.");
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            const string usage = @"Fluent Migrator Schema Dumper
  Usage:
    SchemaDumper.exe --connection CONNECTION [--file FILE] [--verbose] [--show] [--open]
    SchemaDumper.exe --version
    SchemaDumper.exe --help

  Options:
    --connection CONNECTION -c CONNECTION    The connection string. Required.
    --file FILE -f FILE                      File to output. Optional. [default: schemaDump.cs]
    --show -s                                Show output. Optional.
    --open -o                                Open file. Optional.
    --verbose                                Verbose. Optional.
    --help -h                                Show this screen.
    --version -v                             Show version.
";

            var arguments = new Docopt().Apply(usage, args, version: Assembly.GetExecutingAssembly().GetName().Version, exit: true);
            var file      = arguments["--file"].ToString();
            var verbose   = arguments["--verbose"].IsTrue;
            var open      = arguments["--open"].IsTrue;
            var show      = arguments["--show"].IsTrue;

            if (!Path.IsPathRooted(file))
            {
                file = Path.Combine(Environment.CurrentDirectory, file);
            }
            var connectionString = arguments["--connection"].ToString();

            if (verbose)
            {
                WriteLine($"Saving to {file}.");
            }
            try { var builder = new SqlConnectionStringBuilder(connectionString); }
            catch (ArgumentException)
            {
                WriteLine("Connection string is in incorrect format.");
                return;
            }
            using (var connection = new SqlConnection(connectionString))
            {
                try { connection.Open(); }
                catch (SqlException ex)
                {
                    WriteLine($"Connection couldn't be established:\n{ex.Message}");
                    return;
                }
                var consoleAnnouncer = new ConsoleAnnouncer();
                var dumper           = new SqlServerSchemaDumper(new SqlServerProcessor(connection, new SqlServer2000Generator(), consoleAnnouncer, new ProcessorOptions(), new SqlServerDbFactory()), consoleAnnouncer);
                var tables           = dumper.ReadDbSchema();
                var writer           = new RCDumpWriter();
                writer.WriteToFile(tables, file);
            }
            if (show)
            {
                WriteLine(File.ReadAllText(file));
            }
            if (open)
            {
                try { Process.Start(file); } catch { }
            }
            if (verbose)
            {
                WriteLine("Done.");
            }
        }