Beispiel #1
0
        private static void InteractiveRun(string[] args)
        {
            string backupLocation     = null;
            string restoreLocation    = null;
            Action actionToTake       = null;
            bool   launchBrowser      = false;
            var    ravenConfiguration = new RavenConfiguration();

            OptionSet optionSet = null;

            optionSet = new OptionSet
            {
                { "set={==}", "The configuration {0:option} to set to the specified {1:value}", (key, value) =>
                  {
                      ravenConfiguration.Settings[key] = value;
                      ravenConfiguration.Initialize();
                  } },
                { "config=", "The config {0:file} to use", path => ravenConfiguration.LoadFrom(path) },
                { "install", "Installs the RavenDB service", key => actionToTake = () => AdminRequired(InstallAndStart, key) },
                { "service-name=", "The {0:service name} to use when installing or uninstalling the service, default to RavenDB", name => ProjectInstaller.SERVICE_NAME = name },
                { "uninstall", "Uninstalls the RavenDB service", key => actionToTake = () => AdminRequired(EnsureStoppedAndUninstall, key) },
                { "start", "Starts the RavenDB service", key => actionToTake = () => AdminRequired(StartService, key) },
                { "restart", "Restarts the RavenDB service", key => actionToTake = () => AdminRequired(RestartService, key) },
                { "stop", "Stops the RavenDB service", key => actionToTake = () => AdminRequired(StopService, key) },
                { "ram", "Run RavenDB in RAM only", key =>
                  {
                      ravenConfiguration.Settings["Raven/RunInMemory"] = "true";
                      ravenConfiguration.RunInMemory = true;
                      actionToTake = () => RunInDebugMode(AnonymousUserAccessMode.All, ravenConfiguration, launchBrowser);
                  } },
                { "debug", "Runs RavenDB in debug mode", key => actionToTake = () => RunInDebugMode(null, ravenConfiguration, launchBrowser) },
                { "browser|launchbrowser", "After the server starts, launches the browser", key => launchBrowser = true },
                { "help", "Help about the command line interface", key =>
                  {
                      actionToTake = () => PrintUsage(optionSet);
                  } },
                { "config-help", "Help about configuration options", key =>
                  {
                      actionToTake = () => PrintConfig(ravenConfiguration.GetConfigOptionsDocs());
                  } },
                { "restore",
                  "Restores a RavenDB database from backup",
                  key => actionToTake = () =>
                  {
                      if (backupLocation == null || restoreLocation == null)
                      {
                          throw new OptionException("when using restore, source and destination must be specified", "restore");
                      }
                      RunRestoreOperation(backupLocation, restoreLocation);
                  } },
                { "dest=|destination=", "The {0:path} of the new new database", value => restoreLocation = value },
                { "src=|source=", "The {0:path} of the backup", value => backupLocation = value },
                { "encrypt-self-config", "Encrypt the RavenDB configuration file", file =>
                  {
                      actionToTake = () => ProtectConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
                  } },
                { "encrypt-config=", "Encrypt the specified {0:configuration file}", file =>
                  {
                      actionToTake = () => ProtectConfiguration(file);
                  } },
                { "decrypt-self-config", "Decrypt the RavenDB configuration file", file =>
                  {
                      actionToTake = () => UnprotectConfiguration(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
                  } },
                { "decrypt-config=", "Decrypt the specified {0:configuration file}", file =>
                  {
                      actionToTake = () => UnprotectConfiguration(file);
                  } }
            };


            try
            {
                if (args.Length == 0)                 // we default to executing in debug mode
                {
                    args = new[] { "--debug" }
                }
                ;

                optionSet.Parse(args);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                PrintUsage(optionSet);
                return;
            }

            if (actionToTake == null)
            {
                actionToTake = () => RunInDebugMode(null, ravenConfiguration, launchBrowser);
            }

            actionToTake();
        }
Beispiel #2
0
        private static void InteractiveRun(string[] args)
        {
            string backupLocation     = null;
            string restoreLocation    = null;
            Action actionToTake       = null;
            bool   launchBrowser      = false;
            var    ravenConfiguration = new RavenConfiguration();

            OptionSet optionSet = null;

            optionSet = new OptionSet
            {
                { "config=", "The config section to use", path => ravenConfiguration.LoadFrom(path) },
                { "install", "Installs the RavenDB service", key => actionToTake = () => AdminRequired(InstallAndStart, key) },
                { "uninstall", "Uninstalls the RavenDB service", key => actionToTake = () => AdminRequired(EnsureStoppedAndUninstall, key) },
                { "start", "Starts the RavenDB servce", key => actionToTake = () => AdminRequired(StartService, key) },
                { "restart", "Restarts the RavenDB service", key => actionToTake = () => AdminRequired(RestartService, key) },
                { "stop", "Stops the RavenDB service", key => actionToTake = () => AdminRequired(StopService, key) },
                { "ram", "Run RavenDB in RAM only", key =>
                  {
                      ravenConfiguration.Settings["Raven/RunInMemory"] = "true";
                      ravenConfiguration.RunInMemory = true;
                      actionToTake = () => RunInDebugMode(AnonymousUserAccessMode.All, ravenConfiguration, launchBrowser);
                  } },
                { "debug", "Runs RavenDB in debug mode", key => actionToTake = () => RunInDebugMode(null, ravenConfiguration, launchBrowser) },
                { "browser|launchbrowser", "After the server starts, launches the browser", key => launchBrowser = true },
                { "help", "Help about the command line interface", key =>
                  {
                      actionToTake = () => PrintUsage(optionSet);
                  } },
                { "restore",
                  "Restores a RavenDB database from backup",
                  key => actionToTake = () =>
                  {
                      if (backupLocation == null || restoreLocation == null)
                      {
                          throw new OptionException("when using restore, source and destination must be specified", "restore");
                      }
                      RunRestoreOperation(backupLocation, restoreLocation);
                  } },
                { "dest=|destination=", "The {0:path} of the new new database", value => restoreLocation = value },
                { "src=|source=", "The {0:path} of the backup", value => backupLocation = value },
            };


            try
            {
                if (args.Length == 0)                // we default to executing in debug mode
                {
                    args = new[] { "--debug" }
                }
                ;

                optionSet.Parse(args);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                PrintUsage(optionSet);
                return;
            }

            if (actionToTake == null)
            {
                actionToTake = () => PrintUsage(optionSet);
            }

            actionToTake();
        }