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(); }
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(); }